【问题标题】:Does the number of subscribers influence the receiving time in MQTT?订阅者的数量是否会影响 MQTT 中的接收时间?
【发布时间】:2020-05-20 18:39:18
【问题描述】:

我想知道特定主题的订阅者数量是否会导致每个订阅者接收消息的延迟?
如果是,是和broker的实现有关还是MQTT的本质?

我在各种经纪人的文档中找不到任何内容,或者我找不到合适的词来搜索。

scenario 1 :
topic1
publisher --> broker --> 1 subscriber

scenario 2 :
topic1
publisher --> broker --> 2 or more subscribers

方案 1 中的订阅者接收消息会比方案 2 更快吗?
还是每个订阅者同时收到消息?

【问题讨论】:

    标签: amazon-web-services mqtt aws-iot messagebroker


    【解决方案1】:

    这将主要取决于代理的实现方式,但其他因素也会有影响。

    对于大多数代理来说,传递特定消息的处理可能是单线程的,并遵循以下步骤:

    • 代理从发布客户端接收发布数据包
    • 在接收消息的线程上,它开始搜索已连接客户端的订阅主题模式列表
    • 找到匹配项后,它会将发布数据包发送到该客户端,然后继续下一个。

    通过精心设计的订阅主题树结构,搜索时间不应根据订阅客户端的数量而改变,而只是匹配模式的数量(重叠通配符)。但是发送到匹配的客户端将是线性的。

    另一个因素是消息的大小和每个客户端的网络速度。

    您可能可以在单个代理中并行化其中的一些,但这仍然会在网络接口或分布式代理上出现瓶颈(但这会增加将原始消息推送到其他节点的开销)

    【讨论】:

    • 首先感谢您的回答。 “通过精心设计的订阅主题树结构,搜索时间不应该根据订阅客户的数量而改变,只是匹配模式的数量(重叠通配符)”如果我理解正确,你的意思是使用通配符也会导致延迟?我的出版商正在发送这样的主题:factory/gw/sensor/datatype - gw,传感器和数据类型是动态的。我的两个或更多订阅者订阅了 factory/# 以接收所有数据此模式 factory/# 是否也会导致延迟?
    • 不,我只是说可能有多种可能的主题模式与消息匹配。例如factory/gw/sensor/datatype 将与 #factory/#+/gw/sensor/datatype 以及更多可能的组合匹配,并且匹配不同的通配符主题可能导致一些客户端收到消息稍微 比其他人晚。同样,这完全取决于代理的实施方式
    • 这只会在性能测试调查中得到解答,例如。详见gambitcomm.blogspot.com/2019/01/…
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    相关资源
    最近更新 更多