基于微服务架构的铁路企业年金信息系统研究与实现论文

基于微服务架构的铁路企业年金信息系统研究与实现

王敬林1,2,朱韦桥3

(1.中国铁道科学研究院 研究生部,北京 100081;2.北京经纬信息技术有限公司,北京 100081;3.中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)

摘 要: 针对单体架构的铁路企业年金信息系统存在升级迭代复杂、可复用性和可维护性差等问题,在充分分析铁路企业年金管理实际需求和业务特点的基础之上,提出构建基于微服务架构的铁路企业年金信息系统,采用领域驱动设计理念对系统进行微服务拆分,设计系统的总体技术架构,详细阐述微服务架构、前端应用、认证授权、数据存储等关键技术的实现。该系统已上线并稳定运行,关键技术得到了验证。

关键词: 微服务架构;铁路企业;企业年金

铁路企业面对着繁杂的企业年金经办业务、巨额的年金基金管理和严格的投资监督等日常业务管理,传统的手工方式或完全依托账管人提供的信息系统进行管理,已无法满足业务发展需要,部分企业已经建设了相关企业年金信息系统,用于企业年金业务管理,由于设计理念和开发技术的限制,多采用单体架构进行系统的构建[1-2],但在运行过程中暴露了一些问题:

(1)企业年金政策性强、时效要求严格,铁路企业年金业务调整频繁,具有涉及人员广、业务操作复杂、专业性强等特点,年金系统需要根据业务规则的变化,进行及时迭代与更新,而传统的单体架构信息系统可维护性和可扩展性较差,面对微小的调整,整体系统都需要经历开发、测试、整体打包、停机、更新、部署、启动等实施过程,无法适应高频率更新升级的业务要求。

(2)年金信息系统涉及成员单位多、业务规则多、对口机构多且数据交互频繁,导致子系统和功能模块多,单体架构信息系统局部子系统或功能模块的故障,将导致整体系统崩溃,无法满足系统的高可用性。

(3)随着铁路云计算的发展,铁路企业已基本实现资源虚拟化、系统集群化的生产环境,单体架构信息系统面临运行瓶颈,同时,无法充分利用云计算可伸缩性、高扩展性的优势和特长[3]

本文主要研究基于微服务架构构建的铁路企业年金信息系统(简称:微服务年金系统),解决单体年金信息系统的诸多问题。

1 基于微服务架构的系统设计

1.1 铁路企业年金管理需求

铁路企业一般采用理事会受托管理模式,即铁路企业和职工作为委托人,委托企业年金理事会(受托人)管理企业年金基金。理事会下一般会设置专门经办机构(理事会办公室),负责企业年金理事会日常工作。由受托人选择一家同时具有账户管理、托管资质的机构作为账户管理人和托管人,由受托人选择若干家具有投资管理资质的机构作为投资管理人[2],企业年金各管理机构的职责分工与信息流传输如图1所示。

图1 企业年金管理机构职责分工及信息流传输示意图

铁路企业年金业务整体可分为计划层和成员层,其中,计划层包括产生和存续2个阶段,成员层包括产生、存续和终止3个阶段。计划层产生阶段主要包含计划建立相关流程;存续阶段主要包含计划监督、基金运作、投资监督和信息披露4部分。成员层产生阶段主要包含单位及职工的计划加入相关流程;存续阶段主要包含单位及职工的信息变更和年金缴费2部分;终止阶段主要包含计划退出流程。需求结构,如图2所示。

图2 铁路企业年金管理总体需求结构图

1.2 微服务架构简述

微服务架构是一系列小的、松耦合的分布式服务,这些服务围绕业务能力划分构建,具有组件化、通信协议轻量化、服务集中化、数据分散化的优点,能够使用不同的编程语言、不同的存储技术在云平台下独立部署[4-6]

1.3 系统总体架构

(4)业务服务层:结合企业年金的实际业务,将实体和公共服务进行封装,为接口层提供支持。本层涵盖本系统的主要业务,包括年金计划服务、成员单位服务、成员服务、年金缴费服务、待遇支付信息服务等。

