APP下载

微服务架构的测量设备溯源系统设计

2021-06-11郑晓健郑晓兰

计算机时代 2021年5期

郑晓健 郑晓兰

摘  要: 介绍一种微服务架构的测量设备溯源管理系统的设计。通过微服务架构与传统单体架构的对比,分析了微服务架构的优势和设计原则,将其运用于企业测量设备溯源系统中,实现了系统的设备管理、设备检定管理、设备溯源审批管理和系统信息维护等功能。由于采用Spring Could微服务架构,使得系统具有良好的可扩展性,方便后期维护。

关键词: 软件体系结构; 微服务架构; 分布式应用; 测量设备溯源; Spring Could

中图分类号:TP393          文献标识码:A     文章编号:1006-8228(2021)05-06-04

Design of measurement equipment traceability system of microservice architecture

Zheng Xiaojian1, Zheng Xiaolan2

(1. School of Electrical and Information Engineering, Oxbridge College, Kunming University of Science and Technology, Kunming, Yunnan 650106, China; 2. Yunnan Institute of Metrology and Testing Technology)

Abstract: This paper introduces the design of a measurement equipment traceability management system of microservice architecture. By comparing the microservice architecture with the traditional monolith architecture, the advantages and design principles of the microservice architecture are analyzed. The microservice architecture is applied to the enterprise measurement equipment traceability system, and the functions of equipment management, equipment verification management, equipment traceability approval management and system information maintenance are realized. Due to the use of Spring Could microservice architecture, the system has a good scalability and is convenient for later maintenance.

Key words: software architecture; microservice architecture; distributed application; traceability of measurement equipment; Spring Could

0 引言

近年来随着供给侧结构性改革的推进,企业对产品质量的把控能力的要求愈加重视,对生产环节中质量监控的重要设备,测量仪器的监管更加严格。在这方面国家计量法有相应规定,所有企事业单位的测量仪器要定期检定,要求达到国家量值规定的统一标准,并出具检定证书后方可进入下一使用周期,同时要求测量仪器在整个使用期内的检定结果都能追根溯源。在此情况下,各企业检定部门对测量仪器溯源管理系统有着广泛的需求。

目前一些大中型企业正推行一体化管理战略,对于信息系统在其功能扩展、快速迭代、快速部署、持续可用性等方面的要求越来越高。然而,企业已有的信息系统多数是采用传统的单体式架构开发,要实现期望的目标还存在较大距离。本文采用基于Spring Cloud微服务架构[1-3]对测量仪器溯源管理系统进行架构设计可以有效实现既定的目标。

1 微服务架构

传统Java Web架构以单体式架构为主,用于开发小型系统比较适合[3-5]。将系统的所有功能打包为WAR包或jar包里,部署到Web容器中。但隨着系统功能的扩展、业务需求的扩展和迭代,单体应用会变得越来越复杂[6-7],并造成项目的维护和部署的工作量增加[7-8]。因为代码的藕合能使修改相关业务的代码时需要修改整个项目,而且由于结构的问题,鲁棒性和稳定性也会很差[8]。

微服务架构设计将企业应用拆分,解耦成为功能独立的一系列服务实体,而且每个服务可以单独开发和迭代,再以独立的进程形式部署,各微服务间通过统一的、轻量化的通信协议进行交流,实现协同工作。从而使采用微服务架构设计的软件产品交付更加方便,实现有效地拆分应用,快速开发和部署系统的目的[8-10]。微服务架构和单体式架构对比[11-13]如图1所示。微服务架构具有的优势已经在Amazon、Netflix、百度外卖、上交所、58到家、腾讯等国内外企业的分布式应用系统的开发[14-16]实践中得到体现。

1.1 分布式应用

应用系统被拆分成多个微服务的子系统,每个微服务实现一项业务,构成具有完整功能的分布式应用系统。每个微服务专注于单一功能,通过良好的接口清晰地表述服务边界。比如测量仪器溯源管理系统中的测量设备管理服务,只需要处理测量设备的业务相关的逻辑。由于各个微服务功能单一,所以开发复杂度也降低,因此一些小型开发团队可以采用渐近式的开发方法,逐个的开发微服务,并保持较高的开发效率。比起SOA,微服务的粒度更小,甚至每个操作都可以成为一个微服务,让功能边界更加明确。

1.2 高度内聚自治

每个微服务从开发、测试、部署、运维、扩展升级等都可以独立完成[17-18],包括数据库也可以在每个微服务中独立设置。在开发上,每个微服务的业务逻辑必须密切相关、高度内聚,使模块的代码量和逻辑复杂度得到控制。每个微服务有一套完整的开发流程,使成为独立的项目,便于进行项目管理。可以进行异构开发,各个服务可以选择不同技术平台,使得每个微服务的实现与其他服务无关,服务之间松散耦合,每一个服务可以采用最高效的、最适合的开发语言、工具和技术,实施高效地开发。

微服务在物理实体、服务、数据存储上独立部署,还要考虑各个微服务的负载平衡,实现分布式应用的目标,使之能在短时间内部署为具有高可拓展性和可靠性的应用。

在运行和维护方面,独立部署使得可以对各微服务进行独立维护,维护范围和复杂度都可以降低。另外,微服务间的通信协议统一,尽量采用异步模式进行通信。

