Kafka的读写流程
Kafka的读写流程
写流程
先上图
步骤:
- 连接ZK集群,从ZK中拿到对应topic的partition信息和partition的Leader的相关信息
- 连接到对应Leader对应的broker
- 将消息发送到partition的Leader上
- 其他Follower从Leader上复制数据
- 依次返回ACK
- 直到所有ISR中的数据写完成,才完成提交,整个写过程结束
因为是描述写流程,没有将replica与zk的心跳通讯表达出来,心跳通讯就是为了保证kafka高可用。一旦Leader挂了,或者Follower同步超时或者同步过慢,都会通过心跳将信息报告给ZK,由ZK做Leader选举或者将Follower从ISR中移动到OSR中
读流程
步骤:
- 连接ZK集群,从ZK中拿到对应topic的partition信息和partition的Leader的相关信息
- 连接到对应Leader对应的broker
- consumer将自己保存的offset发送给Leader
- Leader根据offset等信息定位到segment(索引文件和日志文件)
- 根据索引文件中的内容,定位到日志文件中该偏移量对应的开始位置读取相应长度的数据并返回给consumer
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!