领域驱动设计(DDD,Domain Driven Design)是一种以领域为核心的设计方法与理念。系统采用DDD理念,结合铁路企业年金管理业务,将企业年金业务领域拆分为:(1)核心域:成员领域;(2)支撑子域:年金计划子域,成员单位子域,缴费子域,支付子域等;(3)通用子域:消息子域,文件子域,流程子域,报表子域等。

2.范围拓展。一方面,家庭作为稳定的社会支持系统,对社区服刑人员心理矫治的效果有辅助促进作用,因此心理干预不再仅限于社区服刑人员,也包括其家庭成员,通过家庭心理咨询改善了社区服刑人员与家庭成员之间的不良关系,减少了因家庭所造成的不良应激,避免了家庭成员对社区服刑人员过多的指责或过分的关心,尤其是对未成年的社区服刑人员和暂予监外执行的社区服刑人员,有利于他们的社会功能修复,促使他们顺利回归社会。另一方面,村居社区矫正协管员聘用制度已覆盖全区,协管员掌握心理咨询知识有助于在走访社区服刑人员时,通过观察其表情和肢体语言,了解社区服刑人员的真实状态。

使用场景走查的方法,确认领域模型满足领域中的业务场景和业务流程,根据每一个子域对应的边界上下文完成服务的拆分。业务服务主要包括:年金计划服务,成员单位服务,成员服务,年金缴费服务,年金支付服务等;公共服务包括:消息服务,文件服务,日志服务,流程服务等。

1.3.2 微服务年金系统总体架构

The schoolbag which is on the sofa is Tom’s.(沙发上的那个书包是汤姆的。)which在此句中做主语。

系统总体架构分为表现层、接口层、实体层、业务服务层、公共服务层、服务治理与监督、资源层等7个部分,如图3所示。

实木地板保存了木的天然性,有热胀冷缩是正常的,一般在安装地板半年后一年多出现。如果地板之间有一定小细缝都是正常现象,这个不叫变形,而且商家安装时一般留有伸缩缝,一年以后进行微调,最多两年,实木地板就能达到恒定的含水率。

图3 微服务年金系统总体架构图

不同临床分期(Ⅰ、Ⅱ、Ⅲ和Ⅳ期)患者的复发和转移率分别为44.0%、68.8%、100.0%和100.0%(图2B);统计分析结果显示(表3),临床分期为Ⅲ和Ⅳ期患者术后复发和转移的发生率为100.0%,明显高于Ⅰ和Ⅱ期患者的53.7%,差异有统计学意义(P=0.003)。Ⅰ和Ⅱ期患者复发和转移的发生率为44.0%与68.8%,差异无统计学意义(P=0.064)。

(5)容错限流:Hystrix实现微服务架构的服务可靠性,Hystrix服务延迟和容错库可用来隔离服务故障,确保系统稳健运行。各个服务独立部署,且服务与服务之间存在相互依赖关系,因此,服务访问失败的原因和场景非常复杂,容错限流服务可以实现服务隔离、服务降级和服务熔断,从而阻止联动故障的发生。

(3)实体层:微服务架构下的实体同时为业务服务和公共服务提供支持,在接口需要的情况下也可以直接调用。系统中,所有的数据均将封装为接口,方便对外提供统一的数据服务能力,包括计划信息、成员单位信息、成员信息、缴费信息、支付信息模型等。

1.3.1 微服务拆分

首先来说说我自己,我是一个生来性格内向的人,我认为这和从小的家庭教育、家庭环境以及接触的人、事物都有着很大的关系,所以我很害怕与人沟通,不愿意多说话,宁愿自己多干点就是不愿张嘴去与人沟通。其次我还是一个害怕产生人际冲突的人,就是俗话中的老好人,当别人的意见与我相悖时,我总是因为害怕发生人际冲突造成同事间的关系紧张,所以总是无条件的按照其他人的意见进行事情的处理。

(5)公共服务:将微服务年金系统中多处用到的功能进行统一封装,以便更好地为业务服务层提供支持,包括消息服务、文件服务、日志服务、流程服务、缓存服务等。

(6)服务监督与治理:微服务架构下,对服务的安全、监控、预警十分重要。服务监督与治理贯穿公共服务层、业务服务层和接口层,主要提供服务注册、服务监控、服务授权、日志分析、熔断器等功能,实现对微服务的治理。

