kafka全部经验总结(待补充)

1.producer 生产消息 根据 消息的key来确定 发送到对应topic的哪个分区,如果没有key那么则轮询均匀发送到各partition 但是无法保证有序性

2.同一consumer group中的各消费者只能消费同一个topic中某个partition中的数据 而不会出现 同一同一consumer group中的consumerA 与 consumerB 同时消费 topic1 中的 partition1中的数据 这样会造成重复消费

3.消费的最大并行度 为 partition数量 比如 如果刚好出现下面这种情况 topicA的数据存放在了两台kafka broker(机器)刚好他们 每台3个分区,就会 出现 下图这种情况 还是会出现浪费两个consumer资源的情况

4.那么如何不会出现 浪费consumer的情况呢?现在做个题

有个topic 有两台 broker 共 3+4=7个partition 那么 刚好多少个consumer能达到消费最大效率且不会浪费 资源呢?或者说 假设我当前consumergroup中有6个consumer 那么有几个consumer会被浪费呢?

根据以下算法

topic下各broker中总分区数/该consumer group中consumer数

A=7/6=0.75向上取整M=2

N = 该consumer group中consumer数=6 所以等式有6个

C0=[P(2*0),P((0+1)*2-1)]=[P0,P1]

C1=[P(2*1),P((1+1)*2-1)]=[P2,P3]

C2=[P(2*2),P((2+1)*2-1)]=[P4,P5]

C3=[P(2*3),P((3+1)*2-1)]=[P6,P7]

C4=[P(2*4),P((4+1)*2-1)]=[P8,P9]

C5=[P(2*5),P((5+1)*2-1)]=[P10,P11]

由上式可知

7个partition只需要4个 consumer即可 所以 该组中有俩consumer资源是浪费的,所以4个consumer刚好能保证最大效率且不会有consumer资源被浪费

5.一个topic可能数据分布到 多个 broker的多个partition中,然后一个broker中有多个partition,每个partition又可能有一到多个副本 其中一个leader 其它都是follower 副本同步leader中的数据 正常

感觉不到 其它flower leader负责日常的读写数据 当 leader挂了时 从 follower中选取 新的leader

 6.停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper 集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止, Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了

7.生产者往kafka发消息的分区策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值