在我们的物联网应用中,需要预览局域网内的海康或者大华摄像头,并且可以实现云台控制和抓拍,由于摄像头IP属于局域网、在公网上无法访问导致无法进行预览抓拍云台控制等,所以我们在局域网内部署了一台边缘设备,边缘设备既可以访问我们的物联网平台又能够访问局域网摄像头,这里称为云盒。云盒可用于接收物联网平台的指令,并下发至相机,并将相机指令执行的结果透传回服务端,比如取到的rtsp视频流、抓拍的照片,如下图所示
一般情况下,云盒通过ffmpeg推流,最大可支持的摄像头数目为15~20路,随着局域网摄像头接入数量增多,单云盒达到性能瓶颈;所以我们需要对云盒集群进行支持。
恰好此时mqtt协议推出了共享订阅且得益于云盒的无状态设计,只需要将云盒和mqtt broker服务版本升级为5.0,修改topic为共享订阅topic即可完成集群改造。
普通订阅:每发布一条消息,所有匹配的订阅端都会收到该消息的副本
共享订阅: MQTT 服务端可以在使用特定订阅的客户端之间均衡地分配消息负载,我们有两个或者多个客户端共享一个订阅时,那么每个匹配该订阅的消息都只会有一个副本投递给其中一个客户端。