(7)资源层:主要是指系统操作的相关资源,包括数据库资源及各类文件资源,如计划信息库、成员单位信息库、成员信息库、缴费信息库、待遇支付信息库,以及相关的各类附件信息库(业务经办文件、指令等)。

2 系统关键技术实现

2.1 微服务架构技术实现

Spring Cloud 是一系列框架有序集合,其标准化的、全站式的技术方案构成了一个生态圈,涵盖了众多微服务架构实现所需的核心组件,例如,服务网关、服务注册发现、配置中心、认证授权、容错限流、调用链监控、日志监控等[7-8]。本系统微服务架构实现主要使用的组件如图4所示。

图4 微服务年金系统技术实现图

(1)服务网关:客户端请求通过统一的服务网关接入后端服务。网关使用Zuul、Ribbon和Eureka 3个组件,实现智能路由和负载均衡的功能。智能路由就是依据请求策略将请求网关转发到认证授权服务,按照相应的权限分发到相应的服务实例,防止非法请求访问后端服务,同时,Zuul为后期规划的灰度测试创造了条件。

(2)服务注册发现:Eureka是一个基于REST的服务注册中心。在微服务架构中,服务需要集中化管理,因此,基础服务、公共服务和通用服务需要通过服务治理实现自动化注册和发现。服务注册中心是网关服务路由信息存储仓库,也是服务之间进行交互的媒介,发挥着服务注册和发现的作用。Eureka支持服务续约和服务下线,方便用户定位服务问题以及提供中间层服务器的故障转移。

(3)配置中心:Spring Cloud Config结合Git实现配置中心的搭建和配置信息的统一管理。配置服务通过注册中心注册到Eureka Server,企业年金服务可以通过注册中心发现配置服务,企业年金服务从而获取所需要的配置信息。

(4)认证授权:Spring Security、OAuth2和JWT实现微服务年金系统的认证授权。客户端请求通过网关路由到认证鉴权服务,获取用户登录信息和权限信息,客户端携带Token支持跨程序调用。微服务年金系统存在异构系统,利用JWT实现单点登录。

(2)接口层:将实体层、业务服务层、公共服务所覆盖的内容进行聚合,按照客户端的需求,为表现层提供符合展示要求的数据,封装成接口服务。如成员单位接口、成员接口、年金缴费接口、待遇支付接口、成交管理接口、投资转换接口等。接口提供在线数据交互和数据文件导入导出2种方式。

(6)调用链监控:Spring Cloud Sleuth结合Zipkin构建微服务的调用链监控,客户端每一个请求在调用过程需要多个服务,每个服务独立部署在不同物理机器和不同数据存储之间,调用链监控可以跟踪一个或多个事务,然后,拼接出服务运行的全链路。通过Zipkin可以查看跨多个事务的事务流。

(7)日志监控:日志监控通过ELK(Elastic Search、Logstash、Kibana)和Kafka实现日志收集与监控,分布在不同服务器的日志收集组件,通过消息中间件Kafka传递给Logstash,进行过滤分析后将数据存储在Elastic Search,通过Kibana查看所有的日志数据。

2.2 前端实现

微服务年金系统采用前后端分离,前端使用Angular和Typescript开发,实现MVC划分和通道、路由等设计。前端应用部署在Nginx组合的服务器上,通过反向代理转发页面请求到后端服务器,同时Nginx实现前端的负载均衡[9]

应用整体界面采用完全的响应式编程,使得数据驱动、局部刷新容易实现;采用Bootstrap兼容可扩展框架,通过页面栅格自适应各种分辨率的显示器,实现更好的用户体验。

2.3 认证授权实现

(3)返回给客户端。如果是其他请求,将会到Redis验证Token是否存在,若不存在,则返回客户端重新登录;若Token存在,则进行Token私钥解密校验:如果token被篡改或者失效,则直接拒绝访问并返回错误信息;如果验证成功,经过路由到达请求的年金业务服务,请求服务响应并返回数据。

微服务年金系统授权认证过程,如图5所示。

(1)表现层:使用前后端分离技术,对后台服务进行组合,完成与用户的交互。本系统中的年金日常业务管理和年金投资监督管理等页面功能,可以在后台服务接口确定的情况下进行前端的独立开发。

