MST

星途 面试题库

面试题:消息队列Kafka的ISR机制在保障容错性方面是如何工作的,有哪些关键参数需要关注?

Kafka通过ISR(In - Sync Replicas)机制来保障集群的容错性。请详细说明ISR机制的工作原理,包括副本同步的过程、ISR集合的维护等。同时,列举并解释在实际生产环境中,与ISR机制相关的需要重点关注的关键参数及其对容错性的影响。
44.4万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

ISR机制工作原理

  1. 副本同步过程
    • 在Kafka中,每个分区都有一个领导者副本(Leader Replica)和多个追随者副本(Follower Replica)。生产者发送消息到Kafka集群时,消息首先被发送到分区的领导者副本。
    • 追随者副本通过向领导者副本发送Fetch请求来获取新的消息,从而进行同步。领导者副本会为每个追随者副本维护一个HW(High Watermark),表示该追随者副本已经成功同步到的消息偏移量。追随者副本在同步时,会将自己的LSO(Log Start Offset)和领导者副本的HW进行比较,然后获取从LSO到HW之间的消息。
    • 当追随者副本成功拉取到消息并写入本地日志后,它会更新自己的HW。
  2. ISR集合维护
    • ISR(In - Sync Replicas)是与领导者副本保持同步的追随者副本集合。Kafka动态地维护这个集合。
    • 领导者副本会定期检测追随者副本的同步状态。如果一个追随者副本与领导者副本的消息滞后量(通常用消息偏移量差值衡量)在一定范围内,并且该追随者副本在一定时间内有向领导者副本发送Fetch请求(表明它是活跃的),那么这个追随者副本就会被包含在ISR集合中。
    • 如果一个追随者副本长时间没有向领导者副本发送Fetch请求,或者其消息滞后量超过了一定阈值,领导者副本会将该追随者副本从ISR集合中移除。当这个追随者副本重新恢复同步,满足ISR的条件时,又会被重新添加到ISR集合中。

与ISR机制相关的关键参数及其对容错性的影响

  1. replica.lag.time.max.ms
    • 含义:这个参数定义了追随者副本与领导者副本之间允许的最大滞后时间。如果一个追随者副本在超过这个时间内没有向领导者副本发送Fetch请求,它将被认为是“滞后”的,并可能从ISR集合中移除。
    • 对容错性影响:设置过小,可能会导致一些暂时网络波动的追随者副本频繁被移出ISR集合,降低了集群的容错能力,因为ISR集合中的副本数量减少意味着可用于容错的副本减少。设置过大,可能会使得一些实际上已经故障的副本长时间留在ISR集合中,当领导者副本发生故障时,可能会选举出一个数据不完整的副本成为新的领导者,影响数据的一致性和容错性。
  2. replica.lag.max.messages
    • 含义:此参数表示追随者副本与领导者副本之间允许的最大消息滞后数量。如果一个追随者副本落后领导者副本的消息数量超过这个值,它会被从ISR集合中移除。
    • 对容错性影响:设置过小,可能因为正常的网络拥塞或短暂的性能问题,使得一些追随者副本被移出ISR,降低容错能力。设置过大,可能会让已经严重滞后的副本留在ISR中,同样在领导者选举时可能选出数据不完整的副本,影响容错和数据一致性。
  3. min.insync.replicas
    • 含义:指定了ISR集合中必须包含的最小副本数量,才能认为分区是“可用”的。当生产者发送消息时,只有ISR集合中的副本数量大于或等于这个值,生产者才会收到消息发送成功的确认。
    • 对容错性影响:值设置越高,集群的容错能力越强,因为有更多的副本可用于应对故障。但同时,过高的值可能会导致在一些网络或硬件故障情况下,分区更容易变为不可用状态,影响系统的可用性。例如,如果设置为3,当ISR集合中副本数量小于3时,生产者发送消息会失败,即使此时可能还有部分副本是正常的。