张卫洪
我国铁路综合视频监控系统的发展经历了模拟、数字、高清化3个阶段,形成了基于《铁路综合视频监控系统技术规范》(Q/CR575—2017)[1](以下简称“575号文”)的铁路综合视频监控系统,实现了路内视频监控内容的互联互通,在铁路运输指挥、安全生产、经营管理、公安保卫诸多方面发挥了重要的作用。随着科学技术特别是互联网技术的进步,云计算、分布式存储[2]、集群控制技术飞速发展并日趋成熟,我国于2019年发布了信息技术、云计算、分布式块存储系统总体技术要求的国家标准[3],为云技术的发展奠定了基础。通过云技术可以提高系统的弹性和健壮性,实现系统能力的动态扩容和冗余备份,消除系统单点故障,同时可以降低系统升级维护成本及对高性能硬件的依赖。
结合视频监控行业发展趋势,系统的云化及视频数据化是未来视频监控系统的重要发展方向,所以利用云技术来对现有的铁路综合视频监控系统进行升级改造,在系统优化及技术创新方面均有重大意义。因此,本文基于575号文标准,研究采用云技术对铁路综合视频监控系统进行升级改造。
铁路综合视频监控系统基于575号文实现,而575号文修订时我国云技术相关标准尚未发布,所以目前的铁路综合视频监控系统没有与云技术相关的标准支持,各厂商在实现575号文标准时或多或少存在以下不足:①冗余备份能力较弱,存在单点故障导致关联的视频中断,数据丢失;②升级扩容工作量大,配置繁琐,不能实现快速扩容;③无负载均衡能力,存在服务节点空闲、忙碌不均的情况;④对硬件性能要求较高,不能充分利用已有服务器资产;⑤上下级管理节点(MU)故障或者故障发生后的主备切换会导致上下级之间失联;⑥存储系统没有规范接口协议,管理平台与存储系统之间不能通过标准协议对接。
本文研究重点是基于575号文标准,利用面向服务(SOA)的微服务框架,结合面向对象的分布式存储系统来构建铁路综合视频监控云系统(以下简称“视频云系统”),以克服上述不足。
视频云系统需要重点考虑系统框架、分布式缓存系统、分布式存储及交互协议4个方面的技术选型和实现,在进行技术选型时重点选择成熟的开源项目。
微服务框架可以利用Zookeeper[4],Dubbo和Spring Cloud[5]等开源项目来构建,其中Spring Cloud集成了一系列适用的框架,可以快速构造微服务,技术保障上也强于Dubbo和Zookeeper,所以选择Spring Cloud微服务框架来构建视频云系统。视频云系统微服务架构见图1。
图1 视频云系统微服务架构
在视频云系统中,为了实现冗余备份和负载均衡等功能,微服务的服务类型、能力、状态等信息需要在云内共享。例如,分发服务和存储服务的能力值和实际负载值,需要写入分布式缓存,管理服务读取这些数据来实现负载均衡和冗余备份控制。项目中常用的分布缓存系统有Re⁃dis、Memcache、Ignite几种,为了保证数据可靠性,分布式缓存需要进行集群部署,其中Ignite集群部署和集成最简单,故选用Ignite来作为视频云系统的分布式缓存。
传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。分布式存储常用的数据冗余备份模式有副本和纠删码[6]模式,纠删码模式在存储空间利用上更高,在视频存储上更具优势。同时由于对象存储方式在实现视频的播放控制方面更容易,所以视频云系统选择基于Ceph[7](分布式文件系统)的对象存储来构建分布式存储。
目前铁路综合视频监控系统主要基于71号文[8]及575号文标准实现,故视频云系统需要同时支持这2个版本的协议。视频云系统中采用了分布式存储来进行视频数据存储,采用标准的数据存储接口可以提高存储系统的通用性和可替代性。视频云系统选择了Amazon(S3)[9]作为对象存储协议;同时为了实现管理单元及数据分转发单元的冗余备份功能,需要在71号文及575号文基础上扩充部分私有协议。
依据71号文及项目实际需求,视频云系统划分了网关、注册中心、管理服务(MU)、分转发服务(DDU)、存储服务、配置服务及云存储系统等多个子系统。视频云系统部署见图2。
图2 视频云系统部署
其中,网关是视频云系统内部服务的统一访问入口,具备系统内部服务的负载均衡访问能力;注册中心用于服务的自发现和离线上线监控;管理服务用于完成用户权限管理、视频动态路由建立、71号文及575号文中的标准接口支持等功能;分转发服务用于视频流的接入和转发;存储服务用于完成视频数据的存储、查询和调取;云存储系统为通用的面向对象的分布式存储系统,用于视频数据的存取。为了提高系统的可靠性和易用性,管理单元、分转发单元、存储单元均采用集群方式部署,支持冗余备份及动态扩容。
为了简化系统配置,实现冗余备份、动态路由等功能,需要对摄像机、分转发服务、存储服务进行逻辑分组,视频流的播放和存储等功能将使用相同组内的服务来支撑。进行扩容时,只需要将所需服务注册到需要扩容的分组内,即可实现动态扩容。
在视频系统中,视频路由是指视频从摄像机或者其他视频平台,经过接入服务、分转发服务或者其他中转服务到达客户端,或者存储服务所经过的服务链路。如果采用固定的路由方式,路由链路中的某个服务失效,将导致视频无法观看和存储,而解决这一问题的方式就是动态路由机制,即播放视频时动态查找接入及分转发服务,用于实现视频的接入和转发。若某个服务不可用,将获取新的可用服务来保证业务不中断。视频云系统的动态路由生成流程见图3。
图3 视频云系统的动态路由生成流程
铁路综合视频系统采用了多级架构,通过管理节点(MU)实现上下级的级联,管理节点故障将导致该节点下所有视频资源无法调取。视频云系统采用了多管理节点冗余备份方式,保证管理节点的持续可用。多个管理节点通过竞争来获取Master(主管理)角色,获取到Master角色的管理节点将负责上下级级联的工作;没有获取到Master角色的管理节点为Slave(从管理)角色,Slave角色定期检查Master信息,如果检测到Master离线,那么Slave角色将再次竞争Master角色来实现上下级级联。
分转发单元用于视频流的接入和分发,分转发单元失效后,播放客户端或者存储服务将会检测到流中断,客户端及存储服务将会发送重播请求。由于分转发服务失效,之前建立的动态路由也将失效,管理节点收到重播请求将会生成新的路由,使用新的分转发服务来提供视频分发,从而实现分转发服务的冗余备份。
存储单元用于将视频数据存储到云存储中,注册中心检测到存储单元离线后将会向管理节点发送离线信息,管理节点将回收该存储服务的存储计划,并将回收的存储计划重新分发给在线的存储服务,从而实现存储服务的冗余备份。
将视频数据采用对象方式存储[10]到分布式云存储系统中,需要解决视频上传、下载、拖动、快进/快退问题。为了快速响应用户的操作,每个视频对象时长不宜过长,本系统中定义为5 s;同时,为了实现拖动快进等功能,需要为视频对象建立索引信息。视频云系统采用了二级索引方式建立索引:一级为全局索引,用于记录每一个视频对象的时长信息和二级索引名称;二级索引记录了每个视频对象的必要信息,包括时长及每帧位置信息等。视频对象存储方式见图4。
图4 视频对象存储方式
存储服务获取视频流后将在本地进行缓存,缓存5 s后生成该视频片段的索引信息,将索引信息及视频片段通过S3接口上传至云存储系统,同时修改该视频的全局索引信息。视频播放时,先获取该视频的全局索引,查询到播放时间点的视频二级索引,然后下载对应的视频数据,发送给播放端进行播放。
为了提升铁路综合视频系统在冗余备份、负载均衡、升级扩容、视频数据可靠性等方面的能力,研究了基于微服务架构、分布式缓存、云存储技术的视频云系统,引入视频动态路由机制,并对管理节点、分转发节点、存储节点进行了集群化设计,实现了服务的冗余备份,并简化了升级扩容工作;通过S3接口集成了Ceph云存储系统,保证了视频数据的可靠存储;另外,考虑铁路视频监控系统的现状,视频云系统兼容了71号文和575号文标准协议,与现有系统能够无缝对接。目前,视频云系统已经通过了CRCC认证,并在路内多条线路及部分区域节点上线使用,充分说明了利用云可以对路内视频监控系统进行全面的优化升级。该项研究也为铁路综合视频监控系统相关标准对云技术的支持提供参考。