基于微服务架构的工程数据中心设计与应用
2019-09-04沈旭伟王馨莹
文|沈旭伟 王馨莹
微服务架构是近年来新兴起的一种架构理念,核心思想是将一个大型的、复杂的应用,按照业务需求的独立性和重复使用的频率分解为多个小应用,每个小应用只需要关注与完成自身的功能要求,可以独立部署,使得应用与应用之间呈松耦合的状态。采用微服务架构,从业务功能上来讲,可以将复杂的大型应用分解为多个微服务,既保持了功能的完整性,同时也降低了系统开发的复杂性。
工程数据中心是项目建设全过程信息收集管理平台,是以项目为对象,工程编码为纽带,工艺系统、设备、装置性材料等为基本单元,有机关联设计、采购、施工、项目控制、安全质量、调试移交等过程性数据、信息、图纸、资料和三维模型等内容。伴随着工程建设过程动态生长的工程内容大数据仓库,不应该只是将数据一存了之,在完成系统架构搭建后,其中的信息和数据应当对企业有效提升项目管理水平发挥重要作用,同时也应当作为企业用于选项决策的重要数据来源,实现多途径的综合性管理运用。
基于此,将微服务架构理念与工程数据中心系统总体建设相结合,创新性的提出一种适用于大规模工程建设项目全过程数据收集、组织、管控及存储的微服务架构,并在此基础上进一步完善工程数据中心建设。
微服务架构设计
设计原则
在依据技术先进、系统实用、结构合理、产品主流、低成本、数据可维护等原则下,在系统性能、功能设计阶段遵循以下设计原则:
统一设计原则:统筹规划和统一设计系统结构,从全局、长远的角度出发,综合考虑数模组织、数模结构、存储体系,在原有体系结构的基础上优化、再造工程数据中心体系结构。
统一标准原则:系统的建设需遵循大规模工程建设数据标准,从源头确保工程数据规范、品质,为工程数据源有效应用提供数据基础。
良好的可扩展性原则:支持快速开发/重组、业务参数配置、业务功能二次开发等多项开发服务,使系统可以支持未来不断变化的特征,以保证工程数据中心具有较长的生命力及较高的可扩展能力。
安全性和可靠性原则:通过技术措施,保证数据安全一致、高度可靠的同时,提供多种检查和处理手段,保障系统的准确性。针对不同的安全等级层次制定相应的安全策略、可靠性策略保障系统的稳定运行。
用户操作方便原则:系统提供统一的界面风格,能够为用户群体分组,并为其提供权责一致、可定制、易于使用的操作界面。
适用性原则:保护已有资源,急用先行。在满足应用需求的前提下,尽量降低建设成本,尽可能地做到边建设、边应用、边收效、边发展。
设计方法
工程数据中心是实现大规模大数据存储、筛选、查询的数据集合,为合理展示工程结果性数据,在先期建设的基础上,工程数据中心拟采用快速原型法结合面向对象法的方式,合理规划并设计系统体系结构,形成2D/3D数据联动展示等功能模块。
快速原型法。快速原型法通常简称为原型法或迭代法,其核心是用交互的、快速建立起来的原型取代了形式的、僵硬的(不允许更改的)的规格说明,实际用户通过在计算机上实际运行和试用原型系统而向开发商提供真实的、具体的反馈意见。
需求定义后,利用AxureRP、Adobe Photoshop等专业的快速原型设计和制图工具提供的可视化设计环境,快速地建立一个工程数据中心实例演示模型,交付系统验证,需求优化、补充、完善说明后进行新一轮实例模型开发。反复进行以上过程,直到得出工程数据中心的“精确解”,贴近系统开发的实际需求,为后续微服务技术架构的软件开发应用提供设计基础,快速原型法开发工作流程图见图1。
微服务技术架构法。过去几年来,微服务架构广泛流行于工程软件的开发阶段。有别于开发巨大的单体式应用的常规模式,微服务架构将系统开发分解为小的、互相连接的微服务,以实现对解决方案的解耦。一个微服务完成某个特定功能,比如文件上传,用户管理等。
工程数据中心的建设采用了这种微服务架构模式,通过合理的业务类型划分,分门别类地将开发服务划分到不同的开发模块中,以实现专业性、系统性开发,达到高扩展性的同时,做到服务调用关系层次清晰分明的开发效果。
采用微服务架构技术,工程数据中心获得了如下的开发优势:一是易于开发和维护。由于微服务架构出的开发模块相当于一个独立单元,因此开发期间只需关心这个模块的逻辑关系,代码量和逻辑复杂度都会显著降低,从而易于开发、维护。
图1 快速原型法开发工作流程图
图2 系统基础架构图
图3 大数据处理结构
二是局部修改容易部署。在系统开发过程中当某个模块出现问题时,只需对其进行修复后重新启动该模块即可。部署简单易用,省去了重启整个项目的时间。
三是技术栈不受限。每个服务都能够由专注于该服务的团队独立开发。只要该服务符合REST API的形式,开发人员可自由选择自己擅长的开发技术,大大提高了软件开发技术的融合度。
四是独立按需伸缩。每个服务可以独立扩展,可以根据每个服务的规模来划分软件开发区块大小,无需考虑软件开发本身的程序量,做到功能按需划分、按需部署的效果。
结构设计
工程数据中心是承载大规模工程项目结果性数据的信息化平台,采用标准的B/S系统架构模式,对大规模数据开展有效组织、管控、存储,形成有效的数据集。通过面向对象入手,抽取逻辑关系,规划并设计出符合现有工程数据中心结构的系统层、系统业务层、业务层和应用层的逻辑模型及关联关系。
微服务技术栈Spring Boot/Cloud,将数据存储、高速缓存、业务服务、安全管理、运维整合在一起。形成集开发、配置、扩展较灵活的分布式系统,如图2所示。
SpringMVC是一种基于Java的轻量级Web框架Web MVC设计模式的请求驱动类型。通过使用了MVC架构模型,将Web层进行职责解耦。基于请求驱动类型指的就是使用请求-响应模型简化开发。
Spring Data是一个专为数据访问提供熟悉、一致、基于Spring的编程模型,同时仍然保留底层数据存储特性的开源框架。它使得使用数据访问技术、关系和非关系数据库、Mapreduce框架及基于云的数据服务变得更加容易。这是一个包含许多特定数据库子项目的伞状结构。
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统的开发工作。譬如服务注册发现、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以使用Spring Boot的开发标准统一开发、部署。
ELK是三个开源软件的缩写,分别表示:Elasticsearch、Logstash、Kibana。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。Kibana也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
图4 大数据检索架构
工程数据中心系统设计
性能设计
工程数据中心需集成设计、采购、施工、调试等工程项目建设所有应用系统的数据,并将2D数据及3D模型通过浏览器进行前端界面的联动展示。因此,工程数据中心系统对性能具有较高的要求,势必形成适合工程数据中心日常使用的大数据架构模式。
大数据结构设计。基于微服务架构的工程数据中心,底层结构采用Hadoop大数据文件存储系统,Hadoop的核心是采用HDFS、Mapreduce技术的大数据应用。
Hadoop最底层采用HDFS以存储Hadoop集群中所有存储节点上的文件,存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。Hadoop框架为工程数据中心系统提供了透明、可靠的数据管理模式,同时也为工程业务数据的的挖掘、分析提供了良好的基础,形成了以大数据集为核心服务决策模式的技术基础。
在工程数据中心的底层服务设计中,Mapreduce的最主要作用在于对数据库的数据集切块、分割为若干独立的数据块,并以完全并行的方式处理,形成基础数据集,形成对大数据结构的独立部署模式,有助于大数据集的合理获取、存放管控,如图3所示。
大数据查询设计。由于工程数据中心接入的数据总量巨大,为了提升数据查询效率,本文利用索引信息去操作特定的数据,避免全表扫描。在数据存储方面,rocksdb将数据库中的所有数据划分为7大块,分别为def i nition、document、primary、edge、vpack、geo、fulltext,按逻辑存放于区块划分好后的数据存储池中。大数据检索架构见图4。
数据采集层:解决数据源头问题。ESB企业服务总线提供了业务系统间、工程数据中心于业务系统间的数据交互接口,工程数据中心的数据通过ESB企业服务总线获取。
基础存储层:基础数据存储。定义好库—表结构、关联关系、主键、外键结构来存储结构化数据、非结构化数据,采用ArangiDB键值对(key-value)的方式存储数据集。
ES检索层:实现基础数据同步。库—表分散构模式,形成对数据ES检索的指针设定。
应用层:实现ES全文检索、Tag检索等对外服务。通过分类统计、检索排序操作,形成可视化数据展示。
功能设计
基于微服务架构的工程数据中心在功能设计上采用了分层的结构模式,见图5。系统分为四层结构,各层的功能说明如下:
系统层。包括ArangoDB数据库、Redis缓存数据库、HDFS分布式文件系统、Docker容器等。
系统业务层。包括微服务架构的基本和重要功能,比如服务注册、发现、负载均衡、容错、熔断、限流、降级、网关、日志管理等。
业务层。在本项目中,主要划分3个主要类别,分别是Foundation、Base、3D。Foundation包含通用功能和业务功能,其中业务功能包括文件文档管理、项目管理、几何模型管理等;Base主要包含了用户管理和权限管理的相关功能;3D主要包含3D相关的解析和计算模块。
应用层。指本项目的应用,工程数据中心人/机交互UI界面等。
工程验证及应用效果
基于微服务架构的工程数据中心系统已经在国内AP/CAP系列核电工程建设项目中实地运用,并在3D模型展示及数据质量反馈等方面取得了良好的应用效果。
3D模型展示应用
3D模型解析及展示是工程数据中心建设的重点,通过WebGL技术展示3D模型全貌,使3D用户不再受到地域、时间、空间、设备的限制,只需Web浏览器就可实现数据的查看,最终形成2D/3D的数据联动的查询效果。
3D基础结构。3D模型展示主要分为两个子服务,前端展示服务和后端处理服务,其基础结构如图6所示。
图5 工程数据中心功能结构图
图6 3D基础结构示意图
图7 WebGL前端渲染效果示例
图8 数据质量反馈流程
3DViwer(前端展示服务)主要用来从最终的效果上展现3D模型全貌。例如:隐藏、显示、高亮、修改颜色、剖切、测量等。3DEngine(后端处理服务)主要实现3D模型的数据解析服务,将不同格式的模型数据进行分析、解释,生成前端可供展示的数据格式存储起来。
3D数据处理。3D数据处理过程是先通过获取的3D设计模型,进行模型再造,使其符合工程数据中心准入标准,存放于非关系型ArragoDB数据库中的过程。
其中3D模型再造是一个复杂的系统工程,包括将原始3D模型的模型框架与设计参数剥离、整合,并与已有的2D工程数据进行定义、关联,形成2D/3D联动的大数据集。同时,为了快速查询数据,前端服务设置有缓存加密区,确保3D模型数据一次获得、多次使用、无需充分装载,提高用户的数据使用体验度。
工程数据中心将建筑物信息和采购、施工、安全、进度、费控、标准工程量信息等信息通过物项编码、Tag位号等主键进行串联,形成数据电厂网状结构。用户通过自定义查询条件,快速定位并查到所需工程信息,形成3D模型的渲染查询效果,如图7所示。
图9 主界面设计示意图
图10 3D数据展示示意图
图11 数据质量反馈界面示意图
数据质量反馈应用
数据质量反馈作为工程数据中心的重要功能构成,是影响工程数据中心运行的关键因素,直接关系到企业管理决策的成败走向。为使工程数据中心系统建设取得预期效果,达到数据决策的目标,就要求进入工程数据中心系统的数据是可靠的,能够准确反应客观事实。
反馈流程。本文首次引入并采取数据源校验机制,来对进入工程数据中心的数据进行事前控制。根据业务特点,开发人员可以对上传的XML文件制定合理的数据校验规则,执行设定的数据检查机制,确保在工程数据中心存放的工程数据绝对权威。
符合格式要求的数据会顺利通过校验规则自动传入工程数据中心,对不满足校验规则的数据会被阻止传输。同时,系统执行预先设定好的数据反馈机制,将非法数据进行列示,形成数据质量报告,通过ESB接口反馈给上游数据源。图8为数据质量反馈的数据流程。
处理步骤。数据质量反馈模块的应用,以校验和跟踪各个业务系统数据质量问题为过程,最终以提高业务数据质量为目标。以下是数据质量反馈处理步骤:
第一步:根据预先配置好的检查规则对数据质量检查;第二步:系统根据检查结果生成数据质量报告;第三步:出现的错误数据,工程数据中心通过ESB接口分别向上游业务系统推送校验结果;第四步:根据数据质量检查结果,利用数据质量管理有关的知识和经验,各业务口对数据质量问题进行处理。
展示界面应用
系统主界面作为整个系统的门户页面,是用户登录系统后的第一个页面。主界面为用户提供了工程数据中心4种不同类型数据的快捷入口,分为空间位置、工艺系统、模块及物项分类,如图9所示。通过点击不同的分类即可快速进入到对应的数据展示界面,如图10、图11所示。
近年来,微服务架构以其众多优点在互联网应用中被广泛采用,如何在微服务架构下保证数据质量及安全,并推动数据价值的创新与可用性再创造具有较大的现实意义。基于微服务架构技术,结合AP/CAP系列核电厂工程项目建设的需求,创新性的设计并实现了基于微服务架构的工程数据中心系统,该架构可帮助组织深入理解数据治理的全貌,指导数据治理的应用和实践,是实现数据服务创新和价值再创造的重要支撑。