我有一些基本上执行此psudocode()
的代码registerCamera(id) {
createRedisPubChannel("Camera_"+id)
}
cameraDisconnect() {
removeRedisSubChannel("Camera_"+id)
}
然后我通过该频道与该摄像机通信,这使我可以拥有多个引擎。
我还可以构建代码,以便不是每个摄像头创建一个频道。我可以创建一个名为" cameraComms"并确保每封邮件都包含一个摄像头ID。
我想知道这两种设计模式都有任何性能优势/劣势吗?
如果它有帮助我每个进程最多可以注册200多个摄像头,并且通过3个不同的盒子进行通信,运行3个Redis实例。
非常感谢帮助/建议。
答案 0 :(得分:1)
<强>先决条件:强>
在绩效方面,没有。渠道,没有。出版商和没有。订阅者并不重要,但您处理的消息的频率和数量确实很重要。
例如,
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,您的单个订阅者将使用该消息和流程。