2015-10-14 24 views
2

在我的項目中,我必須設計一個實時通知系統。我做了下圖。Kafka和NodeJS的實時通知

real time notification with kafka and redis

你可以看到,我用卡夫卡作爲隊列郵件系統,並且對的NodeJS建立的WebSocket服務器和卡夫卡的消費者。 生產者將收集通知數據並將其推送給Kafka。如果數據屬於該用戶,消費者將閱讀並處理來自Kafka的數據並通過websocket將其推送給客戶端。

通過上面的架構師,每個在線用戶將打開一個Websocket連接並創建一個新的Consumer。這意味着如果有100K用戶在線,我們必須擁有10萬用戶。

所以我的問題是上面的設計是一個實時通知系統的正確設計?你有什麼不同的想法嗎?如果我有100K消費者,有什麼問題嗎?

EDITED

它不應該打開太多的消費者。它能夠與消費者和websockets一起工作

回答

1

您的設計是正確的,如果您希望始終與每個客戶端連接,那麼您將不得不保持相同數量的client-websocket,因爲客戶端數量;但消費者不必增加相關客戶的數量;因爲它們可以在不同的client-websockets之間共享。

這取決於你的應用程序和你想處理它的方式。