Kafka架构特性 您所在的位置:网站首页 kafka特点 Kafka架构特性

Kafka架构特性

2023-09-08 14:31| 来源: 网络整理| 查看: 265

Kafka Broker Leader选举机制:Kafka Broker集群受Zookeeper管理,一个Broker就是一个Kafka服务器,Kafka Broker集群又称为Kafka Cluster,选举机制中,所有的Kafka Broker都会在Zookeeper注册一个临时节点,但只有一个Kafka Broker会注册成功,因此Kafka Broker集群中有一个Kafka Broker Controller其他的为Kafka Broker Follower,HA(一旦有Kafka Broker Controller宕机,Zookeeper上此Broker的临时节点就会消失,其他Broker就会争取在Zookeeper上创建临时节点,产生出新的Kafka Broker Controller),一旦有一个非Kafka Broker Controller的Broker宕机,Kafka Broker Controller会读取该宕机Broker上所有的partition在Zookeeper上的状态,并选取ISR列表中的一个replication 作为partition leader

Consumer Group & Consumer:

各个Consumer(Consumer线程)可以组成一个Consumer Group,Partition中的每条message只能被Comsumer Group中的一个Consumer消费,如果一个Partition被多个Consumer消费,那么这些Consumer属于不同的Consumer Group,Kafka不支持一个partition中的message由两个或两个以上的同一个consumer group下的consumer thread来处理,除非再启动一个新的consumer group。当启动一个Consumer Group消费一个Topic时,无论Topic中有多少个Partition,无论Consumer Group中有多少个Consumer,这个Consumer Group下的所有Consumer一定会消费全部的Partition,即便这个Consumer Group中的Consumer只有一个,它也会消费这个Topic中的所有Partition, 如果Consumer Group中的Consumer数量大于Topic中partition的数量,那么Consumer Group中会有Consumer空闲。因此,最优的设计就是,Consumer Group下的Consumer的数量等于Partition数量,这样效率是最高的

总结:

一般情况下,一定是一个Consumer Group处理一个Topic的message。Best Practice是这个Consumer Group里面Consumer的数量等于Topic里面Partition的数量,这样效率是最高的,一个Consumer Thread处理一个Partition。如果这个Consumer Group里面Consumer的数量小于Topic里面Partition的数量,就会有Consumer Thread同时处理多个Partition(这个是Kafka自动的机制,我们不用指定),但是总之这个Topic里面的所有Partition都会被处理到的。如果这个Consumer Group里面Consumer的数量大于Topic里面Partition的数量,多出的Consumer Thread就会闲着啥也不干,剩下的是一个Consumer Thread处理一个Partition,这就造成了资源的浪费,因为一个partition不可能被两个Consumer Thread去处理如果Producer的流量增大,当前的Topic的Parition数量=Consumer数量,这时候的应对方式就是很想扩展:增加Topic下的Partition,同时增加这个Consumer group下的Consumer数量


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有