1.3 可伸缩

由于各服务之间是高度解耦的,所以可根据实际情况,按需分配资源,进行功能扩展和裁剪,并且不会影响其他服务,提高了系统的伸缩能力。

1.4 高容错性

由于各个微服务为相互独立的进程,某个微服务存在的故障不会影响到其他微服务,不易产生单体架构系统常有的一个功能失败整个系统大面积瘫痪的局面。在微服务平台中如有故障的微服务停用,其他微服务照常能够运行。系统维护时只需要集中精力对出问题的微服务进行修复,缩短了恢复的时间,使问题的蔓延限制在最小范围。

2 分布式微服务架构设计

2.1 功能模块设计

系统功能模块设计的主要任务是拆分微服务,也是微服务架构设计的重点。拆分时应围绕业务功能进行,原则是保持每个功能的高内聚和低耦合[6-8]。各个微服务的粒度以功能相关性为基础,尽量减少各微服务间的依赖性,保证各个微服务的业务逻辑的独立性和完整性。可以采用分析业务依赖关系、设计公共业务微服务、系统业务微服务化的步骤拆分系统[8]。设计时,接口要明确,由于微服务相互会产生调用,为了避免由于微服务接口的变化而造成必须修改其他微服务的局面,应该考虑各种变化的可能性,使接口更加通用和灵活。

按照计量规程将测量设备的生命周期分为五个阶段:新购、待审、溯源监控、停用和退出,并且构成不间断的检定周期直至设备报废,而且各个阶段的任务独立。根据这些业务特点,按照企业用户提出的功能需求,系统的主要功能要包括测量设备建档、测量设备检定、测量设备溯源审批的全过程。本文根据用户提出的功能需求,将系统的主要业务拆分为:设备信息管理、设备检定管理、设备溯源审批管理、系统信息服务等。

⑴ 设备信息微服务

设备信息微服务负责将新购置的设备纳入溯源管理,涉及设备的信息维护全过程。主要完成设备信息的建立、查询、修改等管理,其中建立设备信息完成设备基本信息档案的建立。设备基本信息包括设备号、设备名称、出厂编号、购入日期、设备状态等。查询设备信息要求提供对系统中所有设备的基本信息的一般查询和组合模式查询。设备信息修改完成设备档案信息的维护。用户要求可以在多个检定点进行设备溯源管理,并保持数据一致性。

⑵ 设备检定微服务

设备检定微服务是设备整个生命周期中溯源管理工作的主要部分,包括:检定设备、审批新设备、查看到期设备、查询检定历史四项功能。检定设备时,通过简捷的查询方法快速查到要检定的设备,显示该设备的所有基本信息,然后查看设备的所有历史检定记录或停用记录,根据检定结果给出设备检定结论,建立設备检定记录。新设备审批时,同样先要查询到待审批的设备,然后根据检定结果和相关数据给出检定结论,建立审批设备记录。查看到期设备时,可以查看到溯源提前期内所有设备,查看设备待检情况和具体统计数据。查询检定历史时,可以输入不同条件查询设备检定记录,查看该设备的检定历史信息。

⑶ 设备溯源审批微服务

设备溯源审批微服务包括:溯源审批、设备监控、设备停用、设备退出、溯源记录等部分。溯源审批时,先查看设备基本信息和检定数据,给出审批结论,然后登记审批和溯源信息。设备监控管理目的是建立设备监控记录,记录设备监控信息。设备停用管理和设备退出要求可以查看系统中设备停用和退出记录,进行状态监控。

⑷ 系统用户管理微服务

系统信息维护微服务的主要功能包括:系统基础信息管理、用户访问权限管理等。

2.2 系统架构设计

本系统使用Spring Cloud框架实现。Spring Cloud的核心功能包括分布式/版本化配置、服务注册和发现、路由、服务于服务间的调用、负载均衡、断路器、分布式消息传递等。Spring Cloud是一系列框架的集合。它具有高质量、稳定性、可持续性、便捷性等特性,使用Spring Cloud架构可以节省系统基础模块的开发,并且可以很容易的进行微服务系统的实施。

本系统的前端通过Vue框架实现界面,后台由各个微服务组成的微服务群集构成,每个微服务之间相互独立。基于这样的结构实现了系统的部署,如图2所示。

服务发现框架Eureka负责实现SpringCloud的服务发现和管理功能,由服务注册中心、服务注册及发现,服务注册的接口三部分组成,网关和各个服务模块都需要注册到服务注册发现中心,实现服务注册和服务发现功能。系统由Eureka来获取注册的微服务,实现请求转发功能。Zuul是服务网关,所有到达Zuul请求或信息通过前、中、后三级过滤器实现灵活的双向路由,完成前端请求与后端服务的通信。网关通过路由配置来建立消息和微服务的对应,所有消息集中到网关,经由网关将消息转发到对应的微服务。负载均衡由Ribbon组件实现。Hystrix是监控和熔断器,通过服务接口设置的标签,实现对接口的监控。Hystrix Dashboard是监控组件,获取用户控制需求,监控各个服务运行情况。Feign是Ribbon和Hystrix的服务调用组件。系统的运行流程[18]是: