ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、概述 Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用; Kafka 是一种分布式的,基于发布 / 订阅的消息系统; ## 二、基础概念 ### **Producer** 消息生产者,是消息的产生源头,负责生成消息并发送给Kafka; ### **Consumer** 消息消费者,是消息的使用方,负责消费Kafka服务器上的消息; ![](https://img.kancloud.cn/5d/eb/5deb7a4e6e42f7c6732719d5a6a03f0c_1240x579.png) ### **Topic** 主题,由用户自定义,并配置在Kafka服务器,用于建立生产者和消费者之间的订阅关系,生产者将消息发送到指定的Topic,然后消费者再从该Topic下去取消息。 ### **Partition** 消息分区,一个Topic下面会有多个Partition,每个Partition都是一个有序队列,Partition中的每条消息都会被分配一个有序的id; ![](https://img.kancloud.cn/e2/df/e2dfb2bbef3466d3e0ec566e70ddf0c8_720x336.png) ### **Group** 消费者分组,将同一类的消费者归类到一个组里。在Kafka中,多个消费者共同消费一个Topic下的消息,每个消费者消费其中的部分消息,这些消费者就组成了一个分组,拥有同一个组名。 ### **Broker** 这个其实就是Kafka服务器了,无论是单台Kafka还是集群,被统一叫做Broker,有的资料上把它翻译为代理或经纪人; ![](https://img.kancloud.cn/d4/21/d421a7079cbd3e919d2515d0378343b0_720x444.png) ## 三、工作流程 1)生产者定期向主题发送消息; 2)Kafka broker将所有消息存储在为该特定主题配置的分区中。它确保消息在分区之间平等共享。如果生产者发送两个消息,并且有两个分区,则Kafka将在第一个分区中存储一个消息,在第二个分区中存储第二个消息; 3)消费者订阅一个特定的主题; 4)一旦消费者订阅了一个主题,Kafka将向消费者提供该主题的当前偏移量,并将偏移量保存在ZooKeeper中; 5)消费者将定期请求Kafka新消息; 6)一旦Kafka收到来自生产者的消息,它会将这些消息转发给消费者; 7)消费者将收到消息并处理它; 8)一旦消息被处理,消费者将向Kafka broker发送确认; 9)一旦Kafka收到确认,它会将偏移量更改为新值,并在ZooKeeper中进行更新。由于ZooKeeper中保留了偏移量,因此即使在服务器出现故障时,消费者也可以正确读取下一条消息;