假设我正在及时收到无序顺序数据流。
例如,输入可以是:
[
{id:1, timestamp:1},
{id:2, timestamp:1},
{id:2, timestamp:2},
{id:1, timestamp:2},
{id:3, timestamp:1}
]
每个实体都由“ID&ID”标识。领域。可能存在大量实体,并且每个输入的处理可能花费一些时间。 问题是我需要处理每个事件,以便为每个实体接收它们。
我正在考虑一些解决方案,将消息放入Kafka主题和分区并获得并行性? 或者在成功处理后(在其他计算机上或在线程池中的相同机器上)为每个实体创建已接收消息的本地存储并标记每个处理过的消息?
问题: 这是一个很好的解决方案吗? 如何在扩展数据使用者(具有固定数量的服务/创建新实例)时实现此功能? 也许有更好的方法来解决这类问题?
答案 0 :(得分:0)
“IF”您提到的顺序数据除以id,1 2和3, 然后,作为消费者,你最好做3个后台服务,只需1个分区(你可以自己决定)
然后根据数据制作3个主题 例如: 主题1 主题2 主题3
这意味着您需要制作3种消费者,每个消费者只会听1个主题
然后你会为每个新的流数据产生新的进程/线程, 它可以并行工作