张向阳,朱建生,朱韦桥
(中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)
协同办公系统是指通过先进的技术,将部分办公业务物化于人以外的各种设备,并由这些设备和办公人员共同完成办公业务的人机信息系统[1]。由于铁路企业办公系统建设时间较早,传统的信息技术及思想构建的单体应用已经无法满足现代企业快速业务增长。目前,传统的协同办公系统多采用单体架构进行构建,系统可复用性、可维护性和可扩展性较差。微服务通过化整为零的概念,将复杂的信息化部署分解成更小、更独立的微服务。微服务有着技术选型灵活、系统内部服务不冗余、独立部署、具备更好的容错机制等优势[2-3]。
基于微服务的理念,从满足铁路企业办公业务发展需要出发,构建集统一身份认证、内网门户、电子公文、工作日志、协同交流、综合事务及移动办公等业务为一体的协同办公平台,实现铁路企业之间及部门间及时、高效,有序、可控的信息互联互通与协同办公自动化,促进铁路企业办公流程优化,提升企业整体协作水平和办公效率,为提升铁路企业工作效率和管理水平提供有力支撑。
铁路企业协同办公系统总体架构,如图1 所示。
根据“大平台+微模块”办公信息化总体架构,将系统分为不同业务模块,各业务模块分别对应企业局域网应用和企业互联网应用两部分,企业局域网用户通过电脑终端设备进行访问,互联网移动终端通过虚拟专用网(VPN)隧道接入企业互联网移动安全接入平台,访问业务系统前端页面。企业互联网前端页面调用接口转发服务,与企业局域网数据接口之间通过安全平台进行安全隔离及数据交换。系统建设统一身份认证系统,办公信息系统各业务模块集成统一身份认证,实现单点登录。
图1 总体架构
系统业务服务采用微服务技术构建,分为表现层、接口层、实体层、业务服务层、公共服务层、服务监督与治理层及资源层[4-5],如图2 所示。
(1)表现层:使用前后端分离技术,对后台服务进行组合展示,完成与用户的交互。系统中的内网门户、电子公文、工作日志、协同交流、综合事务及移动办公等页面功能,可以在后台服务接口确定的情况下进行前端的独立开发。
(2)接口层:将实体、业务服务、公共服务所覆盖的内容进行聚合,为表现层提供符合展示要求的接口,如认证接口、获取待办事项接口、文档预览接口、流程引擎接口等。同时也提供与其他的外部应用系统交互的接口,包括统一身份认证接口、电子档案归档接口、电子公文分发接口。
(3)业务服务层:结合实际业务,将实体和公共服务进行封装,为接口服务提供支持。
(4)公共服务层:将系统中多处用到的功能进行统一的封装,以便更好地为业务服务层提供支持。
(5)实体层:微服务架构下的实体同时为业务服务和公共服务提供支持,在接口需要的情况下也可以直接调用。系统中所有的数据均将封装为接口,方便对外提供统一的能力。
(6)服务监督与治理:微服务架构下,对服务的安全、监控、预警十分重要,服务监督与治理贯穿公共服务层、业务服务层和接口层,主要提供服务注册、服务监控、服务授权、日志分析、限流熔断等功能以及分布式事务,实现对微服务的治理。
(7)资源层:主要是指系统操作的相关资源,包括数据库资源及文件资源。
铁路企业协同办公系统网络架构,如图3 所示。
应用程序及数据库部署在企业局域网应用类服务器区,移动安全接入平台、移动业务前端页面及接口转发服务部署在企业互联网应用类服务器区。
图2 逻辑架构
图3 网络架构
电脑终端用户通过企业局域网终端接入区接入访问,移动终端用户通过互联网接入访问。移动办公通过VPN 加密隧道接入移动安全接入平台,访问企业互联网业务系统前端页面,前端页面调用移动接口转发服务。企业互联网移动接口转发服务器采用PKI/CA 认证体系,通过CA 证书实现与安全平台的身份识别,再通过防火墙及安全平台应用访问控制,实现企业互联网与企业局域网服务器之间数据交互,从而实现数据的安全隔离及交换。
系统以用户为中心、以服务为宗旨、以任务为驱动,根据铁路企业党政工团各项办公业务需求,打造门户网站、电子公文、工作日志、沟通交流、综合事务、移动办公等多业务融合的一站式办公服务平台,构建了横向集成,纵向贯通、风格统一、上下联动、资源共享的铁路企业办公服务体系,如图4 所示。
图4 功能设计图
系统建设统一身份认证平台,将铁路企业组织机构及人员信息进行统一管理。业务系统集成统一身份认证,实现单点登录,应用访问授权管理。用户通过铁路企业门户网站统一登录,用户登录成功后,以应用图标的形式在个人工作台展示当前登录用户有权访问的所有业务系统,展示所有待办事项,解决用户需要登录不同业务系统才可处理相关事务的问题,不但提高工作效率,更能提升用户体验。
在保障网络信息安全的基础上,建设移动办公App,制定移动业务接入标准,实现铁路企业移动业务处理,包括以下功能[6]。
(1)登录认证
实现移动办公App 双因子登录认证功能,包括用户名/口令认证、人脸或者指纹等生物特征认证,保证移动办公信息安全。
(2)应用中心
用户登录成功后,根据用户所拥有的权限,在应用中心展示用户有权访问的应用列表,列表根据应用类别进行分类展示,用户可进行选择性下载使用及更新操作等。
(3)个人工作台
个人工作台实现个人所有待处理事项的集中提醒和展示。用户登录成功后,显示用户所下载的所有应用的待办条数,点击某一应用,可查看该应用下所有待办事项列表。
(4)移动业务处理
实现内网门户发布信息的审核和展示,公文全流程电子化办理,工作日志填报、点评,综合事务类流程审批,以及移动即时通讯等功能。
(5)个人设置
实现移动办公App 个人信息设置,提供技术支持、推广信息及退出登录功能。
(6)移动终端管理
系统针对接入的移动终端设备进行统一管理,同时根据用户设有设备信赖清单及黑名单,只有认证通过的设备才允许接入,并且绑定登录用户。如果终端设备不慎丢失,可联系管理员进行设备锁止,将设备拉入黑名单,禁止该设备接入平台。
电脑终端访问采用基于HTTP 协议,通过Restful 服务接口等方式进行数据传输定义和服务对接。系统内多个服务之间接口同步调用通过Feign 实现,简化服务之间调用逻辑。异步通信通过消息队列实现。内网门户内容发布通过FTP 协议实现与应用服务器通信,用于更新静态网页。系统之间通过Web-Services 接口的形式实现数据交换。
移动终端采用基于VPN 隧道HTTPS 协议进行数据交换,通过国密算法将数据进行加密后再进行传输,数据格式为JSON,确保数据的安全和统一[7]。
铁路企业协同办公系统技术架构,如图5 所示。
(1)系统建有API 路由网关、服务注册中心集群、ELK(Elasticsearch Logstash Kibana)日志集群、消息队列集群、缓存集群、服务监控集群、数据库集群及业务服务集群[2]。
(2)业务服务首先在服务注册中心进行注册,注册中心提供服务注册、动态配置管理及实时健康检查,以防止向不健康的主机或服务实例发送请求。用户请求通过负载均衡配置到达API 路由网关,通过API 路由网关实现服务发现、服务调用、以及服务的降级、限流、熔断等,从而达到业务服务的解耦的目的。
图5 技术架构
(3)系统建设消息队列集群,通过消息队列,实现业务服务之间的异步通信、解耦、故障转移以及并发缓冲等。同时,基于分布式事务,配合消息重试与补偿机制,保证消息的百分百可靠达到,实现数据的最终一致性。
(4)通过开源ELK构建集中日志系统,完成服务链路、应用操作、应用异常、应用服务器中间件、服务器的日志等多源日志数据的收集、传输、存储等功能,并应用聚合日志数据进行分析,挖掘日志的价值信息,同时进行展示及告警等操作[8-9]。
(5)系统建设缓存集群,为保证缓存和数据库数据的一致性,系统基于订阅Binlog 的同步机制实现缓存与数据库的异步更新。热数据通过Redis 读取,数据库增加、更新、删除业务通过操作Binlog 配合消息队列实现将数据更新至Redis 缓存。
(6)系统通过Prometheus 提供Exporter 导出器,收集系统各个业务服务及集群运行时的参数,实时监控虚拟机的CPU 负载、内存消耗、网络IO、硬盘使用量、系统缓存、消息队列等。通过开源度量分析和可视化工具Grafana,将采集的数据进行可视化的展示,支持可视方式定义最重要指标的警报规则,在数据达到阈值时及时告知和预警。通过Skywalking 实现业务请求的全链路追踪、服务诊断,为系统运维提供问题排查信息。
(7)系统支持通过Gitlab 和Jenkins 实现服务自动化部署。针对铁路企业开发环境与生产环境网络物理隔离等条件,支持通过Jenkins 实现程序包的自动分发、资源配置及部署等,最大限度减少项目管理及服务运维的工作量。
(8)按照微服务的理念,使用容器作为微服务载体实现服务快速部署、迭代,容器里面包含服务运行所需的一切内容,比如代码、依赖关系、库、二进制文件等。与虚拟机相比,容器可以共享操作系统内核,占用的空间更少,启动速度也更快。针对不具备容器化资源管理能力的情况,系统同样支持使用虚拟机作为微服务载体。
通过调研铁路企业协同办公系统的应用需求,应用微服务技术,通过服务划分、业务解耦,减少了冗余代码的产生,降低了新增、修改和维护代码的成本,提升了业务的快速响应能力。但是,系统经过微服务拆分后,从单体变成了分布式,多个服务分布在不同的服务器上,服务间调用的成本更高,调用过程中可能还会遇到网络抖动等外在问题,需要完善相应的服务监控和管理能力,对项目的管理及系统的运维提出了更高的要求。
目前,系统已在中国国家铁路集团有限公司、中国铁路北京局集团有限公司、中国铁路信息公司、中国铁路国际有限公司实施并应用,在取得了良好的系统使用效果的同时,也积累了大量微服务治理、运维经验,可为系统的进一步优化完善提供技术支持。