Skip to content

Commit

Permalink
Merge pull request #6 from leven-space/main
Browse files Browse the repository at this point in the history
补充kafka 0.90 对ISR 维护的修改
  • Loading branch information
flycash authored May 10, 2021
2 parents 435c19b + 1a6cf79 commit 3798cee
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion mq/Kafka.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ ISR 的同步机制和其它中间件机制也是类似的,在涉及主从同
分析:考察 ISR 的特点,要理解 Kafka 如何维护 ISR 的。其实就两个参数控制,一个是落后多少消息,一个是多久没同步。比较有亮点的是能够清楚答出是哪两个参数,另外一个刷亮点的机会,就是说清楚它们过大过小都会有什么影响。

答案:当分区触发两个条件中的任何一个时,都会被移除出 ISR。
1. 消息落后太多,这个是参数`replica.lag.max.messages`
1. 消息落后太多,这个是参数`replica.lag.max.messages` [0.9.0后被移除](http://kafka.apache.org/documentation/#upgrade_9_breaking)
2. 分区长时间没有发起`fetch`请求,由参数`replica.lag.time.max.ms`控制。

(刷亮点,点出影响因素,后面面试官跟你探讨这些因素怎么影响的)基本上,除非是新的 Broker,否则几乎都是由网络、磁盘IO和GC引起的,大多数情况下,是负载过高导致的。
Expand All @@ -133,6 +133,10 @@ ISR 的同步机制和其它中间件机制也是类似的,在涉及主从同
#### 如何引导
- 谈到 Kafka 可靠性可用性

>补充: 为什么kafka要将`replica.lag.max.messages`删除?
>
> 因为这个参数本身很难给出一个合适的值。以默认的值4000为例,对于消息流入速度很低的主题(比如TPS为10),这个参数就没什么用;对于消息流入速度很高的主题(比如TPS为2000),这个参数的取值又会引入ISR的频繁变动(ISR 需要在Zookeeper中维护)。所以从0.9x版本开始,Kafka就彻底移除了这一个参数。
### Kafka 的负载均衡策略有哪些?

分析:一般考察的是 Producer 怎么把消息分到对应的 Partition 上。理论上来说就是两种,一个是轮询,一个是 Hash 取余。这取决于 Key 是否为 Null。但是我们可以结合实际中的一些现实场景,来做一些扩展说明。特别是 Hash 取余。这种问题,列举有什么策略一类的面试题,其实单纯列出来,只能说是合格,要想回答好,就需要针对性地结合自己的经历,重点分析某些策略的优劣。所以我们的回答会先简单介绍有哪些策略,后面会重点落在 Hash 取余上,着重分析 Hash Key 对负载均衡的问题。
Expand Down

0 comments on commit 3798cee

Please sign in to comment.