GB28181系统设计(四)-横向扩展和纵向扩展

横向扩展

    横向扩展是增加更多的服务器来实现的,那么如何自动发现服务器呢?需要中心节点吗?当然这和设计有关,和具体应用有关,
提高计算能力,显然需要把任务分解到不同的服务器上,并行完成,客户端有可能连上任意一个服务器,在GB28181系统里面,我们一般只使用一个网关,多个网守。一个网守就是中心节点,网关则负责协议得转换,注意这只是设计而已,大千世界,无奇不有,所有名词都是我们自己设计和定义的,不用被这些东西束缚。

1 mdns协议

    多播DNS ( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的IP地址。 它是一种零配置服务,使用与单播域名系统 (DNS)基本相同的编程接口,数据包格式和操作语义。 mDNS本身被设计为独立协议,但它可以与标准DNS服务器协同工作。
下面是我以前写的一篇文章,里面有组播协议
使用组播包

2 ssdp协议

    SSDP一般指简单服务发现协议。 简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一,以下是我写的另一篇文章,ssdp一般使用组播地址239.255.255.250,端口1900,这是个管理方法。
ssdp协议

3 中心点

    在GB28181里面,中心点一般是网关,网关和网守不同,网关负责注册上线,管理,地址通知,sdp协议通知。其实也是管理,这是必不可少的。

纵向扩展

    纵向扩展是增加cpu和内存,以及计算能力,如果在外网,必须能够做到

2.1 云计算动态扩容

    这个是动态扩容,只有云计算有了。

2.2 限制有计划使用

    我们在GB服务的过程中,不能让所有mediaserver一下承载所有ipc或者转发点,而是有计划地根据hash一致算法去分配多个节点去负载均衡,如果只有一个mediaserver,没有任何冗余,是非常危险的。因此我们必须至少在设计上保持两个server。

2.3 RTP协议端口扩容

    rtp协议里面有太多的东西了,之所以是实时传输协议,如果仅仅是定义协议,那任何一个协议都可以说自己是实时的,端口扩容也就意味着在进程级别和线程级别可以使用多核进行接收,这个实际上要和sip协议进行融合,做过sip网关的人应该更清楚。
以下是一个RTP协议的源码,大家可以下载使用。
RTP协议源码

你可能感兴趣的:(音视频和c++,java,物联网,网络,c++高级技巧,ssdp,RTP,GB28181)