美文网首页MQTT
EMQ 2.3中的本地/共享订阅

EMQ 2.3中的本地/共享订阅

作者: EMQ | 来源:发表于2018-09-27 08:46 被阅读49次

简介

使用本地订阅后,指消息只在订阅者的本地(所连接的)EMQ节点,不会流传到集群中的其它EMQ节点中。在共享订阅中,订阅同一个主题的客户端会轮流的收到这个主题下的消息,也就是说同一个消息不会发送到多个订阅者,从而实现订阅端的多个节点之间的负载均衡。共享订阅对于数据采集/集中处理类应用非常有用。在这样的场景下,数据的生产者远多余数据的消费者,且同一条数据只需要被任意消费者处理一次。

EMQ中本地/共享订阅特性

本地订阅(Local Subscription)是指只在本节点创建订阅与路由表,不会在集群节点间广播全局路由。

mosquitto_sub  -t  '$local/topic'
mosquitto_pub  -t  'topic'

使用方式: 订阅者在主题(Topic)前增加‘$local/’前缀。

共享订阅(Shared Subscription)支持在多订阅者间采用分组负载平衡方式派发消息:

共享订阅支持两种使用方式:

订阅前缀 使用示例
$queue/ mosquitto_sub -t ‘$queue/topic’
$share/<group>/ mosquitto_sub -t ‘$share/group/topic’

其中$queue与$share的区别,在于$share后面可以加不同的分组(group),比如$share/group1/topic,$share/group2/topic,$share/group3/topic,生产者发一个topic的消息,订阅$share/group1/topic的消费者、$share/group2/topic的消费者、$share/group3/topic的消费者都能收到消息,如果一个分组中存在多个消费者,则多个消费者还会共享订阅消息,每个group的消息随机其中一个消费者能获得。


使用场景

  • 当生产者和消费者的消息只想通过一个EMQ节点,可使用EMQ的本地订阅。
  • 当消费者的消息想通过EMQ实现订阅端的多个消费者之间的负载均衡,则可使用EMQ的共享订阅。

特殊情况下,当多个生产者生产多条消息的时候,一个消费者压力会很大,分担一个消费者的压力,或者其它情况,需要用到本地共享订阅。本地共享订阅是本地订阅与共享订阅的组合。

下图为本地共享订阅的消息走向和订阅关系。每个消费者都必须本地共享订阅每一个EMQ节点,这样每条消息只会走向一个消费者。注意:这里的SUB指消费者,PUB指生产者。

消息流向

每个PUB的消息从经过LB(负载均衡),发送到不同的EMQ节点中,比如第一个EMQ节点收到的M1、M3、M4的消息:

  • 通过本地订阅,这个EMQ节点的消息把收到的M1、M3、M4的消息不发给其它集群的EMQ节点,只从这个EMQ节点发送给订阅的SUB。
  • 通过共享订阅,这个EMQ的消息把收到的M1、M3、M4的消息发送给不同的SUB端。
  • 通过上述本地订阅+共享订阅,实现多个PUB发送的每条消息随机到达一个并且只有一个SUB。

订阅关系

每个SUB使用本地共享订阅($local/$share/A)来订阅EMQ集群中的每个EMQ节点。

相关文章

  • EMQ 2.3中的本地/共享订阅

    简介 使用本地订阅后,指消息只在订阅者的本地(所连接的)EMQ节点,不会流传到集群中的其它EMQ节点中。在共享订阅...

  • EMQ 的共享订阅

    EMQ 是一款基于高并发的 Erlang/OTP 语言平台设计,支持百万级连接和分布式集群,发布/订阅模式的开源M...

  • Moqbus环境:安装EMQ

    1. emq简介 jbus物联网平台使用emq作为消息订阅/发布服务中间件。 EMQ X Broker 是基于高并...

  • EMQX用户指南-共享订阅

    共享订阅 共享订阅是在多个订阅者之间实现负载均衡的订阅方式: 上图中,共享 3 个 subscriber 用共享订...

  • emqx的卸载

    Emqx是发布订阅模式的开源 MQTT 消息服务器。之前叫emqtt,从3.0版本开始改叫EMQ X。和之前emq...

  • EMQ X MQTT 5.0 主题重写

    EMQ X 的主题重写功能支持根据用户配置的规则在 MQTT 客户端订阅主题、发布消息、取消订阅的时候将 A 主题...

  • EMQ

    emq是什么 emq安装 emq发送消息 emq接收消息 官网

  • Topic消息接收

    非共享非持久化订阅 非共享持久化订阅 大话文来讲,就是订阅了某主题后,订阅者就算宕机了,下次启动后,还能收到宕机前...

  • MQTT 5.0 协议介绍 - 共享订阅

    前言 共享订阅是 MQTT 5.0 协议引入的新特性,相当于是订阅端的负载均衡功能。 我们知道一般的非共享订阅的消...

  • EMQ 管理控制台功能简介

    简介 EMQ 管理控制台 (EMQ Dashboard,以下简称 Dashboard) 是 EMQ 提供的一个后端...

网友评论

    本文标题:EMQ 2.3中的本地/共享订阅

    本文链接:https://www.haomeiwen.com/subject/ecmsoftx.html