How can I effectively rebalance my portfolio?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1311个文字,预计阅读时间需要6分钟。
上一篇文章介绍了Kafka通过enable.auto.commit控制手动提交还是自动提交。手动提交又分为异步提交和同步提交,还可以指定分区进行提交,默认是提交给所有分区。手动提交可以精确控制消息的提交,避免不必要的消息丢失。
上篇文章说了,kafka位移提交通过enable.auto.commit控制手动提交还是自动提交,手动提交又分为异步提交和同步提交,还可以指定分区进行提交,默认是提交给所有分区。手动提交可以对应不同的业务场景,当需要业务全部处理完才提交位移,则可以选择手动提交,但这时候需要做幂等性处理,因为当业务执行完毕,但系统宕机,这时候consumer重启则因为位移没提交会重复消费之前的数据。
一、Rebalance
Rebalance是什么?
它本质是一组协议,规定了consumer group如何达成一致性来分配订阅所有分区的。假设有20个consumer,需要订阅100个分区的topic,这时候就会每个consumer会平均订阅5个分区,这个过程就是rebalace。
和旧版本依托于zookeeper不同,新版本consumer使用了kafka内置一个权限的协调协议(group coordination protocol)。Kafka的某个broker会被选举为组协调者(group coordinator),他负责对组的状态进行管理,他的主要职责是当新成员到达时促进组内所有的成员重新分配,即coordinator负责rebalance。
什么时候他会触发rebalance呢?
- 组成员发生变化,比如新的consumer加入组,或者有consumer离开组,或者consumer崩溃时候触发。
本文共计1311个文字,预计阅读时间需要6分钟。
上一篇文章介绍了Kafka通过enable.auto.commit控制手动提交还是自动提交。手动提交又分为异步提交和同步提交,还可以指定分区进行提交,默认是提交给所有分区。手动提交可以精确控制消息的提交,避免不必要的消息丢失。
上篇文章说了,kafka位移提交通过enable.auto.commit控制手动提交还是自动提交,手动提交又分为异步提交和同步提交,还可以指定分区进行提交,默认是提交给所有分区。手动提交可以对应不同的业务场景,当需要业务全部处理完才提交位移,则可以选择手动提交,但这时候需要做幂等性处理,因为当业务执行完毕,但系统宕机,这时候consumer重启则因为位移没提交会重复消费之前的数据。
一、Rebalance
Rebalance是什么?
它本质是一组协议,规定了consumer group如何达成一致性来分配订阅所有分区的。假设有20个consumer,需要订阅100个分区的topic,这时候就会每个consumer会平均订阅5个分区,这个过程就是rebalace。
和旧版本依托于zookeeper不同,新版本consumer使用了kafka内置一个权限的协调协议(group coordination protocol)。Kafka的某个broker会被选举为组协调者(group coordinator),他负责对组的状态进行管理,他的主要职责是当新成员到达时促进组内所有的成员重新分配,即coordinator负责rebalance。
什么时候他会触发rebalance呢?
- 组成员发生变化,比如新的consumer加入组,或者有consumer离开组,或者consumer崩溃时候触发。

