Kafka入门到起飞系列 - 副本机制,什么是副本因子呢?

我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段

比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就50个分区),每个分区放在不同的broker上,那么我们要保证这50台服务器都不能宕机,一旦服务器宕机,分区数据就丢失了,保障服务不宕机这是很难的,所以Kafka给我们提供了副本机制

副本机制

  • 在Kafka中,将主题分成多个分区
  • 分区有两个角色,Leader分区和Follower分区
  • Kafka对外提供读写服务的是Leader分区
  • Follower分区只负责从Leader分区同步消息,与Leader分区保持一致
  • Follower分区一定和Leader分区放在不同的服务器(broker)上,否则就没有意义了,一宕全宕
  • 当Leader分区宕机,会从Follower分区(ISR同步副本)选出一个转换成Leader分区继续对外提供服务

我们举个🌰,如下图;

  • Kafka 集群有三个节点(3个broker)
  • 主题Topic有3个分区Partition_0、Partition_1 、Partition_2,三个分区分别放在不同的broker上
  • 粉色为Leader分区,灰色为Follower分区
  • 每个分区有一个副本,也分别放在不同分区上,并且与其Leader分区放在不同的broker上
  • 上图灰色分区就是粉色分区的副本分区
  • Kafka 通过副本分区实现高可用
  • replication-factor 副本因子 = leader + follower replication-factor=3,则leader+2follower
  • Follower 分区像普通的Kafka消费者一样,消费来自Leader分区的消息,并将其持久化到自己的日志中,
  • Kafka允许Follower对日志数据拉取进行批处理

ISR - 同步副本

  • 节点与zookeeper保持通信,通过zookeeper的心跳机制,与zookeeper要保持一个长连接
  • 允许副本分区与Leader分区有一定消息的偏移
相关推荐
茶海棠3 小时前
Hadoop+zookeeper+HBase+Kafka集群搭建全流程
hadoop·zookeeper·kafka·hbase
后台模板学习6 小时前
Kafka 与 RabbitMQ 在用户认证与权限管理场景
kafka·rabbitmq·linq
真上帝的左手9 小时前
12. 消息队列-Kafka进阶
分布式·中间件·kafka
千里达景区票务系统1 天前
消息队列选型对比:RabbitMQ vs RocketMQ vs Kafka
kafka·消息队列·rabbitmq·rocketmq
Sayai1 天前
Kafka 跨数据中心日志同步实战:MirrorMaker 2 选型对比 + Flink 中继任务落地(双中心互备与消费者组隔离避坑)
大数据·运维·分布式·flink·kafka·消息队列·高可用
jianjinwssy1 天前
从零设计一个 Agent 安全沙箱:Docker 隔离、三级风控与 Kafka 审计
人工智能·docker·kafka
一条泥憨鱼2 天前
【Kafka】零基础学习教程
java·分布式·学习·kafka
9624562 天前
补打一条卡,为什么要从前一天重新算:人工补录与实时重算业务复盘
java·mysql·kafka
RobinXYuan3 天前
【Kafka 源码手记】05 Broker 网络层与请求处理(中):Processor 事件循环与线上的字节
kafka·源码阅读
坐吃山猪3 天前
Kafka13-自定义分区器
kafka