Kafka -基本概念

认识Kafka

kafka是一个多分区、多副本、基于zookeeper协调的分布式消息系统。

扮演角色

  • 消息系统
  • 存储系统:把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效降低了数据丢失的风险。
  • 流式处理平台

基本概念

kafka的体系结构:

Producer : 负责创建消息,然后将其投递到Kafka中
Consumer : 连接Kafka上并接收消息,进行相应的业务逻辑处理。
Broker : 服务代理节点,负责将收到的消息存储到磁盘中。一个Broker可以看做一个独立的Kafka服务节点。一个或者多个Broker组成了一个Kafka集群。
ZooKeeper: 用来负责Kafka集群元数据管理、控制器管理等操作。
主题: Kafka中的消息以主题作为单位进行归类,生产者将消息发送到特定的主题,消费者负责订阅主题进行消费。

特点

多分区

主题是一个逻辑上 的概念,可以细分为多个分区,一个分区只属于单个主题

同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看成一个可追加写的日志文件

消息在被追加到日志文件都会带上一个offset标记,因此同一分区上的消息是有序的,但不同分区的消息不能保证顺序
分区可以分布在不同的Broker上,因此一个主题可以横跨多个Broker,以此来提供比单个broker更强大的能力。(如果是单个Broker,容易受到所在机器I/O的性能限制)

多副本

概念

Kafka为分区引入了多副本机制,同一分区的不同副本中保存的相同的消息 。(某一时刻可能消息不完全一致)

副本之间是"一主多从"的关系,其中leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步。

好处:多副本机制实现了故障的自动转移,当Kafka集群中某个broker失效时候,仍保证服务可用。

副本集合分类

AR(Assigned Replicas): 所有的副本

ISR(In-Sync Replicas): 与leader副本保持一定程度同步的副本,包括leader在内

OSR(Out-of-Sync Replicas): 与leader副本同步之后过多的副本

AR = ISR + OSR

上面说的一定程度是指可忍受的范围内,该范围参数可以人工调节

leader副本负责维护和跟踪ISR集合中所有follower副本的滞后顺序,当follower副本落后太多或者失效时候,leader副本将其从ISR集合中剔除。

如果OSR集合中有follower副本追上了leader副本,则leader副本会把它从OSR集合中转移到ISR集合中。

Kafka分区副本的复制机制

HW:high watermark 高水位,标识了一个特定的offset,消费者只能消费HW之前的消息。

LEO:Log end offfset,标识当前日志文件中下一条待写入消息的offset

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

复制图例:

  1. 消息3、4从生产者发出后,会先写入到leader副本
  2. follower副本开始同步leader副本
  3. follower同步较快,HW等于follower1与follower2的最小值,此时消费者只能消费到offset为4之前的消息
  4. 所有节点都复制好了,HW重新更新

这种复制方式的好处:

  • Kafka副本的复制机制,既不是完全的同步复制,又不是单纯的异步复制
  • 若为同步复制,需要等所有的follower都复制完,才认为这条消息是已成功提交的,这种方式会极大影响性能。
  • 若为异步复制,数据只要被leader副本写入就认为成功提交(没等follwer副本复制完全),这时候如果leader副本宕机,则会造成数据丢失。
  • Kafka这种复制方式均衡了数据可靠性和性能之间的关系。
相关推荐
敏叔V5877 小时前
联邦学习与大模型:隐私保护下的分布式模型训练与微调方案
分布式
短剑重铸之日8 小时前
《7天学会Redis》特别篇: Redis分布式锁
java·redis·分布式·后端·缓存·redission·看门狗机制
重生之绝世牛码11 小时前
Linux软件安装 —— kafka集群安装(SASL密码验证)
大数据·linux·运维·服务器·分布式·kafka·软件安装
填满你的记忆11 小时前
【从零开始——Redis 进化日志|Day5】分布式锁演进史:从 SETNX 到 Redisson 的完美蜕变
java·数据库·redis·分布式·缓存
無森~12 小时前
ZooKeeper
分布式·zookeeper·云原生
小北方城市网12 小时前
SpringBoot 集成 MinIO 实战(对象存储):实现高效文件管理
java·spring boot·redis·分布式·后端·python·缓存
Blossom.11812 小时前
大模型分布式训练通信优化:从Ring All-Reduce到分层压缩的实战演进
人工智能·分布式·python·深度学习·神经网络·机器学习·迁移学习
谷新龙00112 小时前
kafka工作原理
kafka
码农水水12 小时前
得物Java面试被问:大规模数据的分布式排序和聚合
java·开发语言·spring boot·分布式·面试·php·wpf
爱吃提升13 小时前
分布式爬虫的核心原理详细介绍
分布式·爬虫