一、一些概念
主题类似与数据库表或文件夹的概念,主题可分为多个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,读取数据按照先入先出方式顺序读取(只能保证单个分区消息顺序读取)。
1.通过分区实现数据的冗余和伸缩性。
2.分区可分布在不同服务器上,一个主题可横跨多个服务器。
生产者:创建消息,发布到特定的主题上。默认情况是均衡的发布到当前主题的所有分区。可通过消息键和分区器指定写入某个分区。
消费者:读取消息,按照消息生成的顺序读取,通过检查消息的偏移量区分已读消息。偏移量:一个不断递增的整数值,单个分区内是唯一的,读取消息后会把每个分区最后读取的偏移量存储到zookeeper或kafka,关闭或重启后读取状态不会丢失。每个分区只能有一个消费者。
消费者组:多个消费者组成消费者组,增加消费速度,一个消费者组订阅同一个topic,每个消费者接受这个topic的一部分分区消息。
broker:一个独立的kafka服务器成为broker。broker接受消息,为消息设置偏移量同时提交消息到磁盘,他为消费者提供服务,响应读取分区请求,返回已提交到磁盘的消息,消息保留策略