基于微服务架构的制造技术资源服务平台架构研究

2021-08-14 09:40:08薛皓辰柳先辉
科技管理研究 2021年14期
关键词:网关服务平台部署

薛皓辰,柳先辉

(同济大学电子与信息工程学院,上海 201804)

1 问题提出

现代制造业专业化分工越来越细,越来越多的制造企业将部分生产活动交给更专业的外部协同加工资源完成,从而专注于自身核心业务,快速、高质和低成本地生产市场所需的产品[1];除此之外,很多教育机构和实训基地也需要这样的制造技术资源对学生和工人进行初步培训。但是,制造资源突破了地理范围的制约,分散在不同的物理区域内,同时又相对独立、功能和形式各异,要快速、灵活组织资源,就必须对其集成[2]。因此,需要制造技术资源服务平台对分散的资源进行集成,并匹配对应的服务。传统的制造技术资源平台多采用单体应用的架构,但是随着平台业务要求的日趋多样化和复杂化,单体架构设计的局限性开始显现。存在的主要问题如下:

(1)系统健壮性不足。在单体架构的制造技术资源服务平台中,很有可能因为对某一特定服务访问人数的激增而导致特定服务的不可用。单体应用的一个显著缺点就是服务相互不独立,所以单体应用程序中某个模块的瘫痪必将导致整个系统不可用[3]。

(2)部署复杂。制造技术资源平台业务逻辑复杂,每一个资源服务的修改都需要重新编译整个应用,非常繁琐。

(3)伸缩扩展性不足。随着制造技术资源平台的访问人数增加,平台会对其中的某个特定模块调优,在传统的单体应用中,如果出现性能瓶颈只能对软件整体进行扩展,无法满足动态扩展的要求[4]。

针对以上问题,本研究提出一种新的微服务架构来满足制造技术资源与服务平台高可用、敏捷开发和动态扩展的要求。

2 关键技术研究

2.1 微服务基本概念

微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务[5]。微服务的策略可以使复杂的业务逻辑松耦合,从而实现敏捷开发、动态扩展的目的。

2.2 关键技术研究

微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源[6]。功能瓶颈的问题主要通过组件来解决,计算资源分配的最小单位是微服务,而不是应用,这样就意味着可以充分灵活地利用现有的计算资源。

微服务应用程序的另一个好处是,它们更快且更容易更新[7]。在面对不同的需求时,可以让不同的微服务承担不同的职责,同时快速部署上线,让用户的需求尽早实现。

微服务应用程序的第3 个好处是,基于微服务架构的系统具备更高可用性和弹性[8]。基于微服务架构的系统是去中心化的,当一个微服务下线时,其他同类的微服务将承担相应的功能,对外仍可以提供服务,不会造成整个系统无法访问。

2.3 Docker 基本概念

Docker 是用Go 语言开发的,基于Linux 内核的CGroup、Namespace 以及AUFS 类的Union FS 技术。Docker 通过容器虚拟化、共享内核,把应用需要的运行环境、缓存环境、数据库环境等封装起来,以最简单的方式支持其运行[9]。

2.4 容器技术优势

传统的服务架构应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,不利于应用的升级更新回滚等操作[10]。虚拟机是解决这一问题的一种方法,但是传统虚拟机的创建速度和资源利用率会远远低于Docker。

新的微服务架构应用部署方式是通过部署Docker 来实现快速发布、自动运维、自动扩容和微服务的动态扩展。Docker 在实际应用中的作用主要体现在如下几个方面:

(1)代码管道化管理。使用Docker 能够令代码直接发布到生产环境中,实现端到端的发布流程管理。

(2)作为多租户容器。Docker 有着灵活发布和运维的管理机制,可以作为云平台的多租户容器。

(3)应用隔离。在微服务架构中,需要把一个单体应用拆分为多个微服务,而多个应用服务部署在多个Docker 上即可实现应用间的隔离[11]。

3 总体架构

