摘 要:本文设计了一种可以应用在煤矿安全监控系统中的,支持多客户端多业务的文件同步组件,该组件可以同步煤矿安全监控系统中主热备计算机上的配置文件和其他相关业务文件,为煤矿安全监控系统提供了相应的技术支持。
关键词:煤矿安全监控系统;文件同步;文件监视
中图分类号:TD76;TP277 文献标识码:A 文章编号:2096-4706(2019)07-0014-04
Abstract:This paper designs a file synchronization component which can be used in coal mine safety monitoring system and support multi-client and multi-service. The component can synchronize configuration files and other related business files on the main hot standby machine in coal mine safety monitoring system,and provide corresponding technical support for coal mine safety monitoring system.
Keywords:coal mine safety monitoring system;document synchronization;document monitoring
1 背景
煤炭是一種重要的资源,但煤炭开采受煤层和地质情况的影响越来越大,很多矿井环境恶劣,还要受水灾、火灾、瓦斯爆炸、粉尘污染等自然灾害的影响,因此国家要求煤矿必须安装煤矿安全生产监控系统,通过一系列技术手段来保障煤矿生产的安全性和可靠性。
煤矿安全生产监控系统一般通过采用双机热备的方式来保障系统的稳定可靠,而双机热备技术又涉及主机和备机之间的数据交互,目前主要通过数据库和网络来传输相关信息,但监控系统还可能存在大量的配置文件,这些配置以文件形式存放于相关目录中,因此设计一款基于煤矿安全生产监控系统的文件同步组件具有重要意义。
目前市面上流行着一些文件同步产品,但存在各种问题,比如配置安装复杂、对外接口不通用、与监控系统软件不兼容,出现问题不能及时发现和解决等等,并不适合煤矿的使用环境,作者通过调研多个煤矿安全生产监控系统软件厂商,收集到了适合监控系统环境下的文件同步需求,整理如下:
(1)文件同步组件需要能够独立运行,不依赖其他第三方的软件,同时能够对监控系统提供相关参数设计的接口,以确定文件同步方向、同步的文件类型等等。
(2)文件同步组件需要能够同步2台或2台以上的计算机之间的文件数据同步,并且支持双向同步功能。
(3)由于煤矿生产的特殊性,相关使用人员的软件知识不高,文件同步组件需要尽量简化参数配置,同时能支持实时修改设置功能。
针对以上需求,有了本文的这款文件同步组件的设计方案。
2 方案设计
2.1 业务流程
整个系统业务流程如图1所示。
组件业务流程如下:
(1)文件同步组件以Windows服务的方式统一对外提供服务接口,在不同计算机上运行的业务软件各自启动安装好的文件同步组件服务。
(2)业务软件向文件同步组件注册当前需要同步的业务信息。
(3)文件同步组件根据当前注册的业务向网络中广播,并根据其他文件同步组件广播的信息组织整理一张完整的业务同步拓扑图,包含当前业务所包含的所有文件同步组件所在计算机的IP、业务信息,以及同步身份等。
(4)业务软件设置当前文件同步组件的身份:源机、目标机。
(5)文件同步组件根据身份和业务自动同步网络中其他的文件同步组件,保证各个计算机上的文件同源机上的一致。
文件同步组件没有UI界面,所有交互都统一通过对外开放的WCF接口。
2.2 系统总体结构
系统的总体结构如图2所示。
文件同步组件支持多个客户端,支持每个客户端的不同业务文件的分类同步,各个子业务之间互不干扰。
组件的主要功能包括:用户参数设置、文件同步两大功能模块,其中用户参数设置主要是用来调整组件同步的相关设置,比如业务注册、业务注销、同步参数等等,用户通过这些外部接口,来调整组件的运行状态。文件同步模块主要包括文件监视、文件读写、节点维护等,文件监视主要是监视本地注册的业务内的所有文件,如果发生变动,则生成最新的文件hash并广播通知,文件读写主要是要根据多线程的读写文件状态来设置相应的锁,防止出现文件被占用的情况,节点维护主要是收集整个网络中的其他文件同步组件,并在本地内存中形成一个同步的拓扑结构。
2.3 关键技术
2.3.1 心跳模块设计
心跳模块主要是用来按照一定的业务逻辑通过通信接口模块向网络中其他的文件同步组件发送心跳包,并解析自身接收到的心跳包。
其监听算法流程如图3所示。
心跳模块监听过程中,主要收到两种信息包:常规身份信息包和文件变动广播包。常规身份信息包主要包含自身文件同步组件所使用的网卡IP地址、组件当前的身份、组件的升成源机身份的时间等等,常规身份信息包可以帮助组件了解整个同步网络的情况,并结合自身状态进行身份的切换。文件变动广播包主要是在当本地监控的文件发生了变动后,向整个网络广播变动信息,使其他组件能够及时获取变动文件并更新自身的状态。
为了防止网络上的其他无效数据的干扰,心跳包需要做一些特殊的处理,比如所有字节的异或校验、长度校验等等,只有通过校验的数据包才是组件能正常解析的心跳包,其他不符合的都将被丢弃。心跳包的设计方案如图4所示。
2.3.2 文件信息维护模块设计
该模块主要是用来定时监视相关业务的文件系统,当业务或业务对应的文件发生变动时,自动维护文件信息。
文件信息维护模块算法流程如图5所示。
组件为每一个业务创建一个文件监视对象,该对象可以实时监视该业务所包含的文件系统,并将所有的文件的变动情况存储于对象的队列中。文件信息维护模块遍历所有业务,并循环遍历该业务中的变动队列,遍历的同时检查该文件是否处于正常状态,如果处于非正常状态则将该变动信息置于队列末尾,若处于正常状态则处理该变动信息,检查当前组件身份是否为源机,如果是目标机,则不需要处理,如果是源机,则生成UDP变动包并广播通知其他目标机,其他目标机回归根据变动包来主动获取一次文件信息,其余时候则是定时获取。
2.3.3 文件同步模块设计
该模块主要是用来定时向源机获取文件信息,并与本地文件信息列表进行比较,并根据相关规则决定是否同步该文件。
具体算法流程如图6所示。
组件定时判断自身的身份状态,如果是源机状态,则不需要进行处理,如果是目标机,则向目前网络环境中的当前业务系统的源机发送文件信息请求,文件信息包括文件路径、文件hash码、文件当前状态等一系列的内容,目标机收到源机的回复后,和本地的文件进行比较,如果发现本地文件不存在或是和源机的hash码不一致,则说明源机的文件发生了变动,需要下载对应的文件并覆盖本地文件,这里需要注意的是,当源机被目标机下载文件时,防止多个目标机同时下载相同文件时发生读写失败的问题,需要约定在同一业务中,同一时间只允许最多有一个文件在被下载,在文件被允许下载的时候,需要将该文件状态设置为正在同步状态。
3 系统应用成果
系统开发完成后,笔者将该系统应用于实际的监控系统中,软件能够正常同步两台监控主机和备机之间的配置文件,并且同步的实时性较高。同步的文件可以指定特定的后缀,文件的变动类型包括新建、修改、删除、改名,同时也支持子文件夹的目录结构。在业务系统没有特殊的通信接口的环境下,文件同步组件很好地弥补了不同系统间的文件保持同步的功能,试验测试结果验证了该系统的优势和实用性。
4 结 论
基于煤矿安全监控系统的文件同步组件的设计与实现,弥补了煤矿安全监控系统的安全盲点,使得安全监控系统的使用更符合安全规程,进而确保煤矿生产的安全性。该方案的設计不仅具有实践意义,而且也能为将来的监控系统的发展提供一定的参考意义。
参考文献:
[1] 丁贤林.基于SVN的项目文档管理系统实现 [D].成都:电子科技大学,2012.
[2] 薛一波,易成岐.云存储 [J].中兴通讯技术,2012,18(1):57-60.
作者简介:丁瑞琦(1981-),男,汉族,江苏常州人,硕士研究生,研究方向:煤矿监控类软件设计与研发。