java - 增加分区后,有没有办法在 Apache Kafka 中保持顺序?
问题描述
我知道 kafka 使用默认的分区策略将消息发送到不同的主题分区。默认策略是 hash(key) % partitions。这意味着以后添加更多分区后,具有相同键的新记录将转到不同的分区,并且顺序丢失。
一种方法是使用自定义策略,我可以从数据库或本地存储中查询数据,如果存在密钥,那么我可以将消息转发到同一个分区。但这会降低吞吐量。
另一种方法是将消息读取到一个新的高度分区的主题,并将该主题用作默认主题。这可能会变得非常复杂,因为我们为事件源系统使用了几个不同的主题,其中我们使用 kafka 流本地状态存储以及命令、结果和事件等的不同主题。
还有其他选择吗?
解决方案
推荐阅读
- excel - PowerShell:如何将表格添加到 Excel 电子表格
- api - 如何在不使用空手道重复相同功能的测试的情况下为不同的基本 url 运行具有动态表的场景
- macos - VSCode 集成终端中的 $PATH 不一致
- scala - 在 Scala 中清除控制台
- kubernetes - 如何为应用程序 dotnetcore 编写 configmap
- accessibility - 为什么在使用屏幕阅读器浏览页眉时,总是会读取上方的页眉按钮?
- java - 如何将 JSON 字符串反序列化为枚举
- angular - 以角度一次上传一个文件
- c++ - 我的代码如何在编译时做一件事,而在运行时做另一件事?
- angular - 错误:Angular 编译器需要 TypeScript >=4.0.0 和 <4.1.0 但找到的是 4.1.2