仇凤娟 李夏
摘要:煤矿井下人员定位系统是保证煤矿生产人员安全的必要软件,为了解决当前的人员定位系统软件不能很好的满足大数据精确定位的需求。本文中介绍的新版人员定位软件,抛弃了原有封闭式软件结构,采用微服务架构升级人员定位系统。微服务架构是把整个的大型软件拆分为几个甚至几十个微服务,微服务之间通过中心软件进行调度和通信。这种微服务架构的软件,可以大幅提升数据的存取性能,能够较好的满足TB级数据的存储需求。微服务架构消除了原有架构中数据库集成造成的紧耦合,提高了软件系统灵活性,降低了系统维护和升级的难度。总体来说,采用微服务架构设计的煤矿井下人员定位软件,大幅提升了数据的存储和读取性能,实现了软件功能间的松耦合,保证了人员定位软件的精确定位数据的需求。
关键词:微服务架构;人员定位软件;解耦合;提升存取性能;TB级数据
中图分类号:TP732 文献标识码:A 文章编号:1007-9416(2020)02-0170-03
煤矿事故给国家财产造成了巨大损失,更是危及了公民的生命安全,并造成严重社会影响。为此,必须建立一个煤矿井下人员定位系统,能实时提供人员位置情况,明确的掌握井下人员分布情况,可以对下井人员进行有效监督,从源头上杜绝安全隐患。尤其在有危险发生时,可以第一时间提供人员的位置,保证救援的及时性。因此,使用煤矿人员定位系统能有效的保证煤矿生产人员的生命安全,是大家公认的事实。我国现有的人员定位系统分为三类。第一类是基于射频识技术的产品,包括射频识别卡和读卡器两部分。第二类是基于WiFi技术的产品,这类产品是在井下建立以太网和网络基站,建立起覆盖全井下的网络。第三类是基于计算机技术,与GIS系统相结合的人员定位系统,具有多功能、可视化和图形化的特点,是现在采用较多的人员定位系统。
随着时代的发展,计算机技术的不断进步,传统的人员定位系统已经不能满足现在的大数据需求。大量的数据造成读取速度缓慢,影响数据的分析结果,并且在讲究个性化的时代,客户的需求各种各样,因此造成软件的频繁修改和维护。为此,设计一套新的人员定位软件架构,有够效的满足大数据的需求,以及不断变化的修改和更新需求是十分有必要的。
1 现有煤矿人员定位系统的情况
图1所示为传统的人员定位软件结构,可以清楚的发现所有应用服务都要访问中心数据库,所有服务都是以数据库为中心进行的。
随着信息技术的不断发展,原有的人员定位系统已经不能满足现有客户的需求,主要表现在以下几个方面。
1.1 数据库结构满足不了现有需求
现有的数据库结构是基于十年前的设计基础,当时来说,数据量小,数据更新不频繁,可以很好的满足当时的需要。但对于如今的大数据时代来说,尤其精确人员定位系统每年要产生TB级的数据,原有数据库架构的性能已经不能满足高效存储和快速查询的业务需求。
1.2 系统架构造成维护困难
原有的人员定位系统采用了基础数据库的模式进行集成,这种方式虽然看起来的直观,结构简单,但随着服务的增多,会让工程中代码的耦合度无可避免的越来越严重,造成其内部功能的代码数量变得庞大而导致逻辑变得十分复杂,增加了后续维护的难度。
1.3 造成系统修改增加功能困难
原有的系统架构是密闭的,每次修改或增加删除功能都十分的繁琐,不仅需要更多的时间处理各种模块间的逻辑关系,更是需要大量时间进行测试及部署,对于新接手的人员来说,根本无法修改,以至于软件的后续性很差。
对于以上的不足,原有架构上的修补已经不能满足现有需求。需要开发新的程序架构,以满足高通量、大数据处理的需要。
2 微服务架构
2.1 微服务架构介绍
微服务的最先提出者是Martin Fowler,其核心理论是将一个复杂大型的单个应用程序,按照业务需求的独立性和使用频率,拆分为数个甚至数十个微服务,将功能分解到各个离散的服务中以实现对解决方案的解耦,服务之间互相协調、互相配合,为用户提供最终价值。微服务可以最大程度减少程序间的耦合程度,每个拆分后的服务都只需关注自身的功能需求并完成这些需求,每个服务都可以独立地进行部署,服务于服务之间是松耦合的,服务与服务之间可以通过RPC或者API等方式进行通信或被调用。可以通过扩展或增加单个服务扩展整个应用程序。
2.2 微服务与传统服务之间的区别
图2所示,传统软件设计是把所有的功能打包在一个WAR包里,所有模块化组件混合后运行在同一个服务中,部署在一个容器里,包含了DO/DAO,Service,UI等所有逻辑。只能对包含多个模块化组件的整体进程进行水平扩展,而无法对某个模块化组件进行水平扩展。当某个模块化组件发生变化时,需要对所有的模块化组件进行编译、打包和上线 。久而久之,模块间的依赖将会不清晰,互相耦合、互相依赖成为家常便饭。
传统软件架构的优点:
(1)集中式管理。
(2)功能基本不会重复开发,功能都在本地,没有分布式的管理和调用消耗。
(3)代码与数据中心化,在一个包中发布,运行在同一个进程中。
传统架构的缺点:
(1)效率低:开发都在同一个项目改代码,相互等待,冲突不断。
(2)维护难:代码功能耦合在一起,无从下手。
(3)不灵活:任何修改都要重构整个项目。
(4)稳定性差:一个微小的问题,都可能导致整个应用挂掉。
(5)无法进行水平扩充。
图3所示,采用微服务架构是把整个程序拆分成了三个独立的微服务,微服务之间是水平的松耦合关系,强调每个服务的独立性。每个微服务都是有功能意义的小型服务,无论是开发阶段、或者是部署和测试阶段都是独立的。无论是整个软件还是每个微服务,都可以进行水平扩展。每个微服务都有自己的存储能力,可以有自己的数据库,也可以使用统一数据库。微服务通过API等方式进行通信或者被调用,服务于服务之间使用IPC通信。
微服务架构的优点:
(1)系统是由微服务组建成的,每个微服务都可以独立进行升级,替换的组件。
(2)每一个独立的微服务都能够使用不同的语言和不同的团队进行开发,独立开发,独立测试,独立部署,独立扩展。只需要保证每个微服务都提供API服务,实现服务之间的通信即可。
(3)可伸缩弹性架构、当服务器压力过高的时候可动态注册服务,分摊服务器压力。
微服务架构的缺点:
(1)微服务架构可能带来过来的操作。
(2)链路变长,排查问题难度增加,分布式系统复杂不好管理。
3 采用微服务架构设计的人员定位软件
对比于传统的软件结构,考虑到现有人员定位软件对数据存储读取的需求及客户的个性化需求,以微服务架构为基础,设计了新版的人员定位软件,其软件结构如图4所示。
此人员定位软件采用微服务架构,把GIS服务、多系统融合、联网客户端、检卡台桌面、检卡台大屏、Redis内存数据库、Postgres主数据库进行水平架构,各服务之间是水平排列关系。如图所示,软件只是改变了系统的结构,并没有改变系统的功能。用Docker来运行各个微服务的情况下,部署在同一个网络上的各个微服务之间可以用名称而不是固定的IP来访问彼此,在一定程度上实现了解耦。每个服务都实现了独立性,可以独立开发、独立测试、独立部署及独立扩展。软件采用中心服务(API)进行各个服务间的通讯和调度,实现整个程序的功能。更可以根据配置来选择启用哪些微服务,比如要提供GIS服务,就启动Publisher和GeoServer两个镜像,要增加视频流服务,就启动Liveup镜像,只需要修改配置文件而无需修改代码,就可实现灵活部署。软件中设有主数据库和内存数据库,每个单独的服务并没有提供服务数据库,所有为服务都通过中心服务访问数据库。
采用微服务架构设计的人员定位软件的优点:
(1)把系统划分成许多相对独立的子系统,通过API集成各子系统可以独立开发、修改、验证。
(2)使用在互联网界应用广泛的开源组件 可以借鉴的成熟经验较多、技能通用性好的组件,更可以选用已有的成熟软件使用API集合在软件中 ,减少开发时间。
(3)引入分层的失效防御 可以更有效地发现系统异常。
(4)利用虚拟化技术来实现隔离和简化部署 各组件在虚拟环境中运行,不受系统环境变化影响 可以使用自动化工具实现快速部署。
采用微服务架构,从业务功能上来讲,大型应用分解为多个微服务,既保持了功能的完整性,又解决了原系统的复杂性,既把传统的人员定位软件拆分为6-8个微服务。从技术开发角度讲,可以分解给到多个团队并行开发,每个团队可以选择自己成熟技术的开发, 而且由于模块小型化,后续更新更为快捷。从部署的角度,每个微服务都是独立部署,这样不再需要协调服务部署的时候对于其他服务的影响,并且今后维护升级更为方便。以虹膜考勤模块为例,在客户提出需要增加虹膜考勤模块时,只需要在考勤服务中进行修改,出于对技术和时间的考虑,设计人员采用了现在市面上已有成熟技术的公司的产品,只需提供API,即加入软件中进行应用。此项操作很好的满足了客户的个性化需求,对于前期需求不明确的客户来说,微服务架构很好的解决的调研和开发之间的时间关系,避免了因为确认过程复杂,而耽误软件研发进度。并且对于开发后,客户总是提出各种更改,微服务更是可以避免因为需求更改而造成更改整个平台,进而引起的大量人员的时间和金钱浪费的情况。
采用微服务架构后,不仅软件维护及修改变得容易,更是满足了人员定位软件对于读写速度与查询速度的这一硬性需求。在大数据时代,数据量快速增长,读写与查询时,都会有大量数据参与,这就要求有快速的读写与查询速度,经过测试,微服务架构可以很好的满足这一需求。
表1和表2可以看出,无论是读写速度和查询速度,采用微服務架构的新版人员定位软件都是具有优势的,能够很好的满足大数据时代的需求。
4 结论
采用微服务架构设计的人员定位系统软件,把整个单一软件拆分成了8个微服务,服务之间实现了解耦合,即8个服务之间没有相互关系,服务之间依靠中心服务进行通信和调度,使存储和读取数据的速度大幅提升。采用微服务架构的人员定位软件系统满足了客户和开发人员的双需求,更是满足了大数据下的在数据读写与查询的时间需求上,有着易修改,易发布,易更新,读写与查询速度快的优势。
参考文献
[1] 王仁龙.国内煤矿井下人员定位系统现状讨论[C].第3届全国煤炭工业生产一线青年技术创新文集,2008.
[2] 易敏.空间信息服务研究[D].上海:华东师范大学,2008.
[3] 周丹,雷晓玲,章民融.基于微服务架构的校车安全管理系统设计与应用[J].计算机应用与软件,2018,35(8):165-169.
[4] 杜尊.基于微服务的互联网金融平台设计与实现[D].北京:北京交通大学,2018.
One of Underground Coal Mine Personnel Positioning system method which is Based on Microservice Architecture
QIU Feng-juan1,2,3,LI Xia1,2,3
(1.Coal Science and Technology Research Institute Co., Ltd., Beijing 100013;
2.Coal Mine Emergency Escape Technology Equipment Engineering Research Center, Beijing 100013;
3.Beijing Coal Mine Safety Engineering Technology Research Center, Beijing 100013)
Abstract:Underground Coal Mine Personnel Positioning system is the necessary software to ensure the safety of coal mine production personnel. In order to solve the problem that the current personnel positioning system software which is not meet the needs of big data accurate positioning, the software architecture of personnel positioning system is modified and microservice architecture is used to upgrade the software. Abandon the original closed software structure, divide the software into several microservices, schedule and communicate through the center software. This kind of microservice architecture software can greatly improve the data access performance and better meet the storage requirements of TB level data. Microservice architecture relieves the tight coupling caused by database integration, makes the software system more flexible and easier to maintain and modify in the future. By using the micro service architecture design of the coal mine personnel positioning software, greatly improved the data storage and reading performance, realized the loose coupling between the software functions, and ensured the accurate positioning data requirements of the personnel positioning software.
Key words:microservice architecture;personnel positioning software;decoupling improves access performance;TB level data