微服务系统的整体架构如图1 所示,基于微系统的服务平台架构包含4 层:第一层为资源层,提供网络协同制造过程中涉及的各类资源;第二层为服务层,建立虚拟资源池,实现对不同的资源与服务接入、感知、共享、协同和组合,形成微服务集群,并提供平台引擎与工具;第三层为接口访问层,实现平台高效的对外接口,使用户能够通过一个便捷方式来使用平台的资源;第四层为用户层,技术资源的使用者、提供者等不同类型的用户都可以通过不同的终端与服务平台进行交互。

图1 制造技术资源服务平台架构

4 平台设计

4.1 资源层设计

针对技术资源分布分散、服务能力具有差异性、资源信息平台间缺乏共享渠道等问题,研究以数据抽象、数据映射、知识表示等为关键内容的,基于本体的技术资源与服务能力虚拟化技术,实现对技术资源与服务能力的高效组织和管理,为技术资源以及服务能力的查询、管理、选择、聚合等提供支持,将现实生活中的多种资源,例如技术成果、技术方案、专利信息等,通过技术资源虚拟化和服务能力虚拟化,异构为多种不同的资源池,并向上提供统一的数据接口,便于上层调用。

4.2 服务层设计

4.2.1 微服务集群

采用微服务技术降低服务间耦合程度,将粗粒度的应用层面服务拆解成细粒度的微服务,构建出由资源检索、分析利用等构成的微服务集群,提高服务的内聚程度,使其具有隔离服务、按需弹性部署以及通信轻量化的特点,达到敏捷开发和部署的效果,最终能更快地响应服务动态组织的调用。针对微服务化后带来的功能分散、资源消耗严重以及运维困难的问题,采用容器化技术对微服务进行编排管理,根据每个容器上部署微服务的不同进行资源的合理分配,最大化地利用服务器资源实现对微服务应用调度、资源管理、服务管理等多维度的统一管理,极大减少运维成本,达到统一功能的效果。主要采用Spring Cloud 微服务框架体系中的各个组件来实现微服务集群,具体包括:

(1)服务发现。在服务发现这一部分,采用的是Spring Cloud 提供的Eureka 组件。Eureka 组件分为Eureka server 和Eureka client 两种。Eureka server中存储服务注册表,将Eureka server 分别部署到多个不同的物理服务器上,当一个Eureka 因为物理或其他不可逆因素造成损坏时,可以利用其他服务器上的Eureka server 正常运行,减轻运维的压力。每个服务和客户端都有Eureka client,服务端的client在server 中注册后,需要和server 保持“心跳”,即在规定时间内确认该服务正常运行的状态,否则该服务会被移除。客户端的client 通过网关访问server,找到所需服务的接口,进行访问。

(2)服务容错。在服务容错这一部分,采用的是Spring Cloud 提供的Hystrix 组件和链路追踪的组件。微服务相比之前的单体应用,最大的优势在于当一个微服务出现调用异常时,可以及时地关闭当前出现异常的微服务,避免影响其余可以正常运行的微服务。利用Hystrix 组件,当一个微服务出现一定次数的异常请求的时候,开启继电器、关停当前服务。在这里,对于时效性要求不高的服务请求,将从缓存中拿出数据,返回用户,使得用户拥有更好的用户体验,之后等待一段时间后继电器进入半开启状态,尝试再次调用该服务,如果该服务可以正常调用,继电器关闭,否则继电器开启,继续停用当前服务;利用辅助链路追踪的组件,当服务调用失败时,结合微服务的调用关系,快速确定出现问题的微服务。

(3)服务配置。在制造技术资源云平台中的服务众多,每个服务的配置也不尽相同,并且在后续的维护过程中也会继续扩容、增加更多的微服务,而Spring Cloud 提供的Spring Cloud Config 组件可以统一管理每个微服务的配置信息[12]。

4.2.2 引擎及工具研发