(1)客户端发送请求到服务网关后,网关会根据请求路径过滤请求[9]。如果该路径是登录并获取Token操作的路径则直接放行,请求直接到达认证授权服务进行登录操作;

(2)进行JWT私钥加密,生成Token存储到Redis;

通常,微服务架构的认证授权采用Spring Security、OAuth2和JWT的组合,该认证授权框架虽然具有一次获取Token可以多次使用的优势,即不需要每次都到认证授权服务去获取用户信息和权限信息,但是,如果用户权限发生改变,Token存储的信息不能及时变更,就会造成业务的漏洞,微服务年金系统通过引入缓存数据库(Redis)技术,用于存储Token信息,当用户权限更改时,将会自动删除存在Redis的Token,请求再次经过网关时,验证Token不存在,提示用户重新登录。

图5 微服务年金系统授权认证过程图

2.4 数据存储实现

微服务年金系统将数据和服务分开,保证服务的独立性。由于铁路企业数据要求集中管理,数据存储采用集中式的数据管理方式再实现数据的独立性[10-11]。系统针对每个业务服务划分专门的独立空间,从逻辑上与其他服务相隔离,如图6所示。跨企业年金业务的数据存储依据BASE思想,即基本可用(Basically Available)、软状态(Soft state)和最终一致性(Eventually consistent)的TCC模式实现分布式事务。

图6 微服务年金系统数据存储实现图

3 应用效果

微服务年金系统已上线运行,应用效果显著。系统实现了铁路企业内部成员、年金资金、年金业务规则等基础数据统一管理,与相关系统数据交换和信息共享,信息流、资金流全程监控,为年金基金管理和投资监督提供了保障。企业年金政策调整、业务管理变化后,利用微服务架构的优势,系统具有横向扩展、快速更新升级的能力,为企业年金日常经办提供了时效保证,提高了用户体验。通过微服务架构改造的系统业务相对独立,服务集群部署,日志监控全面,运维定位迅速,为系统的高可用提供了技术支撑。

此外,不少公众还认为塑料吸管是一种可以被回收再利用的废物,因此不是什么大问题。“当有些人听说塑料吸管对海洋生物的健康造成危害时,他们会回应说自己从不乱扔垃圾,并且每次都会记得回收塑料,因此自己不是问题所在。”丽普亚特说,实际上,塑料吸管很难被回收再利用——塑料回收工厂通常只接受大件的塑料废物,而对吸管这样的垃圾不感兴趣。

冻藏原料置于室温溶解后,根据原料的质量按照1∶1的比例加入相应重量的蒸馏水,搅拌均匀,用1 mol/L氢氧化钠溶液调节pH至7.0(酶解过程中每隔2 h调1次pH,确保pH维持在7.0),添加牡蛎重量0.4%的胰蛋白酶和0.2%的风味蛋白酶,在温度为55 ℃的水浴条件下酶解20 h。酶解结束后沸水浴20 min灭酶,8000 r/min离心20 min,取上清液即为酶解产物,-18 ℃冻存备用。

在迭代过程中,当迁入栖息地和迁出栖息地确定后,使用原始迁移操作信息共享效率低,受问题规模影响大,采用吴斌等[13]提出的PI算子可解决该问题。PI算子依概率Ppi对所有SIV判断是否进行迁移操作,故该算子会根据栖息地中SIV的数量自适应需要共享的信息量。

4 结束语

本文分析使用单体架构进行铁路企业年金系统构建的问题,介绍了微服务架构的概念和关键特性,并将微服务架构的理念引入到铁路企业年金信息化建设的系统设计中,实现了铁路企业年金业务流程贯通及全过程信息化管理,提高了系统的负载能力、可扩展性和独立性。

该系统需要进一步研究的内容有:

样本共计3168个,2010—2017年99家生产性服务业上市公司32个季度的销售利润率的平均值为11.25%、总税负的平均值为8.26%。其中总税负的最大值为41.57%,最小值为0,原因是部分企业享受税收优惠或亏损。营改增政策以外的6个变量描述统计性分析如表5:

