Kafka如何保证高可用

Kafka如何保证高可用

Kafka

kafka是一个多分区、多副本且基于zookeeper协调的分布式消息系统。也是一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

副本机制

在集群中,每个分区都可以有多个副本,这些副本中包含了一个Leader和多个Follower,只有Leader才能处理生产者和消费者的请求,而Follower只是Leader的备份,用于提供数据的冗余备份和容错能力。如果Leader发生故障,Kafka集群会自动将Follower提升为新的Leader。

ISR(In-Sync Replicas)机制

  • 在Kafka中,每个主题分区可以有多个副本,ISR是与主副本保持同步的副本集合,只有ISR内的副本才有资格参与Leader的选举。
  • 当消息被写入到Kafka的分区时,它首先会被写入Leader,然后将消息复制给ISR中的所有副本。只有当ISR中的所有副本都成功接收并确认消息之后,主副本才会认为消息已成功提交。
  • Follower需在replica.lag.time.max.ms时间内与Leader保持同步,否则会被移出ISR

Leader选举与故障恢复

  • 当Leader宕机时,Controller会从ISR中选举新Leader,选举通过Zookeeper协调完成
  • 原Leader恢复后作为Follower重新同步数据并加入ISR
相关推荐
太阳伞下的阿呆12 小时前
kafka高吞吐持久化方案(2)
分布式·kafka·高并发·重入锁
Chasing__Dreams19 小时前
kafka--基础知识点--19--消息重复
分布式·kafka
import_random2 天前
[kafka]伪集群搭建,各个节点配置文件中listeners参数的配置
kafka
Mr.朱鹏2 天前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
山沐与山3 天前
【MQ】Kafka与RocketMQ深度对比
分布式·kafka·rocketmq
yumgpkpm3 天前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
树下水月3 天前
Easyoole 使用rdkafka 进行kafka的创建topic创建 删除 以及数据发布 订阅
分布式·kafka
Cat God 0073 天前
基于Docker搭建kafka集群
docker·容器·kafka
Cat God 0073 天前
基于 Docker 部署 Kafka(KRaft + SASL/PLAIN 认证)
docker·容器·kafka