Kafka | 青训营

32 阅读1分钟

Kafka基本概念

Topic:逻辑队列,不同Topic可以建立不同的partition
Cluster:物理集群,每个集群中可以建立多个不同的Topic
Producer:生产者,负责将业务消息发送到Topic中
Consumer:消费者,负责消费 Topic中的消息
ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉
Broker:物理机or其他 BrokerController:Broker主节点,协调Partition Leader的分布 Partition:消费信息存放最小单元,队列 PartitionLeader/Follower:主从同步,故障转移 ConsumerLeader:Coordinater指定,并可设置自定义消费策略 BrokerCoordinater:consumerGroup所有成员共识决定

服务架构

  1. 一般为Zookeeper作为服务发现和存储元数据
  2. 总体上有三层主从关系:分别是Broker层Controller,Partition层Leader和Consumer层Leader。
  3. BrokerController和PartitionLeader共同决定了Kafka的分布式结构,即每个Broker上的partitionLeader达到平均的效果。实现当一个Broker宕机,损失最少量的Leader,在可用性和故障转移成本上都达到最优。

故障转移

ISR机制

在PartitionLeader和Follwer之间,会根据主从同步进度,决定ISR集合;同步进度落后较多的被排除在ISR之外,达到的效果:故障转移风险低。

故障转移维度

Kafka的故障转移维度是在Partition维度的。

存储

文件结构

/Topic/Partitions/Segment/(四小件) 其中Segment的角色相当于是索引的节点,Segment中的第一个文件作为起始index,作为二分搜索的依据。Segment还是过期文件回收的最小单元。 另外index和position(字节偏移位置)对应。

顺序写

顺序写的目的是更充分的利用PageCache提高性能。