使用RabbitMQ和Spring Cloud进行MQTT客户端负载平衡

扩展您对MQTT客户端和负载平衡的了解。

介绍
MQTT是一种机器对机器(M2M),物联网连接协议。它被设计为一个非常轻量级的发布和订阅消息传输。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程位置的连接非常有用。

每个MQTT客户端都订阅某些主题,并在发布者开始推送有关这些主题的消息时接收消息。

如何扩展?
水平扩展的目的是在同一应用程序的多个实例之间分配负载。如果这些实例中的MQTT客户端订阅了相同的主题,则将向每个实例传递相同的MQTT消息,这不是所理想的行为。
使用RabbitMQ和Spring Cloud进行MQTT客户端负载平衡_第1张图片
本文完整示例代码,下载链接

竞争消费者
Spring Cloud Stream定义了“Consumer Groups”的概念,如下所示:

“虽然发布 - 订阅模型可以轻松地通过共享主题连接应用程序,但通过创建给定应用程序的多个实例来扩展的能力同样重要。当这样做时, 应用程序的不同实例被置于竞争的消费者关系中,其中只有一个实例可以处理给定的消息。“
基于此定义,Spring Cloud Stream允许跨多个客户端分配主题的负载,如下图所示。
使用RabbitMQ和Spring Cloud进行MQTT客户端负载平衡_第2张图片
更多内容,点击关注国外课栈网“编程碎语”专栏

你可能感兴趣的:(IoT)