2015-10-14 73 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之间共享。

这取决于你的应用程序和你想处理它的方式。