在服务器与数千个客户端之间进行实时通信的情况下,MQTT 是否高效?
Is MQTT efficient in case of real time communication beetween server and thousands of clients?
我有一个后端服务器和数千个客户端的问题。
每个客户端在 MQTT 中都有自己的主题。
通信是双向的:客户端可以向后端请求smth,后端可以通过一些动作实时响应或通知。
我应该如何扩展我的后端订阅者以处理来自 MQTT 的大量消息?
由于 MQTT 实施 pub/sub 模式,当我通过添加一个实例来扩展订阅者以同时处理更多消息时,它将订阅相同的主题并接收与其他订阅者相同的消息。
Pub/sub 缩放问题:Subscriber1、Subscriber2 将获得 Message1,然后 Subscriber1、Subscriber2 将获得 Message2。
当我有队列的消费者而不是pub/sub时,它与AMQP相反。
Consumer1 将获得 Message1,Consumer2 将获得 Message2,因此缩放是有效的。
那么在与大量客户端进行实时通信的情况下,后端服务器使用MQTT是一个不错的选择吗?如何处理?
我相信 shared subscriptions,MQTT v5 的一项功能,可以解决您的问题:
Like a Non‑shared Subscription, it has a Topic Filter and Subscription Options; however, a publication that matches its Topic Filter is only sent to one of its subscribing Sessions. Shared Subscriptions are useful where several consuming Clients share the processing of the publications in parallel.
我有一个后端服务器和数千个客户端的问题。 每个客户端在 MQTT 中都有自己的主题。
通信是双向的:客户端可以向后端请求smth,后端可以通过一些动作实时响应或通知。
我应该如何扩展我的后端订阅者以处理来自 MQTT 的大量消息?
由于 MQTT 实施 pub/sub 模式,当我通过添加一个实例来扩展订阅者以同时处理更多消息时,它将订阅相同的主题并接收与其他订阅者相同的消息。
Pub/sub 缩放问题:Subscriber1、Subscriber2 将获得 Message1,然后 Subscriber1、Subscriber2 将获得 Message2。
当我有队列的消费者而不是pub/sub时,它与AMQP相反。
Consumer1 将获得 Message1,Consumer2 将获得 Message2,因此缩放是有效的。
那么在与大量客户端进行实时通信的情况下,后端服务器使用MQTT是一个不错的选择吗?如何处理?
我相信 shared subscriptions,MQTT v5 的一项功能,可以解决您的问题:
Like a Non‑shared Subscription, it has a Topic Filter and Subscription Options; however, a publication that matches its Topic Filter is only sent to one of its subscribing Sessions. Shared Subscriptions are useful where several consuming Clients share the processing of the publications in parallel.