围绕技术资源服务平台的构建,根据微服务架构的要求,本研究研发一系列公共套件、管控套件和运营管理套件,包括展现框架、可视化界面、消息队列、数据缓存、系统日志等引擎以及服务注册发现、统一数据访问、第三方服务管控等工具,通过这些构件支撑微服务底层架构稳定运行。

4.3 接口访问层设计

4.3.1 服务网关

服务网关负责接收客户端请求,并将请求转发到业务层上去。服务网关的核心功能就是负责服务请求路由、组合及协议转换[13]。首先,所有的客户端请求都会经过服务网关,然后服务网关再将服务请求路由到合适的微服务,以提供具体的服务处理,所以服务网关通常会通过编排多个微服务来处理一个服务请求。

4.3.2 请求处理过滤

服务网关作为整个系统与外界的门户,负责外界对系统请求处理过程进行过滤,主要实现了安全访问控制、监控限流和自适应路由等功能[14]。通过Spring Security 框架从接口层面实现权限管理的功能,当某一用户访问无权限的服务时,返回错误信息,提示用户无权访问;当某一个接口在短时间内访问量过大时,进入等待队列等待,直至该接口空闲可用时再进行访问。

4.3.3 负载均衡

负载均衡模块是通过Spring Cloud 框架中的Zuul网关组件和Ribbon 微服务组件并结合Eureka Server实现。Zuul 网关可以实现外部和内部隔离,并保证后台服务的安全性[15];同时,识别用户的访问权限,过滤不符合要求的请求。在用户访问量过大的时候,也可以采用令牌环的策略对接口限流,因为所有的请求都需要通过API Gateway,所以API Gateway 通常有着较高的负载。Ribbon 组件可以实现负载均衡的功能。如图2 所示,客户端通过http 请求的方式,访问微服务网关,Zuul 网关对来自客户端的请求进行过滤和转发以及限流,防止短时间内过多的http请求导致系统阻塞;Ribbon 组件则选取负载量相对较低的服务进行组合,响应用户请求。

图2 微服务系统中服务注册与发现模块结构

4.4 接口访问层设计

针对技术资源服务平台动态扩展、资源利用方式不断衍生的需求,研究应用服务(APP)动态构建技术,包括应用服务功能规划、人机交互接口定义、技术资源动态抽取、功能模块动态封装、基于服务平台的动态部署等,通过应用服务动态构建技术实现技术,不断扩展平台的功能,并支撑技术资源利用生态体系的形成。

图3 技术资源生态体系

5 结论

本研究主要针对制造技术资源与服务,运用虚拟化技术异构各类资源池,探索使用微服务技术将庞大复杂的资源与服务进行拆解,并利用Spring Cloud 中所提供的组件及一系列包括消息队列、数据缓存的中间件进行有效管理,使云平台的开发和运维到达标准化、模块化、组件化的目的,并利用Docker 技术实现对不同系统下的资源服务打包、移植,为应用创建轻量化、秒级部署、弹性伸缩的容器,实现最终敏捷开发的目的。最终通过应用APP 动态构建技术,为制造企业和相关教育机构提供统一的接口,实现各类资源的调用。

当前,我国提出了实施制造强国发展战略,制造业处于高速发展的阶段,但是在资源管理方面往往存在管理人员复杂、管理方式混乱、自动化程度低的问题,而通过微服务及容器化技术对传统单体资源管理系统的改造,可以在很大程度上解决这一问题。

猜你喜欢
网关服务平台部署
密码服务平台
打造一体化汽车服务平台
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
今日农业(2021年7期)2021-07-28 07:07:16
基于改进RPS技术的IPSEC VPN网关设计
论基于云的电子政务服务平台构建
湖北农机化(2020年4期)2020-07-24 09:07:38
部署
基于云计算的民航公共信息服务平台
部署“萨德”意欲何为?
太空探索(2016年9期)2016-07-12 10:00:02
LTE Small Cell网关及虚拟网关技术研究
移动通信(2015年18期)2015-08-24 07:45:08