微服务顺序数据处理

时间:2017-10-12 19:10:19

标签: multithreading microservices partitioning seq

假设我正在及时收到无序顺序数据流。

例如,输入可以是:

[
    {id:1, timestamp:1},
    {id:2, timestamp:1},
    {id:2, timestamp:2},
    {id:1, timestamp:2},
    {id:3, timestamp:1}
] 

每个实体都由“ID&ID”标识。领域。可能存在大量实体,并且每个输入的处理可能花费一些时间。 问题是我需要处理每个事件,以便为每个实体接收它们。

我正在考虑一些解决方案,将消息放入Kafka主题和分区并获得并行性? 或者在成功处理后(在其他计算机上或在线程池中的相同机器上)为每个实体创建已接收消息的本地存储并标记每个处理过的消息?

问题: 这是一个很好的解决方案吗? 如何在扩展数据使用者(具有固定数量的服务/创建新实例)时实现此功能? 也许有更好的方法来解决这类问题?

1 个答案:

答案 0 :(得分:0)

“IF”您提到的顺序数据除以id,1 2和3, 然后,作为消费者,你最好做3个后台服务,只需1个分区(你可以自己决定)

然后根据数据制作3个主题 例如: 主题1 主题2 主题3

这意味着您需要制作3种消费者,每个消费者只会听1个主题

然后你会为每个新的流数据产生新的进程/线程, 它可以并行工作