2017-10-12 70 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話題

然後你會產生新的進程/線程爲每個新的流數據, 它會並行工作