Kafka Broker 开小差了~
Kafka Broker 宕机会带来哪些影响?
现如今,Kafka 作为一个高性能、高可靠性、分布式的消息队列系统,广泛地被应用于大规模互联网服务中,如 Tencent、Facebook、LinkedIn、Netflix、Airbnb 等知名公司。然而,在大规模的分布式系统中,服务的不可预测性、复杂性和耦合性经常会导致一些不可预测的故障事件。当 Kafka Broker 节点宕机时,可能会出现以下故障:
数据丢失: 如果正在写入宕机的 broker 的消息,则可能会导致数据丢失。在此期间,生产者可能无法将消息写入分区并将其复制到其他副本,因此可能会导致消息丢失。
可用性降低: 宕机的 broker 不再处理请求,这可能会导致生产者和消费者的请求超时。如果有多个 broker 节点宕机,集群的可用性会进一步降低。
延迟增加: 宕机的 broker 不再处理请求,这可能会导致生产者和消费者请求的延迟增加。当请求超时并重新发送时,它们可能需要等待其他节点回复,从而导致更长的延迟。
不均衡的领导者选举: 如果宕机的 broker 是分区的领导者,则需要进行领导者选举。如果宕机的 broker 重新启动,并且在它退出之前的备份没有被删除,则可能会导致不均衡的领导者选举。
副本同步延迟: 如果宕机的 broker 是一个或多个副本的复制者,则可能会导致副本同步延迟。如果这种延迟很大,可能会导致生产者和消费者读取或写入过时的数据。
腾讯云消息队列 CKafka(Cloud Kafka)
腾讯云消息队列 CKafka(Cloud Kafka)是基于开源 Apache Kafka 消息队列引擎,提供高吞吐性能、高可扩展性的消息队列服务。消息队列 CKafka 完美兼容 Apache Kafka 0.9、0.10、1.1、2.4、2.8、3.2 版本接口,在性能、扩展性、业务安全保障、运维等方面具有超强优势,让您在享受低成本、超强功能的同时,免除繁琐运维工作。腾讯云 CKafka 具有高可靠性、高可用性、高性能等特性,保证用户的数据安全。
故障原理
故障效果:CKafka 实例的某个或某个可用区 Broker 宕机离线。实例会出现未同步副本。
CKafka Broker 宕机逻辑:Broker 宕机之后(并不会自动拉起新的 broker 节点),会在集群中的其他 broker 节点中选出新的 topic-partition leader 副本,挂掉一台 broker,那么这台机器上的副本就不可用, 会导致 topic 少了一个副本, 并不会 “恢复到用户预期的副本数量”。对 CKafka 而言,只要有一个副本可用,就可以正常生产消费。故障恢复之后,原 Broker 上的副本会从其他 Broker 节点复制进而恢复。
CKafka Broker 节点宕机用户侧风险:故障之后,leader 副本切换通常是秒级的,在此期间,用户也许会收到重试警告,由于切换非常迅速,通常不会发生消息丢失(极小概率:消息写到 page cache,由异步线程刷盘,若在 page cache 数据没有刷盘的同时, follower 并未同步到 leader 副本的消息的情况下,会出现部分消息丢失)
故障示例图:一个 CKafka 实例(4 个 Broker 节点部署在两个可用区),将 Broker A 宕机之后,离线,CKafka 实例会将位于 Broker C 上的 Partition 0 的副本选为新的 Leader 副本,对外提供消息服务。
评论