寻找的人不会找到,但不寻找的人也会被找到。
弗朗茨-卡夫卡
这是一个完全不相关的引用,来自一个德国作家,他的名字也叫卡夫卡。

在我们开始使用卡夫卡之前,我们首先要了解为什么我们需要一个消息传递系统。
为什么我们需要一个消息传递系统?

让我们考虑一下上面的图片,系统1和系统2是两个使用数据管道相互通信的服务器,我们只希望现实世界的应用有上面这样的简单设计。
在现实中,大多数现实世界的应用会有
- 多个系统之间的通信,这就需要复杂的数据管道。
- 每条数据管道都有自己的规范和要求
- 添加/删除数据管道会变得很复杂

消息传递系统。
- 它降低了数据管道的复杂性
- 使得系统之间的通信更容易管理

- 它可以提供独立于平台/语言的通信。
- 它提供了一个共同的范式
- 可以建立异步通信
我希望我能够说服你为什么我们需要一个消息传递系统
接下来我们将看到Kafka的基础知识和它的简单实现

什么是Kafka?
Kafka是一个分布式发布-订阅消息系统。在一个发布-订阅系统中,消息被持久化在一个主题中。消息生产者被称为发布者,消息消费者被称为订阅者。消费者可以订阅一个或多个主题并消费该主题中的所有消息。

Kafka的特点。

Kafka的基础知识
Apache.org指出。
- Kafka以集群的形式运行在一个或多个服务器上。
- Kafka集群在称为主题的类别中存储记录流。
- 每条记录由一个键、一个值和一个时间戳组成。
主题和日志
主题是一个饲料名称或类别,记录被发布到这个类别。Kafka中的主题总是多订阅者--也就是说,一个主题可以有零个、一个或多个消费者来订阅写给它的数据。对于每个主题,Kafka集群维护一个分区日志,看起来像这样。

分区
一个话题可以有很多分区,这样它就可以处理任意数量的数据。在上图中,话题被配置成三个分区(partition{0,1,2})。Partition0有13个偏移,Partition1有10个偏移,Partition2有13个偏移。
分区偏移量
每个分区的信息都有一个独特的序列ID,称为偏移量。例如,在Partition1中,偏移量被标记为从0到9。
复制(Replicas
复制只不过是一个分区的备份。如果上述主题的复制因子被设置为4,那么Kafka将为每个分区创建四个相同的副本,并将它们放置在集群中,使它们可用于其所有的操作。复制从未被用于读取或写入数据。它们是用来防止数据丢失的。
经纪人
经纪人是简单的系统,负责维护发布的数据。Kafka经纪人是无状态的,所以他们使用ZooKeeper来维护其集群状态。每个经纪人可以有零个或多个分区,每个主题。例如,如果一个主题有10个分区,10个经纪人,那么每个经纪人将有一个分区。但是,如果有10个分区和15个经纪人,那么开始的10个经纪人将各有一个分区,其余5个经纪人对该特定主题没有任何分区。但是,如果分区是15个,但经纪人是10个,那么经纪人将在他们之间共享一个或多个分区,导致经纪人之间的负载分配不平等。尽量避免这种情况的发生。

丛林守护者(Zookeeper
ZooKeeper用于管理和协调Kafka的经纪人。ZooKeeper主要用于通知生产者和消费者Kafka系统中出现的任何新的经纪人,或者Kafka系统中任何经纪人的失败。ZooKeeper会通知生产者和消费者某个代理的存在或失败,生产者和消费者根据这个通知做出决定并开始与其他代理协调他们的任务。

集群
当Kafka有一个以上的代理时,它被称为Kafka集群。一个Kafka集群可以在不停机的情况下进行扩展。这些集群被用来管理消息数据的持久性和复制。
Kafka有四个核心API。
- 生产者API允许一个应用程序将记录流发布到一个或多个Kafka主题。
- 消费者API允许应用程序订阅一个或多个主题,并处理向其产生的记录流。
- 流API允许一个应用程序充当流处理器,从一个或多个主题消费输入流,并产生输出流到一个或多个输出主题,有效地将输入流转化为输出流。
- 连接器API允许构建和运行可重用的生产者或消费者,将Kafka主题连接到现有的应用程序或数据系统。例如,一个连接到关系型数据库的连接器可能会捕捉到一个表的每一个变化。

Kafka集群的类型。
- 单节点--单代理集群

- 单节点--多经纪人集群

- 多节点--多经纪人集群

到目前为止,我们已经讨论了理论上的概念,让自己熟悉Kafka。现在,我们将使用这些概念来建立我们的单代理集群。
- 下载并安装Kafka
Download:
Install:
- 启动ZooKeeper
QuickStart:
```shell
Create topics:
Ingest Events:
Consumer groups:
这就是所有的人,如果你已经读到这里,那么.....。

Apache Kafka入门手册》最初发表在《Nerd For Tech》杂志上,人们在这里通过强调和回应这个故事来继续对话。