kafka为什么那么快
客户端缓冲区(默认32M),写时复制,顺序写文件
kafka架构图

kafka的reblance机制
rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化,kafka会重新分配消费者消费分区的关系。比如consumer group中某个消费者挂了,此时会自动把分配给他的分区交给其他的消费者,如果他又重启了,那么又会把一些分区重新交还给他。
注意:rebalance只针对subscribe这种不指定分区消费的情况,如果通过assign这种消费方式指定了分区,kafka不会进行rebanlance。

如下情况可能会触发消费者rebalance

  1. 消费组里的consumer增加或减少了
  2. 动态给topic增加了分区
  3. 消费组订阅了更多的topic
    rebalance过程中,消费者无法从kafka消费消息,这对kafka的TPS会有影响,如果kafka集群内节点较多,比如数百个,那重平衡可能会耗时极多,所以应尽量避免在系统高峰期的重平衡发生。
    消费者Rebalance分区分配策略:
    主要有三种rebalance的策略:range、round-robin、sticky。
    Kafka 提供了消费者客户端参数partition.assignment.strategy 来设置消费者与订阅主题之间的分区分配策略。默认情况为range分配策略。
    假设一个主题有10个分区(0-9),现在有三个consumer消费:
    range策略就是按照分区序号排序,假设 n=分区数/消费者数量 = 3, m=分区数%消费者数量 = 1,那么前 m 个消费者每个分配 n+1 个分区,后面的(消费者数量-m )个消费者每个分配 n 个分区。
    比如分区0~3给一个consumer,分区4~6给一个consumer,分区7~9给一个consumer。
    round-robin策略就是轮询分配,比如分区0、3、6、9给一个consumer,分区1、4、7给一个consumer,分区2、5、8给一个consumer
    sticky策略初始时分配策略与round-robin类似,但是在rebalance的时候,需要保证如下两个原则。
    1)分区的分配要尽可能均匀 。
    2)分区的分配尽可能与上次分配的保持相同。
    当两者发生冲突时,第一个目标优先于第二个目标 。这样可以最大程度维持原来的分区分配的策略。
    比如对于第一种range情况的分配,如果第三个consumer挂了,那么重新用sticky策略分配的结果如下:
    consumer1除了原有的0~3,会再分配一个7
    consumer2除了原有的4~6,会再分配8和9
    Rebalance过程如下
    当有消费者加入消费组时,消费者、消费组及组协调器之间会经历以下几个阶段。

第一阶段:选择组协调器。consumer消费的offset要提交到__consumer_offsets的哪个分区,这个分区leader对应的broker就是这个consumer group的coordinator
第二阶段:加入消费组JOIN GROUP
第三阶段( SYNC GR·OUP)。consumer leader通过给GroupCoordinator发送SyncGroupRequest,接着GroupCoordinator就把分区方案下发给各个consumer,他们会根据指定分区的leader broker进行网络连接以及消息消费。
kafka消息发送过程
拦截器-》序列化器-》分区器(发送到哪个partition)
kafka高水位HW和LEO
高水位:所有已经同步到副本的offset,表示该offset之前的消息都能被消费
LEO: 日志消息最后的偏移量
HW两个作用:
消费进度管理
数据的可靠性
ISR列表维护
某个Follow的LEO落后了leader 10秒,会被从ISR列表中移除。
kafka配置文件
修改配置文件config/server.properties:

broker.id属性在kafka集群中必须要是唯一

broker.id=0

kafka部署的机器ip和提供服务的端口号

listeners=PLAINTEXT://192.168.65.60:9092

kafka的消息存储文件

log.dir=/usr/local/data/kafka-logs

kafka连接zookeeper的地址

zookeeper.connect=192.168.65.60:2181

标签: none

已有 4 条评论

  1. 看的我热血沸腾啊https://www.jiwenlaw.com/

  2. 看的我热血沸腾啊https://www.ea55.com/

  3. 看的我热血沸腾啊www.jiwenlaw.com

  4. 哈哈哈,写的太好了https://www.cscnn.com/

添加新评论