我是靠谱客的博主 纯真龙猫,最近开发中收集的这篇文章主要介绍2019-07-10-mqtt-mosquitto系列13之共享主题mosquitto,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

mosquitto

共享订阅 - MQTT5新特性

概念

共享订阅是一种允许发送订阅主题组的消息到订阅组成员的的机制。标准的MQTT订阅,每一个订阅的客户端会收到消息的副本。而在共享的MQTT订阅中,订阅相同共享主题的所有客户端将会轮流收到消息,这种机制有时称为客户机负载平衡,因为单个主题的消息负载分布在所有订阅者之间。只要MQTT服务端支持共享订阅,则MQTT客户端可以通过标准MQTT订阅机制订阅共享主题,这意味着所有的常用mqtt客户端可以不用修改任何客户端代码就可以订阅共享主题,例如eclipse paho客户端。

共享订阅使用一个特殊的主题语法来订阅:

$share/GROUPID/TOPIC

共享订阅由三部分组成

  • 固定 $share 开头
  • 一个组ID
  • 具体的订阅主题(可以包含通配符)

具体的例子

$share/my-shared-subscriber-group/myhome/groundfloor/+/temperature

如果两个客户端同时订阅了该主题,则两个客户端只会有一个客户端收到消息,并且是轮流收到消息的。

使用

两个客户端订阅以及收到消息的效果:

# mosquitto_sub -t "$share/group1/#"
aaa
# mosquitto_sub -t "$share/group1/#"
bbbb

客户端发布两条消息,两个订阅客户端各收到一条消息

# mosquitto_pub -t "group1/topic1" -m "aaaa"
# mosquitto_pub -t "group1/topic2" -m "bbbb"

使用场景

共享订阅有许多使用场景,通常是高可扩展场景,最流行的是以下几种:

  • 客户端无法处理自行处理订阅负载平衡
  • 有一些热点主题因为消息量比较多是可扩展性的瓶颈

效率测试

我做了一下简单的测试,对比共享订阅相对于普通订阅会不会降低效率,基于

  • mosqutto2.0.12
  • ubuntu18.04LTS

测试每秒发送N条1K消息,从结果来看,共享订阅相对普通订阅,效率并没有明显下降。

  • 测试1~4看单个发送,多个接收的情况,此时还未达到服务器mosquitto瓶颈
  • 测试5~8多个发送,多个接收的情况,此时已经达到服务器mosquitto瓶颈(CPU100%)

参考

  • MQTT Client Load Balancing With Shared Subscriptions

最后

以上就是纯真龙猫为你收集整理的2019-07-10-mqtt-mosquitto系列13之共享主题mosquitto的全部内容,希望文章能够帮你解决2019-07-10-mqtt-mosquitto系列13之共享主题mosquitto所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部