《深入理解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(一主两从)

相关推荐
weixin_453965001 小时前
[单master节点k8s部署]31.ceph分布式存储(二)
分布式·ceph·kubernetes
坎坎坷坷.1 小时前
分布式理论:拜占庭将军问题
分布式
极客先躯7 小时前
高级java每日一道面试题-2024年10月3日-分布式篇-分布式系统中的容错策略都有哪些?
java·分布式·版本控制·共识算法·超时重试·心跳检测·容错策略
niu_sama8 小时前
仿RabbitMQ实现消息队列三种主题的调试及源码
分布式·rabbitmq
鸡c8 小时前
rabbitMq------客户端模块
分布式·rabbitmq·ruby
猿java9 小时前
使用 Kafka面临的挑战
java·后端·kafka
Dylanioucn9 小时前
【分布式微服务云原生】探索Redis:数据结构的艺术与科学
数据结构·redis·分布式·缓存·中间件
路上^_^9 小时前
00_概览_kafka
分布式·kafka
极客先躯16 小时前
Hadoop krb5.conf 配置详解
大数据·hadoop·分布式·kerberos·krb5.conf·认证系统
CopyLower17 小时前
Kafka 消费者状态及高水位(High Watermark)详解
分布式·kafka