在我的项目中,我必须设计一个实时通知系统。我就是这样做的,如下图所示。
你可以看到我使用 Kafka 作为队列消息系统,并使用 NodeJS 来构建 Websocket Server 和 Kafka Consumers。
生产者将收集通知数据并将其推送到 Kafka。消费者将从 Kafka 读取并处理数据,如果该数据属于该用户,则通过 websocket 将其推送到客户端。
通过上面的架构师,每个在线用户都会打开一个Websocket连接并创建一个新的Consumer。这意味着如果有10万用户在线,我们就必须有10万消费者。
所以我的问题是上面的设计对于实时通知系统来说是正确的设计吗?你有什么不同的想法吗?如果我有 100K Consumer 有什么问题吗?
EDITED
它不应该打开太多的消费者。它能够与消费者和网络套接字一起工作
您的设计是正确的,如果您想始终与每个客户保持联系,那么您必须保持相同数量的client-websocket
因为有很多客户;但消费者不必根据连接的客户端而增加;因为它们可以在不同的人之间共享client-websockets
.
这取决于您的应用程序以及您想要处理它的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)