设计SUP-13沥青混合料的过程中,设计人员还应该充分的考虑到将要使用的部位,并结合施工地区的气候环境因素,针对性的对混合料进行调节,一次来保证更好的适应当地的气候条件。只有通过这样的方式完成混合料的设计,才可以充分满足实际施工以及投入使用之后的需求,从而有效的提升公路工程的建设质量。

(1)虽然按照领域驱动设计进行了服务拆分,但是,随着日常业务的开展,服务拆分策略的合理性依然值得探讨,后续继续研究铁路企业年金业务特点,优化服务拆分;

公立高等院校作为财政拨款的事业单位,其预算是政府财政预算的重要组成部分,政府公共财政改革必将对高校事业发展产生比较大的影响,也给高校现行的预算编制带来不小的冲击。高校应该顺势而为,主动适应国家财政预算管理的改革节奏,建立跨年度预算平衡机制,因地制宜,适时运用滚动预算编制方法,编制与高校事业发展相适应的中长期预算。

(2)微服务年金系统服务可靠性的设计仍不够全面,服务访问的雪崩效应、服务失败应对策略、服务容错、服务隔离、服务限流、服务降级等问题没有完全解决,需要继续研究服务可靠性方案,进一步完善方案。

参考文献:

[1] 中国铁道科学研究院.中国铁路总公司人力资源管理信息系统社会保障管理应用总体方案[R] . 北京:中国铁道科学研究院,2015,12.

[2] 中国铁路总公司.铁路信息化总体规划[R] .北京:中国铁路总公司,2017.

[3] 朱建生,王明哲,杨立鹏,等.12306 互联网售票系统的架构优化及演进[J] .铁路计算机应用,2015,24(11):1-4.

[4] John Carnell. Spring 微服务实战 [M] .北京:人民邮电出版社,2018.

[5] Fanxiliar B0b.From Monolithic to Microservices[M] .Apress,Berkeley,CA,2015.

[6] Thoenes Johannes. Microservices [J] . Ieee Software, 2015,32(1): 116-116.

[7] 王方旭.基于Spring Cloud 实现业务系统微服务化的设计与实现[J] .电子技术与软件工程,2018(4):60-61.

[8] 张 晶,黄小锋.一种基于微服务的应用框架[J] .计算机系统应用,2016,25(9):265-270.

[9] 魏成坤,刘向东,石兆军,等. OAuth2. 0 协议的安全性形式化分析[J] .计算机工程与设计,2016,37(7):1746-1751.

[10] 李春阳,刘 迪,崔 蔚,等.基于微服务架构的统一应用平台[J] .计算机系统应用,2017,26(4):43-48.

[11] 黄嘉诚,董 晶.基于微服务的智能档案服务系统设计与实现[J] .电子设计工程,2018,26(2):29-30.

Railway enterprise annuity information system based on micro service architecture

WANG Jinglin1,2, ZHU Weiqiao3
( 1. Postgraduate Department, China Academy of Railway Sciences, Beijing 100081, China;2.Beijing Jingwei Information Technologies Co. Ltd., Beijing 100081, China;3.Institute of Computing Technologies, China Academy of Railway Sciences Corporation Limited,Beijing 100081, China )

Abstract: Aiming at the problems of complex upgrade iteration, poor reusability and maintainability of railway enterprise annuity information system based on monolithic architecture, on the basis of fully analyzing the actual needs and business characteristics of railway enterprise annuity management, this paper put forward the construction of railway enterprise annuity information system based on micro-service architecture, adopted domain-driven design concept to split the system into micro-services and design the overall technical framework of the system. The paper elaborated on the implementation of key technologies such as micro-service architecture, front-end applications,authentication and authorization, data storage and so on. The system has been on line and operated stably, the key technologies were veri fi ed.

Keywords: micro service architecture; railway enterprise; enterprise annuity

中图分类号: U29∶F530.6∶TP39

文献标识码: A

文章编号: 1005-8451(2019)5-0022-06

收稿日期: 2019-01-07

基金课题: 中国铁路总公司科技研究开发计划课题(J2018S001;18CR086)

作者简介: 王敬林,在读硕士研究生;朱韦桥,副研究员。

责任编辑 王 浩

标签:;  ;  ;  ;  ;  ;  

基于微服务架构的铁路企业年金信息系统研究与实现论文
下载Doc文档

猜你喜欢