背景技术
随着近年来社会的不断发展,人类活动的不断增多,安防成为一个越来越重要的行业。针对安防系统本身的特点:用户往往要求其能够7x24小时不间断工作;同时,由于长时间的使用,数据量会越来越大,系统的运行压力和性能也会随着时间的推移而经受考验。在这种情况下,系统的可靠性,可维护性,效率,就变得更为重要。
视频能够实时预览,回放,存储而不间断,对于安防行业,要求更加苛刻。比如在商铺的盗窃,公安的破案时,如果视频监控平台出现故障,视频录像出现丢失,将造成不可估量的损失。
目前的视频监控平台,需要将JAVA与C++通讯,因此需要定义接口Ice文件,Ice通过SLICE文件实现接口的调用,接口扩展性差、生成的实体类与JAVA兼容性差。
Ice和Spring各自管理容器内的对象,JAVA无法集成IceBox、IceGrid实现服务集群。
Zeroc Ice跟JAVA集成支持RPC调用是通过服务端跟客户端进行通讯,单个服务实例存在一定的瓶颈。
Zeroc Ice跟JAVA通讯,处理信令的性能有限,客户端同时看视频的用户数一多就会出现卡顿、无响应、宕机。信令堆积导致处理该信令的时间已经超时导致业务流程无法正常扭转。客户端服务发送过来的指令先存在REDIS中的某个key,另外一个线程一直轮询这个key查询是否有要处理的信令,多个线程轮询查key造成REDIS连接数过多,无法获得正常的连接且处理时效性有一定的延迟。
目前的视频监控平台通常采用单体架构,服务仅仅跟一个中心管理服务进行信令交互,缺乏可靠性可能会导致了频繁的系统故障和宕机。
发明内容
本申请实施例的目的在于提出了一种改进的视频监控服务智能调度系统,来解决以上背景技术部分提到的技术问题。
该系统包括:智能调度服务、多个中心管理服务、多个业务服务,中心管理服务服务与多个业务服务之间通过预设通用接口协议进行数据通信;其中,智能调度服务用于服务注册管理、集群任务调度,还用于从多个中心管理服务和多个业务服务中选择目标中心管理服务和目标业务服务进行视频数据的处理;中心管理服务用于用户管理、设备资源管理、业务管理,还用于根据视频请求选择相应的目标业务服务;目标业务服务用于基于视频请求向视频客户端提供视频相关服务。
在一些实施例中,多个业务服务包括以下至少一种:存储服务、网关服务、转发服务、国标信令服务;存储服务用于存储视频数据,实现视频数据的存储、检索、回放功能;网关服务用于对视频客户端进行视频数据对接;转发服务用于视频数据的分发,以及对视频数据进行格式转换;国标信令服务用于以国标协议方式对接第三方。
在一些实施例中,多个中心管理服务进一步用于:向智能调度服务推送中心管理服务的健康值;多个业务服务进一步用于:向智能调度服务推送业务服务的健康值;智能调度服务进一步用于:根据接收的健康值的大小,从多个中心管理服务和多个业务服务中选择目标中心管理服务和目标业务服务。
在一些实施例中,健康值基于至少一个服务属性选项和对应的属性比重值得到。
在一些实施例中,多个业务服务通过预设的面向对象的中间件平台与中心管理服务服务端进行信令通讯。
在一些实施例中,预设通用接口协议包括协议码,协议码用于实现不同的业务功能,协议码的内容包括预设数据交换格式的数据。
在一些实施例中,多个业务服务还包括客户端中转服务,客户端中转服务用于:接收视频请求,基于视频请求,确定视频请求对应的监控设备的网关服务作为目标网关服务,将包含网关的信息的消息发送到目标中心管理服务;目标中心管理服务进一步用于:通过智能调度服务确定目标转发服务,并向目标转发服务发送视频播放命令;目标转发服务进一步用于:接收视频播放命令并向目标网关服务发送视频播放命令;目标网关服务进一步用于:建立监控设备对应的存储服务与视频客户端的连接,并向视频客户端发送视频数据。
在一些实施例中,智能调度服务进一步用于:响应于多个中心管理服务中包括发生异常的中心管理服务,将发生异常的中心管理服务的标识信息清除;基于各个中心管理服务的健康值,将清除的中心管理服务对应的业务服务切换至其他中心管理服务;响应于多个业务服务中包括发生异常的业务服务,将发生异常的业务服务的标识信息清除;基于各个业务服务的健康值,重新选择业务服务进行视频数据处理。
在一些实施例中,多个业务服务通过以下至少一种编程语言建立:C语言、C++语言。
在一些实施例中,中心管理服务进一步用于:响应于接收到信令,从预设的线程池中选择与信令相对应的专用线程来处理信令。
本申请实施例提供的视频监控服务智能调度系统,通过设置智能调度服务、多个中心管理服务、多个业务服务,且中心管理服务服务与多个业务服务之间通过预设通用接口协议进行数据通信,智能调度服务用于服务注册管理、集群任务调度,中心管理服务用于用户管理、设备资源管理、业务管理,目标业务服务用于将视频客户端请求的视频数据发送至视频客户端,从而实现了使用智能调度服务协调各个服务之间的通信,采用通用的接口协议以提高不同业务之间的接口的扩展性,通过部署多个中心管理服务提高处理指令的速度,采用异步方式提高处理指令的效率,此外,本申请实施例中的各个服务采用分布式集群部署,智能调度服务对多个业务服务进行动态切换,智能调度,实现了高性能、高并发、高容错和可拓展。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的视频监控服务智能调度系统的示例性系统架构100。
如图1所示,系统架构100可以包括智能调度服务101、多个中心管理服务102、多个业务服务103,中心管理服务服务101与多个业务服务103之间通过预设通用接口协议进行数据通信。其中,预设通用接口协议可以采用统一的字符串格式,从而可以方便协议的扩展,不用修改诸如slice等形式的文件内容。
智能调度服务用于服务注册管理、集群任务调度,还用于从多个中心管理服务和多个业务服务中选择目标中心管理服务和目标业务服务进行视频数据的处理。
通常,智能调度服务首先启动,负责记录各个服务的基本信息和服务资源负载。接着各个中心管理服务启动多个实例(例如中心管理服务为Ice服务端),往智能调度服务中注册IP和端口,同时写入Zookeeper(用于记录各个中心管理服务的基本信息)。智能调度服务中可以存储有一个服务列表,该列表可以实时更新,保留有效的服务,剔除异常的服务。
中心管理服务用于用户管理、设备资源管理、业务管理,还用于根据视频请求选择相应的目标业务服务。其中,视频请求可以是如图1所示的视频客户端104发送的关于视频的各种请求。例如视频播放请求,视频上传请求,视频删除请求等。用户可以使用视频客户端104与该视频监控服务智能调度系统100交互,视频客户端104上可以安装有各种通讯客户端应用,例如视频监控应用、视频播放应用、搜索类应用、网页浏览器应用、即时通信工具等。
目标业务服务用于基于视频请求向视频客户端提供视频相关服务。例如目标业务服务可以是转发服务,用于向视频客户端转发视频数据。
应该理解,图1中的智能调度服务、中心管理服务、业务服务和视频客户端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的智能调度服务、中心管理服务、业务服务和视频客户端。需要说明的是,图1中的智能调度服务101、多个中心管理服务102、多个业务服务103可以设置在同一个服务器上,也可以分散分布在由多个服务器组成的服务器集群上。
本申请实施例提供的视频监控服务智能调度系统,通过设置智能调度服务、多个中心管理服务、多个业务服务,且中心管理服务服务与多个业务服务之间通过预设通用接口协议进行数据通信,智能调度服务用于服务注册管理、集群任务调度,中心管理服务用于用户管理、设备资源管理、业务管理,目标业务服务用于将视频客户端请求的视频数据发送至视频客户端,从而实现了使用智能调度服务协调各个服务之间的通信,采用通用的接口协议以提高不同业务之间的接口的扩展性,通过部署多个中心管理服务提高处理指令的速度,采用异步方式提高处理指令的效率,此外,本申请实施例中的各个服务采用分布式集群部署。智能调度服务对多个业务服务进行动态切换,智能调度,实现了高性能、高并发、高容错和可拓展。
在本实施例的一些可选的实现方式中,如图2所示,该系统架构中的多个业务服务103可以包括但不限于以下至少一种:存储服务1031、网关服务1032、转发服务1033、国标信令服务1034。
其中,存储服务1031用于存储视频数据,实现视频数据的存储、检索、回放功能;
网关服务1032用于对视频客户端进行视频数据对接。例如,实现国标协议对接的视频数据的接入,也可以实现常规SDK或者Onvif等以主动拉流方式的视频数据对接。
转发服务1033用于视频数据的分发,以及对视频数据进行格式转换。转发服务1033可以按照多种协议输出视频流,系统流出的视频数据统一从转发服务1033发送出去。
国标信令服务1034用于以国标协议方式对接第三方。
需要说明的是,上述每种业务服务的数量可以是多个。
本实施例提供的多个业务服务,可以以分布式集群的方式实现各种服务的部署,各个业务服务可以在智能调度服务的协调下为视频客户端提高视频服务,从而可以提高视频数据的处理效率。
在本实施例的一些可选的实现方式中,多个中心管理服务102可以进一步用于:向智能调度服务推送中心管理服务的健康值。以及多个业务服务可以进一步用于:向智能调度服务推送业务服务的健康值。
其中,健康值用于表征中心管理服务或业务服务所在的设备的运行状态。通常,健康值越高,表示设备当前的数据处理能力越强,健康值越小,表示设备当前的状态越差,即数据处理的效率越低。健康值可以基于对设备当前的硬件使用状态确定,例如内存占用比例、存储器占用比例、CPU使用比例等。
基于此,智能调度服务101可以进一步用于:根据接收的健康值的大小,从多个中心管理服务和多个业务服务中选择目标中心管理服务和目标业务服务。通常,智能调度服务101可以确定健康值较小(例如小于预设阈值)的服务为异常服务,从而选择健康值较大的中心管理服务为目标中心管理服务,选择健康值较大的业务服务为目标业务服务。
本实现方式,通过多个中心管理服务和多个业务服务向智能调度服务推送各自的健康值,可以使智能调度服务基于健康值选择状态最佳的服务,从而可以避免使用到异常服务,提高系统的容错性。
在本实施例的一些可选的实现方式中,健康值基于至少一个服务属性选项和对应的属性比重值得到。作为示例,对于某个服务,其服务属性选项以及对应的属性比重值如下:
服务上行速率 15%,
服务下行速率 15%,
服务当前内存 10%,
服务当前存储 10%,
服务当前CPU 10%,
服务当前健康值 10%,
服务当前注册数比重 10%,
服务当前查看数比重 10%,
服务当前服务负债率 10%,
服务最大入网限制,
服务最大注册设备,
服务最大注册平台。
可以将各个属性选项相应的数据乘以属性比重值并求和,得到健康值。需要说明的是,上述示例所示出的确定健康值的方法仅仅是一个示例,凡是表征服务当前的状态的数值,均可以作为健康值,本申请实施例不做具体限定。
本实现方式通过至少一个服务属性选项分别对应的属性比重值确定健康值,可以更全面地涉及到提供服务的设备的状态,从而使健康值更客观准确。
在本实施例的一些可选的实现方式中,多个业务服务通过预设的面向对象的中间件平台与中心管理服务服务端进行信令通讯。作为示例,上述面向对象的中间件平台可以为Ice架构。Ice是一种面向对象的中间件平台,Ice应用适合于异构平台环境中使用,各模块可以采用不同的编程语言,可以运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信,从而提高该系统的适用性。
在本实施例的一些可选的实现方式中,预设通用接口协议包括协议码,协议码用于实现不同的业务功能,协议码的内容包括预设数据交换格式的数据。作为示例,协议码的内容可以统一采用json字符串格式,可以方便以后协议的扩展,而不用去修改slice文件内容。
作为示例,上述预设通用接口协议包括协议头和数据体。其中,协议头是每条协议都必须包含的。协议头分为2部分,第一部分是4个字节的固定头,第二部分是协议头数据。
协议头固定字段(占4个固定字节)如下表所示:
协议头数据的字节数是不固定的,主要由几个固定长度字段和不定长headBuf组成。协议头数据固定的字节为19,则headBuf的长度=headLen-19。19代表协议头数据固定的字节树,如下表所示:
数据体分为字符串json数据和二进制数据。数据格式根据每一条协议制定。
本实现方式通过使用预设数据交换格式的数据填充的协议码,可以便于协议的扩展,提高系统服务的可扩展性。
在本实施例的一些可选的实现方式中,如图2所示,多个业务服务还包括客户端中转服务1035,客户端中转服务用于:接收视频请求,基于视频请求,确定视频请求对应的监控设备的网关服务作为目标网关服务,将包含网关的信息的消息发送到目标中心管理服务。通常,
目标中心管理服务进一步用于:通过智能调度服务确定目标转发服务,并向目标转发服务发送视频播放命令。
目标转发服务进一步用于:接收视频播放命令并向目标网关服务发送视频播放命令。
目标网关服务进一步用于:建立监控设备对应的存储服务与视频客户端的连接,并向视频客户端发送视频数据。
通常,视频客户端启动的时候,可以先往客户端中转服务注册。当进行视频预览时,客户端中转服务根据指定的通道得到相应的网关,根据网关找到目标中心管理服务,客户端中转服务发送消息到对应的目标中心管理服务,目标中心管理服务从智能调度服务获取一个最适合的(例如根据健康值选择)转发服务,接着再获取该监控设备入网的网关,进行信令处理,返回转发服务发送的消息到刚才发送的客户端中转服务。客户端再去转发服务拉流,完成整个流程。
本实现方式通过在系统中设置客户端中转服务,可以在系统中建立视频客户端与视频资源的联系,从而有助于使智能调度服务及时准确地向客户端调度视频资源,提高视频监控系统的服务效率。
在本实施例的一些可选的实现方式中,智能调度服务可以进一步用于:
响应于多个中心管理服务中包括发生异常的中心管理服务,将发生异常的中心管理服务的标识信息清除;基于各个中心管理服务的健康值,将清除的中心管理服务对应的业务服务切换至其他中心管理服务。
响应于多个业务服务中包括发生异常的业务服务,将发生异常的业务服务的标识信息清除;基于各个业务服务的健康值,重新选择业务服务进行视频数据处理。
其中,智能调度服务可以存储有服务列表,该列表存储了正常状态下的服务,当检测到某个服务的健康值处于预设的正常范围之外,则可以确定该服务异常,此时可以将该服务的标识信息从服务列表中删除并重新选择健康值正常的中心管理服务。然后将异常的中心管理服务所管理的业务服务转移至重新选择的中心管理服务。
当网关服务异常,中心管理服务会监听到网格异常断开的信令,会把所有在该网关入网的设备进行切换,由智能调度服务获取一个其他健康值高的网关服务,从而恢复网络连接。
当存储服务异常。中心管理服务会监听到存储服务异常断开的指令,会把所有在上面有录像任务的通道切换到其他健康值高的存储服务,从而不会造成部分通道长时间录像丢失。
其他服务异常的处理类似,这里不再赘述。随着设备不断的添加,某个服务遇到瓶颈,就可以通过添加设备以部署相应的服务进行弹性扩容,满足现实需求。
本实现方式通过对服务列表的实时更新,可以保证对异常服务及时进行切换,从而保证了系统的可靠性。
在本实施例的一些可选的实现方式中,多个业务服务通过以下至少一种编程语言建立:C语言、C++语言。采用上述编程语言编写的服务程序,可以边编译边执行,执行效率更高,从而可以提高服务的性能。
在本实施例的一些可选的实现方式中,中心管理服务可以进一步用于:响应于接收到信令,从预设的线程池中选择与信令相对应的专用线程来处理信令。其中,接收的信令可以是实现各种功能的信令,这里不做限定。
本实现方式通过对中心管理服务设置专用线程池,并采用通知的方式选择信令相应的线程,可以提高处理信令的效率。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。