从 Kafka 到 Pulsar:数据流演进之路(下)|青训营笔记

78 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第16天!

前言

Coordinator

  1. 负责topic-partition<->consumer的负载均衡
  2. 根据不同的场景提供不同的分配策略

Kafka高可用

  1. 副本同步机制
  2. 提供lsr副本复制机制,提供热备功能
  3. 写入端提供ack=0,-1,1机制,控制副本同步强弱
  4. 副本切换机制
  5. 提供给clean/unclean副本选举机制

Kafka副本ISR机制

  1. AR
  2. Assign Replica,已经分配的所有副本
  3. OSR
  4. Out Sync Replica
  5. 很久没有同步数据的副本
  6. ISR
  7. 一直都在同步数据的副本
  8. 可以作为热备进行切换的副本
  9. min.insync.replicas最少isr数量配置

Kafka写入Ack机制

Ack=1

Leader副本写入成功,Producer即认为写成功

Ack=0

OneWay模式

Producer发送即为成功

Ack=-1

ISR中所有副本都成功,Producer才认为写成功

Kafka副本同步

LEO

Log End Offset,日志最末尾的数据

HW

ISR中最小的LEO作为HW

HW的消息为Consumer可见的消息

Kafka副本选举

  • Clean选举
  • 优先选取Isr中的副本作为leader
  • 如果Isr中无可用副本,则partition不可用
  • Unclean选举
  • 优先选取Isr中的副本作为leader
  • 如果Isr中无可用副本,则选择其他存活副本

Kafka集群扩缩容

  • Kafka集群扩缩容之后的目标
  • Topic维度
  • partition在各个broker之间分布是均匀的
  • 同一个partition的repica不会分布在一台broker
  • Broker维度
  • Broker之间replica的数量是均匀的

## Kafka集群扩容步骤

  • 扩容Broker节点
  • Leader副本写入成功,Producer即认为写成功
  • 计算均衡的Repllica分布拓扑
  • 保证Topic的partition在broker间分布均匀
  • 保证Broker之间Replica分布均匀
  • Controller负责新的副本分布元数据广播
  • Controller将新的leader/follower信息广播给broker
  • Broker负责新副本的数据同步
  • Broker上有需要同步数据的副本则进行数据同步