Topic 话题
Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)
某个topic的消息,会通过一个或多个分区存放,每个分区存在于一个或多个brokers中,每次新的消息都是顺序写入到每个分区log,log是通过文件方式进行存储,位置在 Config/server.properties 的 log.dirs 中定义
Kafka集群会一直保存所有的消息,除非它们过期被删除
Partition 分区
在建立某个topic时,会指定一个或多个分区,用来存放整个topic的消息,消息会均衡(数量不会相同)分发到不同的分区,不同分区的消息是不一致的
Offset 偏移量
消息在每个分区的位置,如上图所示
Producer 生产者
发布消息的对象称之为生产者
Consumer 消费者
订阅消息并处理发布的消息的对象为消费者
Group/Group ID 消费者组/消费者组ID
每个消费者C在消费信息时,需要确定自己属于哪个消费者组,定义一个groupID
在同一个消费者组里,如果某个topic有多个分区,那么不同的分区会分配给不同的消费者进行消费
不同消费者组,读取某个topic的分区的offset是不一样的
Broker 集群的服务器
已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)
副本
每个分区又可以有多个副本。这多个副本中,只有一个是leader,而其他的都是follower副本,仅有leader副本可以对外提供服务,其他副本用于高可用,详见下面 Leader/Follower 。
Leader/Follower
某个topic的分区会被分布到集群中的多个服务器上,每个服务器处理它分到的分区。根据配置,每个分区还可以复制到其它服务器作为备份容错。
因此,每个分区有一个leader,零或多个follower。Leader处理此分区的所有的读写请求,而follower被动的复制数据。
如果leader宕机,其它的一个follower会被推举为新的leader。 一台服务器可能同时是一个分区的leader,另一个分区的follower。
部分内容摘自:kafka入门介绍 - OrcHome