2017-10-12 80 views
0

假设我正在接收无序顺序数据流。微服务顺序数据处理

例如,输入可以是:

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

每个实体由 'ID' 字段来标识。可能会有大量实体,并且每个输入的处理可能需要一些时间。 问题是我需要处理每个事件以便为每个实体接收它。

我在考虑一些解决方案,把消息放入卡夫卡主题的分区并接收并行性? 或者在成功处理后(在其他机器上或在线程池中)创建收到的消息的本地存储并标记每个实体的每个处理消息?

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

+0

做顺序数据它只是三种吗? – Evinn

+0

不,这只是一个例子,可能有N个不同的实体。 –

+0

那么它将是最好的处理它在一个消费者,并使用数据库来分割过程 – Evinn

回答

0

“IF”你刚刚提到的顺序数据,除以id,1和3, 然后将你最好的3个后台服务作为一个消费者,只需要1个分区的情况下(你可以决定这个你自己的)

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

这意味着你需要3样的消费者,每个消费者的将是只听1话题

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