Kafka(一)基础介绍

一,Kafka集群


一个典型的 Kafka 体系架构包括若Producer、Broker、Consumer,以及一个ZooKeeper集群,如图所示。

  • ZooKeeper:Kafka负责集群元数据的管理、控制器的选举等操作的;
  • Producer:将消息发送到Broker;
  • Broker:服务代理节点,负责将收到的消息存储到磁盘中。Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例,一个或多个Broker组成了一个Kafka集群。
  • Consumer:负责从Broker订阅并消费消息;

二, 主题(Topic)与分区(Partition)


  • 消息根据Topic归类,生产者将消息发送到特定的Topic,而消费者订阅Topic并进行消费。
  • 一个Topic可以有多个Partition,Partition是一个可追加的日志文件,消息在被追加到分区日志都会分配一个特定的偏移量(offset)。
  • Kafka通过offset来保证消息在分区内的顺序性,不过offset并不跨越分区,也就是说, Kafka保证的是分区有序而不是Topic有序。
  • 分区可以分布在不同的broker上,也就是说, 一个Topic可以横跨多个broker。
  • Consumer使用Pull模式从服务端拉取消息,并且 保存消费的offset,当消费者宕机后恢复时可以根据offset重新拉取,这样就不会造成消息丢失。

1,Replica机制
分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力。
副本一主多从,其中leader副本负责处理 读写请求( 生产者和消费者只与leader交互 ),follower副本只负责与leader副本的消息同步。
2, AR = ISR + OSR
AR:分区中的所有的副本
ISR:与leader保持一定程度(可配置)同步的副本(包括leader在内)
OSR:与leader同步滞后过多的副本
正常情况下,所有的 follower 副本都应该与 leader 副本保持一定程度的同步,即 AR=ISR,OSR集合为空。

  • leader负责维护和跟踪所有follower的滞后状态,并把follower在ISR和OSR中移动;
  • 默认下,当leader发生故障时,只有在ISR中的副本才有资格被选举为新的leader(可通过配置改变)

3,HW和LEO
这是两个特定的偏移量。
HW:High Watermark的缩写,俗称高水位。消费者只能拉取到这个HW之前的消息;
LEO:Log End Offset的缩写,标识下一条待写入消息的offset;

注意:这俩都有个+1的关系;
ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息。
举例说明:

4,Kafka的复制机制
Kafka 的复制机制既不是完全的同步复制(所有能工作的 follower都复制完),也不是单纯的异步复制(只要写入leaderr则成功提交)。Kafka使用的这种ISR机制有效地权衡了数据可靠性和性能的关系。

相关推荐
初见月10 小时前
ISR机制保障数据一致性
kafka
老陈说编程15 小时前
1. 鸿蒙 (HarmonyOS) 2012 至 2026 年的发展历程
分布式·华为·个人开发·harmonyos·鸿蒙·鸿蒙系统·程序员创富
ly76893 天前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
筑梦之路3 天前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
灯澜忆梦3 天前
【minio】#5 | MinIO 分布式部署 + HTTPS 部署
分布式·网络协议·https·对象存储·minio
谢亮_vipxieliang3 天前
Spring Cloud 服务治理入门:注册发现、配置中心、网关限流、熔断降级与分布式一致性方案
分布式·spring·spring cloud
樱花落木兰3 天前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
ShineWinsu3 天前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
Flynt4 天前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式