Kafka 架构及角色说明

架构

角色说明

Broker

一台 kafka 服务器就是一个 broker。一个集群由多个broker组成。一个 broker 可以容纳多个 topic;

broker 其实就是在 Hadoop 集群中的节点的概念.

broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。

broker 为消费者提供服务,对读取分区的请求作出响应,返回给消费者曾经生产者已经提交到磁盘上的消息.

Producer

消息生产者,就是向 kafka broker 发消息的客户端;

Consumer

消息消费者,从 kafka broker 读取消息的客户端;

Topic

Kaflca 的悄息通过 Topic 进行分类。 主题就好比数据库的表,或者文件系统里的文件夹。

生产者向 broker 发送消息的时候要指定一个 Topic, 消费者读取消息的时候也得指定一个具体的 Topic.

Partition

为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个topic 可以分为多个 partition.

消息以追加的方式写入 partition,后以先先出的顺序读取。

每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的id(offset)。kafka 只保证按一个 partition 中的顺序将消息发给 consumer,不保证一个 topic 的整体(多个partition间)的顺序;

Consumer Group(同一个消费者组中的消费者,一个分区只能被一个消费者消费)

一个 Consumer Group 是多个 consumer 的组合, 作为一个整体存在.

这是 kafka 用来实现一个 topic 消息的广播(发给所有的 consumer )和 单播(发给任意一个 consumer)的手段。

同一个消费者组内的消费者读取消息的时候, 不会读取同一个分区内的消息.

但是组与组之间不受任何影响.

Offset

偏移量.

kafka 的存储文件都是按照 offset.kafka 来命名

用 offset 做名字的好处是方便查找。例如你想找位于 2049 的位置,只要找到2048.kafka 的文件即可。

当然the first offset就是00000000000.kafka。

关于 zookeeper

Kafka 使用 Zookeeper 保存集群的元数据信息和消费者信息, 来保证集群的可用性.

Kafka 集群中只能有一个 leader, 其他都是 follower, 这都需要 Zookeeper 来保证.

猜你喜欢

转载自blog.csdn.net/qq_43193797/article/details/86594026
今日推荐