本文共 1117 字,大约阅读时间需要 3 分钟。
架构
一台 kafka 服务器就是一个 broker。一个集群由多个broker组成。一个 broker 可以容纳多个 topic;
broker 其实就是在 Hadoop 集群中的节点的概念.
broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。
broker 为消费者提供服务,对读取分区的请求作出响应,返回给消费者曾经生产者已经提交到磁盘上的消息.
消息生产者,就是向 kafka broker 发消息的客户端;
消息消费者,从 kafka broker 读取消息的客户端;
Kaflca 的悄息通过 Topic 进行分类。 主题就好比数据库的表,或者文件系统里的文件夹。
生产者向 broker 发送消息的时候要指定一个 Topic, 消费者读取消息的时候也得指定一个具体的 Topic.
为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个topic 可以分为多个 partition.
消息以追加的方式写入 partition,后以先先出的顺序读取。
每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的id(offset)。kafka 只保证按一个 partition 中的顺序将消息发给 consumer,不保证一个 topic 的整体(多个partition间)的顺序;
一个 Consumer Group 是多个 consumer 的组合, 作为一个整体存在.
这是 kafka 用来实现一个 topic 消息的广播(发给所有的 consumer )和 单播(发给任意一个 consumer)的手段。
同一个消费者组内的消费者读取消息的时候, 不会读取同一个分区内的消息.
但是组与组之间不受任何影响.
偏移量.
kafka 的存储文件都是按照 offset.kafka 来命名
用 offset 做名字的好处是方便查找。例如你想找位于 2049 的位置,只要找到2048.kafka 的文件即可。
当然the first offset就是00000000000.kafka。
Kafka 使用 Zookeeper 保存集群的元数据信息和消费者信息, 来保证集群的可用性.
Kafka 集群中只能有一个 leader, 其他都是 follower, 这都需要 Zookeeper 来保证.
转载地址:http://ajuwi.baihongyu.com/