土巴兔网站开发技术,工作室logo设计免费生成,成都网站建设sntuu,wordpress空白发送消息
流程如下#xff1a;
Producer 端直接将消息发送到 Broker 中的 Leader 分区中Broker 对应的 Leader 分区收到消息会先写入 Page Cache#xff0c;定时刷盘进行持久化#xff08;顺序写入磁盘#xff09;Follower 分区拉取 Leader 分区的消息#xff0c;并保持…发送消息
流程如下
Producer 端直接将消息发送到 Broker 中的 Leader 分区中Broker 对应的 Leader 分区收到消息会先写入 Page Cache定时刷盘进行持久化顺序写入磁盘Follower 分区拉取 Leader 分区的消息并保持与 Leader 分区数据一致待消息拉取完毕后需要给 Leader 分区回复 ACK 确认消息Leader 分区与 Follower 分区同步完数据并收到所有 ISR 中的 Replica 副本的 ACK 后Leader 分区会给 Producer 回复 ACK 确认消息 消费消息
流程如下
Consumer 需要通过订阅关系获取到集群元数据, 找到相关 Topic 对应的 Leader 分区的数据然后通过 Pull 模式主动的去 Kafka 集群中拉取消息拉取到消息后进行业务逻辑处理待处理完成后会进行 ACK 确认即提交 Offset 消费位移进度记录。最后 Offset 会被保存到 Kafka Broker 集群中的 consumer_offsets 这个 Topic 中且每个 Consumer 保存自己的 Offset 进度
注意在这个过程中有个消费者组的概念多个 Consumer 可以组成一个消费者组即 Consumer Group每个消费者组都有一个 GroupId。同一个 Consumer Group 中的 Consumer 可以消费同一个 Topic 下不同分区的数据但是不会出现多个 Consumer 去消费同一个分区的数据。 总结
综上所述可以得出 Kafka 有三次消息传递的过程
Producer 端发送消息给 Broker 端Broker 将消息进行并持久化数据Consumer 端从 Broker 将消息拉取并进行消费