《深入理解kafka-核心设计与实践原理》第一章:概念

第一章:概念

[1.1 基本概念](#1.1 基本概念)

[1.1.1 基本角色与概念](#1.1.1 基本角色与概念)

[1.1.2 其他概念(AR、ISR、OSR、HW、LEO)](#1.1.2 其他概念(AR、ISR、OSR、HW、LEO))

[1.2 概念图](#1.2 概念图)

第一章:概念

  • 背景
    • Kafka起初是由LinkedIn公司采用Scala开发的,现已被捐给Apache
    • 尽管Kafka的核心是用Scala编写的,但它提供了兼容Java的API(因为Scala能在JVM上运行,并且与Java有很好的互操作性)
  • Kafka扮演的三大角色:
    • 消息系统(消息中间件):系统间解稿、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性
    • 存储系统(持久化功能):基于消息持久化功能和多副本机制,Kafka可作为长期的数据存储系统
    • 流式处理平台:

1.1 基本概念

1.1.1 基本角色与概念

  • Producer:生产者
  • Consumer:消费者
  • Broker:可以看作一个独立的【Kafka 服务节点】或【Kafka服务实例】。一个或多个broker组成一个Kafka集群
  • Zookeeper集群:早期Kafka依赖Zk进行集群管理、选举等操作。2.8.0中引入KRaft模式,允许用户尝试不依赖于Zookeeper的Kafka集群
  • Partition:分区。一个主题topic包含多个分区partition,一个分区只属于单个主题。同个分区内,通过offset能保证同分区有序,但跨分区不保证有序
  • Topic:主题。生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费
  • Replica:partition的副本(包含leader和follower两类)。通过增加副本数量可以提升容灾能力,一主多从,其中 leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步
    • leader:leader挂了后,ISR中的follower有资格被选举成leader
    • follower:从leader拉取消息进行同步

总结:kafka通过partition的水平扩展支持高性能,通过replica提升容灾能力

1.1.2 其他概念(AR、ISR、OSR、HW、LEO)

AR,ISR,OSR(恒等式:AR = ISR + OSR)

  • AR(Assigned Replicas):分区中的所有副本
  • ISR(On-Sync Replicas):所有与leader副本保持一定程度同步的副本(包括 leader 副本在内)。这个一定程度是个范围,通过参数可以配置
  • OSR ( Out-of-Sync Replicas):与leader副本同步未到一定程度的副本(不包括leader副本)

总结

  • 正常情况下,所有的follower都应该与leader保持一定程度的同步:OSR=0,AR=ISR
  • leader 副本负责维护和跟踪 ISR 集合中所有 follower 副本的滞后状态,当 follower 副本落后太多或失效时,leader副本会把它从ISR集合中剔除。 如果 OSR 集合中有follower副本追上了 leader副本,那么leader副本会把它从 OSR 集合转移至 ISR 集合
  • 默认情况下, 当 leader 副本发生故障时,只有在 ISR 集合中的副本才有资格被选举为新的 leader, 而在 OSR 集合中的副本则没有任何机会

HW,LEO

理解:分区 ISR集合中的每个副本都会维护自身的 LEO,而ISR集合中最小的 LEO 即为分区的 HW ,对消费者而言只能消费 HW 之前的消息

  • HW(High Watermark):高水位。它标识 了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息。下图中HW=6,消费者只能消费offset=0,5的消息
  • LEO(Log End Offset):标识当前日志文件中下一条待写入消息 的 offset,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。上图中LEO=9

1.2 概念图

4个broker,3个partition,replica=3(一主两从)

相关推荐
donk13146 小时前
React Native for OpenHarmony 实战:三方库 react-native-step-indicator 的鸿蒙化适配指南
分布式·react native·react.js·wpf·harmonyos
梅菲塔亚9 小时前
Ceph分布式存储
分布式·ceph
acrel710 小时前
Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用
分布式·光伏并网
程序 代码狂人11 小时前
金融数仓体系与核心业务知识详解
大数据·分布式·spark
RobinXYuan11 小时前
【Kafka 源码手记】02 Kafka 的核心哲学:Everything Is A Log
kafka·源码阅读
java_nnnn13 小时前
Redis 初识:从单体架构到分布式架构的演进
redis·分布式·架构
Sayai13 小时前
Kafka 2.8→3.9.1 跨大版本升级实战:ZooKeeper 同步升级、数据目录迁移与回滚预案全流程
大数据·运维·分布式·zookeeper·kafka
敲上瘾14 小时前
分布式系统——Redis哨兵:自动故障转移与选举原理
linux·数据库·redis·分布式·缓存·微服务
微三云 - 廖会灵 (私域系统开发)1 天前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php