当前位置:   article > 正文

kafka全部经验总结(待补充)_kafka实验一的总结

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发消息的分区策略

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/557372
推荐阅读
相关标签
  

闽ICP备14008679号