在我的项目中,我必须设计一个实时通知系统。我把它做成如下图所示。
你可以看到我使用Kafka作为队列消息传递系统,NodeJS使用了构建Websocket服务器和Kafka消费者。 制作人将收集通知数据并将其推送到Kafka。消费者将从Kafka读取和处理数据,并通过websocket将其推送到客户端,如果该数据属于该用户。
通过上面的架构师,每个在线用户都将打开一个Websocket连接并创建一个新的Consumer。这意味着如果在线有100K用户,我们必须有100K消费者。
所以我的问题是上面的设计是一个实时通知系统的正确设计?你有什么不同的想法吗?如果我有100K消费者,有什么问题吗?
EDITED
不应该打开太多的消费者。它能够与消费者和websockets一起使用
答案 0 :(得分:1)
您的设计是正确的,如果您希望始终与您的每个客户建立联系,那么您必须保留与客户数量相同的client-websocket
数量;但是对于连接的客户而言,消费者并不需要增加;因为它们可以在不同的client-websockets
之间共享。
这取决于您的应用程序以及您希望如何处理它。