Kafka Broker HA机制

这里写图片描述

从图中我们可以看出HA的缓存分为生产缓存事件池和拉取缓存事件池两块结构相同的缓存区,分别缓存生产和拉取请求
2个缓存事件池的作用:

生产缓存事件池:当生产者设置了等待从partition的同步选项(requiredAcks为-1)时才会启动生产缓存。因为每一批生产的消息,需要等待所有的处于同步状态的从partition(in-sync)同步成功,在所有follow partition上报自己的水位线追上leader partition之前,生产请求会一直保留在生产缓存中,等待直到超时。
拉取缓存事件池:拉取请求为什么也需要缓存?因为kafka在消费消息时有一个默认选项,一次拉取最低消费1条消息。那么,如果消费者拉取的时候没有任何新消息生产,则拉取请求会保留到拉取缓存中,等待直到超时。这一定程度上避免了反复拉取一批空消息占用带宽资源的问题,不过也把Kafka的ha缓存架构的复杂度提升了一个等级。

### Kafka 高可用性机制解析 Kafka 的高可用性 (High Availability, HA) 是通过多个设计层面来实现的,确保即使在部分节点失效的情况下也能持续提供服务。 #### 副本机制 为了提高数据的安全性和可靠性,Kafka 将消息存储到多个副本中。这些副本分布在不同的 Broker 上。当生产者向主题发送消息时,默认情况下会写入 Leader 副本,而 Follower 副本则异步复制Leader的数据[^4]。 ```python from kafka import KafkaProducer producer = KafkaProducer(bootstrap_servers='localhost:9092') future = producer.send('my-topic', b'raw_bytes') result = future.get(timeout=60) ``` #### 自动故障转移 如果某个 Partition 的 Leader 发生故障无法工作,则 Controller 节点会选择一个新的 Leader 来接管该分区的服务请求。这种自动化的领导者选举过程可以最小化宕机时间并保持系统的连续运行状态[^1]。 #### 同步与异步复制策略 对于同步复制模式下的 ISR(In-Sync Replicas),只有当大多数ISR确认接收到新记录之后才会提交给消费者;而对于异步方式来说,Follower 只需定期拉取最新的日志条目即可。这种方式既保证了一定程度的一致性又兼顾了性能效率[^3]。 #### 数据持久化保障 除了上述措施外,Kafka 还采用了本地磁盘文件系统作为底层存储介质,并支持配置合理的预写日志(Write-Ahead Log),从而进一步增强了其抵御硬件损坏风险的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值