APP下载

关于民航领域集成系统可持续迭代的架构设想

2019-06-27邵黎明

科技创新与应用 2019年9期
关键词:微服务去中心化

邵黎明

摘  要:长期扩展性系统具有独立模块成型快、系统发展时间长、模块迭代频繁的特点。因此将独立模块服务化、采用可插拔的服务注册机制并通过完善的权限控制和认证实现新旧服务之间的通讯,进而在提高数据和服务的复用性避免重复开发的同时保证了每个独立服务的高可用性。分布式系统的CAP理论要求在架构的设计前期对CP和AP作出抉择,而由于民航的领域特性,对于高可用和分区容错性的要求远大于一切,因此以AP为原则的去中心化设计成为首选。

关键词:服务注册;微服务;高可用;去中心化;民航领域

中图分类号:TP302        文献标志码:A         文章编号:2095-2945(2019)09-0069-02

Abstract: The long-term extensibility system has the characteristics of fast independent module forming, long system development time and frequent module iteration. Therefore, the independent module is serviced, the pluggable service registration mechanism is adopted, and the communication between the old and the new services is realized through perfect authority control and authentication. In turn, it can improve the reusability of data and services to avoid repeated development while ensuring the high availability of each independent service. The CAP theory of distributed systems requires a choice between CP and AP in the early stage of architecture design, but because of the domain characteristics of civil aviation, the requirements for high availability and partition fault tolerance are far greater than anything else. Therefore, the decentralized design based on the principle of AP has become the first choice.

Keywords: service registration; micro-service; high availability; decentralization; civil aviation field

基于关系性数据库开发的传统单机应用不存在分区所以不需要考虑分区容错性、仅有一个可用服务、数据通过单个数据库访问具备强一致性。但是随着业务的拓展,这种单机应用将会越来越多,系统之间的相互通信一般采取接口方式,而接口的增加无疑会导致系统风险的增加并且对各个不同系统和不同系统的接口维护将会异常困难,并且维护的工作量也是随着系统的增加不断的加大;如果把各个独立系统集成为单个系统则需要考虑:(1)系统是

否能承载各终端访问压力;(2)各个独立应用的开发时间

是否可以在接近的时间内完成;(3)当系统容量达到某个

量级时,是否具备完善的监控管理机制。

1 基于微服务的民航基础服务系统的研究

本文介绍以大数据为依托的微服务架构应用,构建高效、用户体验良好、抗压能力强、能满足用户多元化需求的民航基础服务系統,并介绍对碎片化系统的整理方案。该方案在对微服务深入研究的基础上运用其对服务的注册与发现机制有效管理服务层的依赖关系并结合实际业务完成对服务的授权与鉴权,方案包括数据呈量级增长时的处理办法和对数据的有效利用。在满足民航基础服务系统向公网方向发展的安全、稳定等必要条件下,实现了系统的可伸缩、多终端兼容。

1.1 行业需求

民航相关服务越来越多,服务的管理越来越困难,小服务资源的浪费等问题逐渐显现,此时行业迫切需要增加一个调度中心基于访问压力实时管理集群容量,整合应用服务,使系统之间互联互通,提高资源的利用率。

1.2 民航基础服务系统建设方案

微服务架构对管辖内的服务进行有效的治理是它有别于RPC或其他分布式系统架构的关键特点,为适应未来民航IT系统的不断增长而建立基于微服务的民航基础服务系统。

系统设计方面以微服务的“去中心化”为核心思想,按照业务对系统进行分类管理,根据依赖关系对服务分层下层应用不允许逆向调用,严格把控数据流向。整个架构分为基础服务、接入服务、调用服务、业务系统、统一门户、数据服务六个版块,各个版块之间统一采用rest风格的http协议通信。

(1)基础服务包含服务的注册“中心”和配置“中心”,注册服务通过将自身注册到其他的注册服务上创建副本去中心化,配置服务通过自我复制创建副本集去中心化,同时将自身注册到注册服务的副本集为其他各部提供启动时的配置;可以由运维人员切换生产环境和开发环境的配置,统一的环境配置使系统管理更加高效,开发人员也无需知晓具体的数据库连接密码等敏感信息。

(2)接入服务负责对接入应用的鉴权与授权以及通过配置中心的相关配置限制接入应用的调用频次以保障被调用服务的安全。权限控制可以采用完美契合rest无状态特性的OAuth2和JWT的组合方案,在应用申请接入时可在后台配置一个Token来控制当前接入应用的访问权限、时效和访问频次;当前应用在调用其他服务时携带自己的Token,同时也要拥有解析允许访问本应用Token的能力。服务网关在Nginx+Lua和spring cloud的Zuul中选择后者,因为Nginx虽然以单线程多路复用提供了比Zuul更加高效的服务但是Zuul拥有Spring生态的支持,开发和维护都更加方便。

