kafka partition分配_走近kafka-Partition分配与消息可靠性

本文介绍了Kafka的Partition分配策略,旨在实现负载均衡。详细阐述了Producer如何发送消息到Partition Leader,以及Follower如何复制数据。讨论了消息投递的可靠性,包括ack参数的三种情况。同时,分析了消息消费的可靠性,如at most once、at least once和exactly once策略。最后预告了后续将探讨的Broker状态判断和leader选举。
摘要由CSDN通过智能技术生成

Kafka的高可用源于其多个副本(replication)。

拥有多个副本,那么带来的问题就是数据怎么同步。我们都知道数据是存放在partition物理目录下的文件里面。通过前面几节的介绍,我们也知道消息过来后直接跟partition leader交互,然后由leader进行数据同步。由于partition 的replication机制,在kafka看来partition不分leader 和 follower之分的,都是replica。

同一个partition可能会有多个replica,此时需要在这些replica之间选出一个leader,producer和Consumer只与leader交互,其它replica作为follower从leader中复制数据。

752ca4f6aa462084a59d4cd568a9c2ea.png

图片来源自网络

一个topic下可能会有多个partition,同一个partition又可能有多个replica,那它们是怎么分配的,不可能无秩序的。

为了更好的做负载均衡,Kafka尽量将所有的Partition均匀分配到整个集群上。Kafka分配Replica的算法如下:

· 将所有存活的N个Brokers和待分配的Partition排序

· 将第i个Partition分配到第(i mod n)个Broker上,这个Partition的第一个Replica存在于这个分配的Broker上,并且会作为partition的优先副本

· 将第i个Partition的第j个Replica分配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值