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