张洪亮
(1.中煤科工集团沈阳研究院有限公司,辽宁 抚顺 113122;2.煤矿安全技术国家重点实验室,辽宁 抚顺 113122)
目前,云计算、大数据等技术正在快速的向传统行业渗透,很多领域的企业也顺应时代的发展正在逐步转向大数据互联网领域。比如交通方面的大数据云计算应用,道路上的车流拥堵情况,路面上车运行状况都可以根据大数据云计算进行监控,以及车主根据手机导航就可以获知前方哪段道路拥堵,哪段道路有交通事故出现,你可以选择适合的路线轻松避开这些道路。大数据、云计算通过全面的信息和数据分析预测为人们提供便利的生活条件。另外还有众多传统行业,都急需大数据、云计算技术来改造,比如传统银行以及保险和房地产业等等均选择大数据、云计算作为未来战略转型升级的重要支撑载体。
那么煤矿企业,作为国家重点安全生产治理企业,随着信息化程度的不断加深,具有庞大的各类数据信息仓库。 煤矿企业的各级管理部门急需将所管辖的煤矿的各类安全生产数据进行采集汇聚、智能分析、并以图形化的方式进行直观展示。以大数据、云计算、人工智能为基础,大数据分析为目的;云计算为载体;人工智能为工具。实现数据的互联互通、信息共享、深度挖掘,为企业的管理决策起到指导性作用,从而达到对煤矿企业安全生产的有效监管。
但在我国煤矿的发展经历了从机械化到数字化、再到智慧化转型的过程中,系统规模、复杂程度、访问量等也在经历着几何级增长。煤矿企业需要投入大量基础设备资源、软件资源、人力资源进行系统的建设,但由于煤矿企业人才匮乏,随着系统的复杂性逐渐加大,煤矿企业凭借一己之力已经很难对系统进行及时有效的维护。为此,构建了基于微服务架构的煤矿安全监管云服务平台[1-4],提出云服务平台的概念,将软件即服务(SaaS)的应用模式引入到煤矿的安全监管中来,将产品向服务化转变,用户只需按需付费,无需投入大量的软硬件设备、维护成本,即可享受到专业的、稳定的软件平台服务,打破煤矿企业需一次性投入大量资金、人力、物力及维护困难的重重壁垒。
基于微服务架构的煤矿安全监管云服务平台从多租户的角度进行设计,实现不同企业数据的隔离。引入云服务的运营模式,满足不同煤矿企业入驻、按需付费的需求。引入互联网、云计算的技术架构,结合私有云、公有云、混合云的各自优缺点,构建稳定的云计算平台,提供稳定的、可扩展的基础设施资源。其次,根据煤矿用户的业务需求,构建集用户管理、单点登录、数据实时监测、统计分析、预测预警等各功能模块于一体的软件服务层。同时软件层基于微服务架构进行设计,实现不同业务逻辑的解耦、分布式部署,达到服务的高并发、高可用、高扩展性、维护方便等目标。
平台总体架构如图1。
图1 平台总体架构Fig.1 Overall platform architecture
系统总体主要由边缘层、云计算层、软件服务层、应用层组成。边缘层由前端数据采集、分析装置组成,一般部署于煤矿,实时获取各安全生产系统数据,并加以边缘计算、分析,最终将数据上传至系统数据中心。整个系统需要强大的基础设施作为云计算的资源池,此处考虑采用私有云兼公有云结合的方式,即混合云,来进行云计算层的建设,满足资源可弹性扩展的同时,又能保护数据的安全性。软件服务层采用微服务架构,实现服务的分布式部署,并综合运用负载均衡、反向代理等技术来实现服务的高可用,服务资源的弹性扩展。最终应用层采用响应式的可视化设计,实现基础数据管理、业务逻辑管理、租户管理、单点登录等模块设计,实现在不同尺寸屏幕上的自适应展示。最后通过Nginx 反向代理服务器来实现最外层的负载均衡,提供高并发的、高可用的数据访问。
在谈云服务运营模式之前,不得不说目前煤矿行业软件平台主流的运营模式,在煤矿企业用户想要上线一套安全监管类平台的时候,平台厂家首先要在煤矿企业部署硬件服务资源、网络资源等,形成不同规模的服务器集群,再部署相应的运行环境、软件平台等。经过一段时间的安装部署、试运行,才能使系统稳定下来正式上线运行。系统运行之后,一般煤矿企业并不具备后期的运维能力。当出现问题之后会联系厂家现场解决或通过远程维护的方式进行处理。由此可见,目前的煤矿行业软件平台的运营模式存在安装调试周期长,后期长久稳定运行无法保障,前期投入成本较高。
云服务运营模式如图2。云服务工作模式是与当前主流运营模式截然不同的一种运行模式,具有上线快、零维护成本、前期投入低、系统稳定等优势。用户只需按需付费,即可享受相应的功能服务。煤矿企业首先申请开通软件服务,提交企业信息、选择需要的功能模块、服务期限,并支付相应费用。软件平台厂商在后台进行确认,并开通租户账号。最后,只需在煤矿企业部署边缘层数据采集与处理上传软件即可实现相应数据的上传服务。数据上传成功之后,用户即可通过该平台进行本企业的基础数据管理,使用平台的业务逻辑功能,完成本企业数据的实时监管。
图2 云服务运营模式Fig.2 Cloud service working mode
边缘层的数据采集系统应具备兼容多种数据协议格式及多种接口方式。煤矿在用的各类安全生产类系统生产厂家各异,提供的数据协议格式、接口也不尽相同。
常用的数据交互接口有FTP、OPC、UDP、Mod-Bus、WebAPI 等,协议格式有国家煤矿安全监察局出台的煤矿感知数据接入规范、也有各省的协议标准、各系统厂家的企业数据传输标准等。面对不同的数据交互接口和协议规范,边缘层数据处理程序应采用面向接口的设计方式,标准化数据采集接口、解析接口,针对不同的数据交互接口实现数据的采集与解析。每种系统的数据处理结果应统一分析处理,并最终上传至云平台。边缘数据处理与上传如图3。
图3 边缘数据处理与上传Fig.3 Edge data processing and uploading
云计算是一种按使用量进行付费的商业模式,对外提供基础设施及平台服务。目前按照部署方式可以分成公有云、私有云和混合云。公有云由云服务商提供底层设施的运维,并将云端资源向大众用户开放,只需按需付费即可租赁并使用云端资源。具有成本低、无需维护、使用方便、易于扩展等优势,适应个人用户、互联网企业等大部分客户的需求。但公有云也存在一定的安全顾虑,数据放在外面始终不如放在自己家放心,而且也出现过公有云泄露数据事件,给公有云安全蒙上了一层阴影。同时也存在性能超卖问题,导致租户性能达不到购买需求。私有云为云服务提供商特定客户构建的基础设施资源,IT 资源仅供该客户使用,由于私有云模式下的基础设施在客户私有环境构建,与外部分离,因此数据的安全性、隐私性相比公有云更强,满足了对数据安全要求较高的客户的需求[5-7]。
根据公有云、私有云的优缺点,该安全监管云服务平台采用混合云的方式构建。数据中心构建于企业私有云之上,来保证用户的数据安全。软件平台则构建于公有云之上,利用公有云易于扩展的特性,满足随着用户量的增长对高并发请求的及时响应,满足峰值时期的IT 资源需求,不必一次性投入大量的服务器资源。混合云平台如图4。
图4 混合云平台Fig.4 Hybrid cloud platform
首先,需利用专网或公网打通私有云与公有云之间的连接,实现互联互通。其次,私有云的建设可采用VMware、OpenStack 等操作系统自行进行虚拟化,相对来说维护成本高、需要有成熟的技术团队来维护。更优的方案是选择云厂商的云计算操作系统进行私有化部署, 能够具备更优的商业化解决方案和运维支持。
数据中心构建于私有云之上,对外提供数据交互能力。包括企业数据、用户数据、平台基础数据、业务逻辑数据。其中以关系型数据库为主,如MySql、Oracle、MSSQL 等。以缓存数据库为辅,如Redis,实现热点数据的缓存,加快数据读取速度。从数据库类型、部署结构上主要分为分布式存储、分布式缓存。
1)分布式存储。从数据结构特点上进行拆分,包括主数据库、业务逻辑数据库。其中主数据库里的数据是整个平台的基准数据,该部分数据变化较慢,数据量较小。业务逻辑数据库存储煤矿企业日常的安全生产相关数据,数据量较大,且日益增长。考虑按业务系统类型进行分库设计,实现数据隔离与性能优化。同时由于各业务系统安全生产数据单表增长迅速,尤其是密采类数据每个月亿级别的增长,因此考虑对单表进行拆分,按日期生成规则,定期生成新表存储数据,优化查询、存储性能,也要考虑不同租户对应不同的数据库,实现租户的数据隔离。同时要保证数据中心的高可用,需要构建数据库集群。每个数据库都采用多节点设计,每个节点之间进行数据的同步,保证任何1 个节点宕机,都会有1 个完全一样的节点顶上。提升系统的高可用和性能[8-10]。
2)分布式缓存。为减轻数据库的访问压力,提升用户的响应速度和体验。构建分布式缓存,用于缓存用户常用的热点数据。工作中常用的分布式缓存技术有Redis 和Memcached 2 种,前者具有集群概念,可以很好地构建服务端集群模式,来实现分布式缓存的高可用;Memcached 则不具集群概念。因此此处将采用Redis 构建分布式缓存集群,同时要求虚拟服务器具备足够的内存资源[11]。
微服务概念是近些年开始流行的一个软件开发、部署方案。目的是通过将功能分解到各个离散的业务逻辑服务中以实现对解决方案的解耦。同时利用后期的维护,避免升级或完善1 个服务而影响系统其他部分的正常运行,后期运维也将变得方便快捷,使产品交付也变得更加简单。微服务集群架构如图5。
图5 微服务集群架构Fig.5 Microservice cluster architecture
1)微服务技术体系。微服务核心技术架构体系以Spring Cloud 作为主流,Spring Cloud 利用Spring Boot 的开发便利性,巧妙地简化了分布式系统基础架构的开发,如服务注册发现、配置中心、消息总线、负载均衡、断路器、数据监控等,做到一键启动和部署。同时由于Spring Cloud 所依赖的组件Eureka、Feign、Hystrix、Config 等面临停更。选择替代方案将是最好的选择,SpringCloudAlibaba 的Nacos、Sentinel 等能更好的与Spring Cloud 融合,共同构建微服务架构体系[12-14]。
2)微服务构建。平台的微服务使用SpringBoot进行构建,以Nacos 作为注册中心和配置中心建立集群。通过OpenFeigh 组件实现微服务的调用,同时具备负载均衡能力。注意的一点是微服务的设计要尽量做到无状态,这样可以方便横向扩展。本系统的登录服务、注册服务、基础信息管理服务、业务逻辑服务都将设计成单独的微服务,业务逻辑根据接入的系统的数据类型不同分别设计单独的微服务,并形成微服务集群。
多租户系统的机构一般比较简单,创建租户以后,通过赋予租户角色权限,来达到控制租户操作权限的目的,主要包括3 个方面的管理内容。
1)应用管理。应用管理即平台的系统应用模块、功能模块管理。应用管理也是租户之间数据隔离的关键,根据租户的要求,赋予应用功能或定制的应用功能。定制的应用功能可基于租户进行特定的配置,具体所需功能需线下沟通,线上手动配置完成。
2)租户管理。租户管理,即实现租户信息的创建、修改、停用等管理操作,同时租户之间数据保持隔离,针对不同租户设置不同的操作权限。平台层面的管理员可获取所有租户数据信息,对租户账户、账户权限有直接管理权。
3)权限管理。1 个租户所拥有的操作权限与角色息息相关,当角色的操作权限设置完成后,再将角色赋予到租户账号上,该租户账号就拥有了指定功能的权限,租户操作权限的修改,只需重新设置所关联的角色即可。同时每个租户账号默认具备创建本企业使用用户账号的权限。同时也具有租户下所有用户账号所使用的的功能权限管理。
1)云平台前端。云平台前端采用JS、CSS、HTML5、Jquery、BootStrap、Vue.js 等技术及组件设计,并采用模块化的、前后端分离的设计理念进行框架设计。前后端通过AJAX 实现数据服务的调用,通过JSON的数据数据格式实现数据的交互[15]。
2)用户请求负载均衡。至目前,在用户通过终端浏览器请求云平台数据的时候,只能向1 台web 服务器发送请求,无法实现请求层的负载均衡,也无法实现web 服务器的集群。在此引入反向代理的概念,通过反向代理转发用户请求到不同的web 服务器,从而实现负载均衡策略,实现web 服务器的横向扩展。常用Nginx 软件来实现以上需求,通过配置一定的负载均衡策略来实现平台的负载均衡。当然随着访问量的无限增长,单台Nginx 仍然无法满足高并发访问量的需求,以及会存在单点故障的问题。可通过LVS 或F5 工作在网络第4 层的负载均衡解决方案来进行负载均衡,并做虚拟IP 的漂移来解决单点故障的问题。本文不做详细阐述,有兴趣可以进行深入研究[16]。Nginx 负载均衡策略如图6。
图6 Nginx 负载均衡策略Fig.6 Nginx load balancing policy
构建了基于微服务架构的煤矿安全监管云服务平台。设计了通用的数据采集及上传接口;通过混合云的方式构建了基础的云计算平台,实现了资源的安全保障及可伸缩扩展;构建了数据中心,保障了数据的安全存储,实现了数据的高可用、集群访问服务;构建了分布式缓存,实现了热点数据的快速访问,保证了数据库的稳定运行;构建了微服务的架构体系,实现业务逻辑服务解耦及高可用、负载均衡。通过建立了一系列保障措施,来支撑整个云服务平台的稳定运行。
基于微服务架构的煤矿安全监管云服务平台,实现煤矿安全生产相关系统数据的接入,实现经营模式从卖产品到卖服务的转变,降低煤矿企业的前期投入及运维成本,增强煤矿的安全监管能力。