(3)负载均衡和容错保护是提高系统可用性的措施之一,负载均衡也可以使用Nginx和Lua来实现,但同样选用spring cloud中集成了负责负载均衡的Ribbon,同时Ribbon还带来对非spring boot应用的支持,作为一个民航基础系统,应该具备对其他rest风格应用的兼容特性以确保尽可能的接入如ASP.Net开发的应用服务。容错保护又包括服务熔断和服务降级等措施,当系统协同运行过程中出现某个服务整体无法调用或响应时间长的时候,为保障用户能在可接受时间内得到回馈需要对服务分情况的进行降级或熔断;降级是将当前服务在路由节点中的位置向后推移,熔断则是当超时或无法调用时路由到其他服务中。

(4)数据服务提供缓存、关系型数据库、分布式文件系统的支持,如果后期数据量确实很大,也有大数据计算的需求还可以加入Spark。缓存采用K-V内存数据库Redis提高数据层的并发处理能力;关系型数据库可选择开源的MySql配合应用层数据分片框架Sharding-Jdbc做数据库的读写分离、分库分表集群,也可以选择MyCat作为关系型数据库中间件来提供分库分表和读写分离的功能,前者的好处是不需要单独维护一个数据库中间件,也不用考虑中间件的可用性和并发处理能力,后者的好处是开发方无需关心数据库存储能力问题,两种方案都解决了持续增长数据的存储问题;分布式文件系统使用MongoDB,后续如果集成Spark则构成一个完整的大数据解决方案。

(5)业务系统是需要协同工作的服务的整合,各个应用服务集群提供各自相对独立的功能,同时也需要考虑响应时间和运营维护的复杂程度。

(6)统一门户在微服务架构中具有对业务应用生命周期的支撑作用,当相对独立的业务应用越来越多时,这些微服务程序都将不再依赖应用服务器,不依赖传统应用服务器则会导致应用服务器提供管理控制台无法正常工作,所以微服务的运行管理需要有统一的管理门户。统一集中的微服务门户,可以支撑应用开发、业务处理、应用管理、系统监控等。

1.3 民航基础服务的接入方案

根据不同的接入需求,基础服务系统提供Server和Client两种接入方案。

(1)Server接入必须以Restful API的形式并符合微服务设计原则,必须归入到基础服务系统的服务治理体系中,服务的响应时间必须在基础服务方案规定的响应时间范围内。Server接入方案开发方不需要考虑服务的治理问题,同时也能申请调用其他服务,是一种高度定制化的接入方式。Server接入前须在门户申请并登录帐号,填写接入应用的类型为Server、用途、接入方、需要调用的服务等基本信息后提交接入申请,由系统管理员确认后发放测试环境的接入Token,上线前提交到系统进行测试,测试通过后由系统管理员发放生产环境Token上线该服务到申请人账户并自动开通当前账户的暂停服务,删除服务功能。

(2)Client接入用于适配外部应用,当旧系统的响应越来越慢且当前基础服务中已经包含了部分可以被旧系统使用的功能时可以把这部分功能的提供方转换为基础服务。仍需在门户登录的状态下申请接入,填写接入应用类型为Client、需要订阅的消息、接收消息的地址、验参公钥等信息,提交申请后获得对应应用的app key,系统管理员确认后当前app key拥有接入权限填入的接收消息地址将会实时收到订阅的消息,消息的传输基于http协议,数据格式为json,同时为保障接入的客户端数据安全,接收到消息時必须对参数进行签名验证。

1.4 技术优势

分布式系统是当用户量攀升、数据量增大时的一种处理方法,基于微服务的民航基础服务符合去中心化的设计规范并具备以下优势:

(1)业务可伸缩。系统搭建完成后,可快速响应行业内多种需求,业务应用开发完成后,系统管理员可通过门户页面快速发布,同时对业务应用的升级与下线也是一键操作。

(2)故障可隔离。在系统发生严重故障(例如某业务应用的所有副本发生网络故障)时,系统会自动启用应急措施将用户请求路由到其他服务中,并产生警报信息。如果发生轻微故障(例如某业务应用下的个别副本响应时间长),系统会自动选择响应时间较短的服务来响应用户请求。

(3)系统好管控。引入门户对系统的业务应用统一管控,可以有效的复用基础应用,从架构上控制业务应用之间的依赖关系,使业务应用的开发和上线更为高效。

2 结束语

从单一的数据库架构,到主从读写分离的数据库架构,再到垂直拆分、水平拆分的数据库架构,当民航领域垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速地响应多变的市场需求,使民航领域集成系统具备可持续迭代的能力,促进行业的发展。

参考文献:

[1]黄志诚.数据中心建设中服务器虚拟化的应用研究[J].科技资讯,2018.

[2]汪文彬.高校数据中心服务器虚拟化研究及应用[D].浙江工业大学,2013:22-23.

猜你喜欢

微服务去中心化
一种去中心化的网络域名服务系统模型
基于供给侧改革理论的图书馆社交网络微服务研究
微信公众平台在医院图书馆的应用现状调查
基于微信企业号的校园移动服务
从单一模式系统架构往微服务架构迁移转化技术研究
浅析移动互联语境下中小成本电影去中心化的创作趋向
“去中心化”电子商务背景下大学生网络创业前景分析
浅析新媒体视阈下的新闻失实报道
基于微信公众平台的高校图书馆微服务现状及对策
“去中心化”时代的中心化现象