Spring Kafka Streams无共同Key分组的实现与多分区优化问询
Kafka Streams跨ID关联分组的多分区适配方案
场景背景
之前用Spring Kafka Streams做分组聚合一直很顺畅,但现在遇到一个特殊关联规则的场景:消息通过id1和id2两个字段关联,只要任意一个字段与另一条消息的id1或id2匹配(包括id1与id1、id1与id2、id2与id2、id2与id1相等),就视为同组。
输入示例
{ "id1": 1222, "id2": 1333 }, { "id1": 1666, "id2": 1777 }, { "id1": 1222, "id2": 1444 }, { "id1": 1555, "id2": 1444 }, { "id1": 1888, "id2": 1666 }
期望输出
{ "id1": [1666, 1888], "id2": [1777, 1666] }, { "id1": [1222, 1222, 1555], "id2": [1333, 1444, 1444] }
当前困境
当Kafka分区数大于1(生产环境通常至少3个)时,无法保证关联的ID进入同一分区,导致流分组功能完全失效。目前考虑测试单线程应用的吞吐量,但希望找到更优方案,能维持多分区配置同时解决分组问题。
内容的提问来源于stack exchange,提问作者user1799107
相关产品推荐
相关产品推荐

