在单个Redis通道上使用Redis通道的成本是多少?



我有一些代码,基本上可以执行此psudocode()

registerCamera(id) {
       createRedisPubChannel("Camera_"+id)
}
cameraDisconnect() {
        removeRedisSubChannel("Camera_"+id)
}
然后,我通过该频道与该相机进行通信,这使我可以使用多个引擎。

我也可以构建代码,以便每个摄像机都不创建通道。我可以创建一个名为" Cameracomms"的频道,并确保每个消息都包含一个相机ID。

我想知道两种设计模式是否有任何性能优势/缺点?

如果有帮助,我可以在每个过程中注册多达200多个摄像机,并且在3个不同的盒子上进行交流。

帮助/建议非常感谢。

pre-Recousite:

从性能角度看,没有。频道,没有。出版商和否。订阅者的无关紧要,但是您处理的消息的频率和量确实很重要。

例如,

1发布者一次发布1000条消息会导致1000个发行商一次发送1个消息的开销。

类似地,1个接收1000条消息的订户将导致1000个订户一次收到1个消息。

更多订阅者订阅了同一渠道,更多的是发布的消息的副本,这是开销。

So the thumb Rule here is :
 1. Publisher do not flood messages at once.
 2. Subscriber must not be in a position to receive flooded messages at once.

回答您的问题:

如果您的发布者很重,则可以将N通道用于N相机。1个发布者将在频道中发布,1个订户将接收这些消息。这样,您将最终获得n个频道,n个发布者和n个订户。

如果您的发布者不重要,您可以使用一个单个通道,在该通道中发布者将发送相机ID,您的单个订户将消耗消息和过程。

相关内容

  • 没有找到相关文章

最新更新