基于微服务架构的航天测控系统设计
来源:用户上传
作者:操礼长 王小雨 申健 王小旗 邓德鑫
摘要:传统的航天测控系统监控软件采用单体式应用架构,存在维护难度大、周期长、扩展性差等弊端,并且无法满足资源可动态重构扩展的需求。基于IceGrid微服务架构的系统监控软件具有良好的稳定性与分布式能力,可以很好地解决上述问题。阐述了IceGrid微服务架构的基础框架,并提出基于Redis的服务主备仲裁机制与竞争分布式锁的服务主备切换方式,实现各类服务自主切换,并且有效解决了系统网络不稳定或者单服务器死机等异常情况下系统出现严重卡顿甚至数据丢失的问题,提高了航天测控系统运行的稳定性与可靠性。
关键词:微服务架构;Redis;主备切换;分布式锁
中图分类号:TP311文献标志码:A文章编号:1008-1739(2022)13-64-5
随着航天测控系统监控软件的业务功能不断扩展和复杂化,软件生态系统中模块与组件之间的调用依赖关系也变得越来越复杂,传统单体式应用架构存在维护难度大、周期长、扩展性差、升级难度高等弊端[1],并且新组件的大量引入与迭代数据的快速更新,很容易导致软件生态系统的不稳定和不平衡[2]。另一方面,为了提高共用设备资源的利用率,实现测控设备快速接入能力,航天测控资源重组系统对监控软件提出可动态重构扩展的需求,即资源重组系统不停机接入的需求。故由单体式应用架构转为微服务架构是解决复杂问题,以及满足资源重组系统不停机接入需求的必经途径[3]。
网络通信引擎(Internet Communications Engine,ICE)是ZeroC公司开发的一款高效的开源中间件平台,可以快速开发出高效的分布式软件[4]。IceGrid服务是ICE中间件的服务注册中心,客户端的所有服务定位请求都需通过IceGrid进行处理,当IceGrid发生故障,整个服务集群将会处于瘫痪状态,导致系统无法正常工作,虽然IceGrid实现了高可用,但是在进行故障切换时,主节点和从节点之间的关系转换却不是完全自动的,需要人工进行处理,对于大型的分布式系统是不现实的[5]。本文提出的基于Redis的主备服务仲裁及切换机制可以实现主备服务自主切换,并且在系统网络不稳定或者单服务器死机等异常情况下,仍能保证航天测控系统的正常运行。
1.1微服务架构
微服务架构是一种将单一应用拆分为多个子服务的系统服务架构,采用轻量通信机制进行服务之间的相互通信、协调与配合,每个服务都对应一个独立的业务模块,能够独立运行、独立部署、独立升级,不同服务间既相互独立又相互配合。故微服务之间高内聚低耦合的特点,可极大地提高系统架构的容错性、灵活性与可扩展性,有效避免因单个服务更新导致整个系统升级的问题[6]。
1.2基于IceGrid的微服务架构
在以ICE中间件内建的多种服务构建的微服务框架中,IceGrid是整个框架的核心服务,为客户端提供位置请求、应用部署、负载均衡等服务,为服务端提供服务管理和服务发现等[7]。IceGrid分布式部署如图1所示,主要组件包括服务注册中心、服务节点以及消息中心。IceGrid即为注册中心Registry与Node服务器的集合,注册中心和Node监控服务器相互配合共同管理应用程序的服务进程。每一个应用程序都被分成了若干进程服务分别部署在不同的Node监控服务器中,由Node监控服务器对部署在该服务器中的所有服务进行管理。
服务注册中心是分布式监控系统的服务管理中心,为了监控系统的可靠性,采用一主一从部署策略。注册中心的信息写在Node监控服务器的配置文件中,Node监控服务器启动后向所有注册中心进行动态注册。服务节点为2台监控服务器,负责与注册中心直接通信以及服务容器的生命周期管理。服务容器是ICE服务的管理容器,采取集中式的策略对服务进行加载、管理,各类服务被设计为可动态加载的组件以动态库的形式按需配置到服务容器,该方式解耦了监控服务器和服务,可以按照需要组合服务或分离服务。
注册中心、Node服务器、服务容器的关系连接如图2所示,在系统正常运行时,Node服务器会对服务容器进行全生命周期管理,包括启动、检测、故障重启等。Node服务器会向所有注册中心定时上报自身及服务容器的运行状态,所有注册中心都会自动感知各类服务的工作状态。
1.3服盏姆⒉加氲饔
微服务平台的服务通信在底层都是基于网络来完成,对应用层则主要有服务调用和消息发布2种方式。微服务平台服务发布与调用流程如图3所示。服务在发生调用时,服务消费者向注册中心查询服务提供者,注册中心会向服务消费者提供一个可用的服务信息列表。
服务的发布流程所示:
①首先注册中心根据IceGrid的配置信息将服务发布到对应的Node节点,并启动对应的服务定位服务;
nlc202208121153
转载注明来源:https://www.xzbu.com/1/view-15437494.htm