订阅者的数量是否影响 MQTT 中的接收时间?
Does the number of subscribers influence the receiving time in MQTT?
我想知道特定主题的订阅者数量是否会导致每个订阅者接收消息延迟?
如果是,是跟broker的实现有关还是MQTT的本质?
我在各种经纪人的文档中找不到任何内容,或者我找不到合适的术语来搜索。
scenario 1 :
topic1
publisher --> broker --> 1 subscriber
scenario 2 :
topic1
publisher --> broker --> 2 or more subscribers
方案 1 中的订阅者接收消息是否比方案 2 更快?
或者每个订阅者同时收到消息?
这主要取决于代理的实现方式,但其他因素也会产生影响。
对于大多数代理,传递特定消息的处理可能是单线程的,并遵循以下步骤:
- 代理从发布客户端接收发布数据包
- 在接收消息的线程上,它开始搜索已连接客户端的订阅主题模式列表
- 找到匹配后,它会将发布数据包发送到该客户端并继续下一个客户端。
如果订阅主题树结构设计良好,那么搜索时间不应根据订阅客户端的数量而变化,而只会根据匹配模式(重叠通配符)的数量而变化。但是发送到匹配的客户端将是线性的。
另一个因素是消息的大小和每个客户端的网络速度。
您可能可以在单个代理中并行处理其中的一些内容,但这仍然会在网络接口或分布式代理中出现瓶颈(但这会增加将原始消息推送到其他节点的开销)
我想知道特定主题的订阅者数量是否会导致每个订阅者接收消息延迟?
如果是,是跟broker的实现有关还是MQTT的本质?
我在各种经纪人的文档中找不到任何内容,或者我找不到合适的术语来搜索。
scenario 1 :
topic1
publisher --> broker --> 1 subscriber
scenario 2 :
topic1
publisher --> broker --> 2 or more subscribers
方案 1 中的订阅者接收消息是否比方案 2 更快?
或者每个订阅者同时收到消息?
这主要取决于代理的实现方式,但其他因素也会产生影响。
对于大多数代理,传递特定消息的处理可能是单线程的,并遵循以下步骤:
- 代理从发布客户端接收发布数据包
- 在接收消息的线程上,它开始搜索已连接客户端的订阅主题模式列表
- 找到匹配后,它会将发布数据包发送到该客户端并继续下一个客户端。
如果订阅主题树结构设计良好,那么搜索时间不应根据订阅客户端的数量而变化,而只会根据匹配模式(重叠通配符)的数量而变化。但是发送到匹配的客户端将是线性的。
另一个因素是消息的大小和每个客户端的网络速度。
您可能可以在单个代理中并行处理其中的一些内容,但这仍然会在网络接口或分布式代理中出现瓶颈(但这会增加将原始消息推送到其他节点的开销)