单个客户端订阅topic的数量对这个客户端接收emqx推送数据的影响多大

EMQX 版本

5.20

EMQX 安装部署方式

deb包部署

单个客户端订阅了5800多个topic, 现另一个客户端在0.8s左右分多个包发送了4000条数据(topic不同)到emqx , 第一次过内置数据库授权的情况下需要花费大概2.5s全部发给订阅的客户端,后续过授权缓存需要花费1.3s。

有什么方法能提高这个效率。
后续单个客户端订阅的数量可能达到50到60万,这个影响有多大

1 个赞
  1. 单个客户端不要订这么多主题,使用通配符方案。
  2. 原则上单个客户端收消息速率限制在 1300 /s 多了就用共享订阅。
  3. 要是还是不行,就在后面加一层 queue( Kafka rabbitmq )然后从 queue 消费。

我分两种情况试了下,第1种是单个客户端订阅了上万条主题,第2种是单个客户端订阅1个通配符。都是emqx接收5-6千条数据,然后全部发给订阅的客户端,第1种的客户端情况耗时较长,且emqx的cpu消耗爆满,第2种的情况几乎不耗时,cpu消耗也很低。想问问这两种情况下出现这么明显差别的原因

代码里面通配符就只存了一个规则。你用上 W 条主题,那就是上 W 条规则。这就是匹配一条规则和匹配 多条规则的区别。


我看这里的介绍有说通配符的性能会弱于普通主题的,这个两者的性能是不是有一个理论的临界值,订阅的主题数低于这个临界值用普通的效率高,高于这个临界值后用通配符的效率高

抱歉,我们没有这方面的临界值,需要结合您自己的场景测试。

根据你们的介绍,是不是我理解的这样,这个临界值是存在的?

理论上是存在的。