【背景】 在 Kafka 的事务性消费者场景中,我们遇到一个异常 Rebalance 的情况:旧实例在 Rebalance 前提交了 commitTransaction,但因某些原因延迟了 offset 的提交。与此同时,新实例在 Rebalance 后已经提交了 offset。此时,LSO(Last Stable Offset)的行为是回退还是拒绝?
【常见分歧】
- 回退:认为 LSO 应该回退到旧实例提交的 offset,以确保数据一致性。
- 拒绝:认为 LSO 应该拒绝新实例的 offset 提交,以避免数据丢失。
【我的倾向】 我认为 LSO 在这种情况下应该回退到旧实例的 offset,这样可以保证数据一致性,避免因 Rebalance 导致的数据丢失。然而,这也带来了性能上的权衡。
【想听大家的见解】 在实际生产环境中,你们遇到过类似的情况吗?你们是如何处理的?你们认为 LSO 的行为应该以哪种方式为主?欢迎分享你们的场景和做法。
0赞
0收藏
0楼层