kafka 架构
kafka架构主要包含zookeeper、broker、producer、consumer,其中:
zookeeper:以集群形式部署,一般为3或者5个节点,主要负责存储集群的元数据信息;
broker:3-5个kafka节点组成broker集群,负责存储消息,消息以日志分段logsegment的形式存储,默认大小为1G,每个日志分段中还会创建偏移量索引文件和时间戳索引文件,方便日志的查找;
同时,broker集群中会选举产生broker控制器,broker控制器负责管理集群的元数据,当topic、分区等信息变更时,通知其他broker更新元数据;
选举产生group coordinator,与consumer coordinator共同为消费组内的消费者分配分区,以及主题分区变化,消费者退出、故障等引起的分区的重分配;
选举产生transaction coordinator,负责事务消息的处理
producer:发送消息到broker进行存储,支持消息的幂等发送,以及发送事务消息;
consumer:从consumer中拉取消息进行消费
group coordinator与consumer coordinator:每个consumer属于一个consumer group,在broker集群中选举一个节点作为consumer group的group coordinator(具体选举方法见kafka概述部分),consumer group中又会选举产生consumer coordinator ,group coordinator和consumer coordinator负责消费组内的分区分配,以及元数据变更后分区的重分配