在我的项目中,我需要设计一个实时通知系统。我已经按照下面的图片进行了设计。
您可以看到,我使用Kafka作为队列消息系统,使用NodeJS构建Websocket服务器和Kafka消费者。生产者将收集通知数据并将其推送到Kafka。消费者将从Kafka读取和处理数据,并通过websocket将其推送到客户端,如果该数据属于该用户,则会推送。
通过上述架构,每个在线用户都将打开一个Websocket连接并创建一个新的消费者。这意味着如果有100K个在线用户,我们必须拥有100K个消费者。
因此,我的问题是,上述设计是否是实时通知系统的正确设计?您有任何不同的想法吗?如果我有100K个消费者,是否会出现任何问题?
编辑:它不应该打开太多的消费者。它能够与一个消费者和Websockets一起工作。
通过上述架构,每个在线用户都将打开一个Websocket连接并创建一个新的消费者。这意味着如果有100K个在线用户,我们必须拥有100K个消费者。
因此,我的问题是,上述设计是否是实时通知系统的正确设计?您有任何不同的想法吗?如果我有100K个消费者,是否会出现任何问题?
编辑:它不应该打开太多的消费者。它能够与一个消费者和Websockets一起工作。