APP下载

统一应用基础开发平台研究设计

2020-02-21匡华

电子技术与软件工程 2020年13期
关键词:微服务架构

摘要:本文在广东移动已有基础设施基础上,研究应用系统软件开发体系与技术开发架构,建立一套有实际指导意义的统一应用建设标准开发体系规范,实现一套可运行的“统一应用基础开发平台”基础软件,并基于该基础开发平台实现典型应用功能开发实例,用于指导后续应用软件开发。

关键词:研发平台;架构;微服务

广东移动管理领域应用系统经过多年的建设发展,已经拥有了一大批成熟的IT系统基础能力服务,并基于基础能力服务构建了大量的应用系統,目前管理领域现有应用系统多,软件厂商多,各系统技术平台差异性大,系统升级与维护难度大、实施周期长、风险大,已经无法满足当前业务快速发展、需求快速响应、软件持续交付的建设需要。

2016年广东移动启动了综合管理支撑应用的整合建设项目,基于下层综合管理支撑平台提供的统一的综合办公支撑系统的底座和运行环境。按照《综合支撑平台服务规范》,旨在通过“统一应用建设”的模式,缩减开发商和系统数量,并致力于在应用统建的过程中,降低应用开发商更换门槛、降低统一维护门槛、提高开发速度和长期降低投资的目的。随着广东移动业务的快速发展,对管理需求的快速响应提出了更高的要求.如何更加快速、高效、低成本的实现应用开发,对目前技术开发工作提出了新的挑战。

在广东移动已有基础设施基础上,研究应用系统软件开发体系与技术开发架构,建立一套有实际指导意义的统一应用建设标准开发体系规范,实现一套可运行的“统一应用基础开发平台”基础软件,并基于该基础开发平台实现典型应用功能开发实例,用于指导后续应用软件开发。

广东移动管理域应用系统众多,建立统一的应用建设体系,对于公司应用建设的标准化、规范化、降低成本以及技术提升有着非常重大的意义,为后续持续性发展奠定基础。

1 应用开发现状分析

1.1 应用开发环境现状调研分析

1.1.1操作系统

根据近两年综合管理域应用开发项目使用操作系统情况统计,更多项目采用Linux操作系统,占比超过60%,Windows操作系统的项目占比约25%,而前期旧系统大多为Window操作系统,Linux系统比重在逐步增大。

1.1.2 数据库

根据对关系数据库分析结果,目前综合管理域主要使用数据库为Oracle,占比达到55%,MySQL占比30%,SQL Server占比15%。

非关系数据库目前综合管理域应用使用Redis占比达到92.3%。

1.1.3中间件

中间件中开源的Tomcat占比已超过50%,其次为Weblogic,而Weblogic更多是早期建设的系统使用。

1.1.4负载均衡

基于软件实现负载均衡器,目前综合管理域主流负载均衡器为Nginx占比超过80%。

1.2 应用开发技术调研分析

目前管理域应用主要以单体式分层应用开发架构为主,按照分层结构来看,展现层以服务端的JSP技术为主,早期基于.net/asp实现的应用也逐步替换为采用JSP实现;业务层框架基乎所有应用都采用了Spring框架,而Spring框架实际上也是目前业务层主流首选框架;控制层框架目前MVC开发框架基本以SpringMVC和Struts为主,SpringMVC和Struts控制层框架使用基本持平,但新开发应用主要采用SpringMVC;持久层框架使用种类较多,除厂家自定义框架外,主要的开源框架包括Hibemate、iBatis、MyBatis、Nutz等,其中iBatis是MyBatis的前身,Nutz为国产开源框架,目前使用较少。

2 主流应用软件开发架构分析

2.1 主流技术架构研究分析

目前主流的Web应用开发架构主要包括单体式分层架构、事件驱动架构(EDA)、分布式架构(SOA、微服务)等几种架构类型。

单体式分层架构是目前最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节,层与层之间通过接口通信。

事件驱动架构(EDA)由一系列相关组件构成,各组件以异步方式响应事件完成业务功能,一个典型的事件驱动系统由事件消费者和事件产生者组成,适合于异步的环境,但不适合对实时性要求比较高的系统。

SOA是面向服务的架构,其中包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能。各个服务通常以独立形式部署运行,服务之间通过网络进行调用,通过ESB来连接各个服务节点,集成基于不同协议的不同服务,实现消息的转化、解释以及路由,以此来让不同的服务互联互通,SOA注重的是系统集成。

微服务架构是服务导向架构的升级,每一个服务就是一个独立的部署单元,这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。是目前最为流行的Web应用开发架构。微服务架构关注的是完全分离。

随着容器技术的出现,为微服务提供了非常便利的条件,比如更小的部署单元,每个服务可以独立运行。

2.2 技术开发框架研究分析

技术开发框架的研究分析主要从微服务开发框架、服务端开发框架、前端开发框架等几个方面进行具体的分析。

2.2.1 微服务开发框架

根据省公司应用建设发展规划,统一的微服务框架将提供支持Dubbo、SpringCloud、ServiceComb三种框架技术。Dubbo是SOA时代的产物,专注于服务治理,关注点主要在于服务的调用、流量分发、流量监控和熔断。ServiceComb功能大而全,开源时间短,需要时间来不断完善。Spring Cloud诞生于微服务架构时代,考虑的是微服务治理的各个方面,由于依托了Spimg、Spimg Boot的优势,Spimg Cloud是一个微服务架构生态。

2.2.2服务端开发框架

目前开发JavaWeb应用主流的开发框架有SSH( Struts2+Spring+Hibemate)、SSM( SpringMVC+Spring+MyBatis),越来越多的开发团队目前都己转向SSM框架。基于SSH与SSM开发框架的对比以及发展趋势,选择SSM开发框架更适合未来的发展方向,更大的开发技术人员群体也使得团队更容易组建。

2.2.3 前端开发框架

目前前端UI开发框架众多,使用较多的主要是Bootstrap、iQuery. Ext、Dojo等。为了更好的支持MVC体系结构,出现了Angular、Vue、React等流行的前端框架,方便开发人员能构建出动态、美观的Web应用程序。Angular实现了Model-View-ViewModel (MVVM)模式,跨浏览器兼容,适合大型应用开发,支持Native应用程序、混合应用程序和Web应用程序开发。Vue使用较简单,关注于ViewModel或双向数据绑定,适合开发小规模应用。React的核心思想是封装组件,各个组件维护自己的状态和UI,当状态变更,自动重新渲染整个组件。

3 基础开发平台与应用开发设计实现

3.1 基础开发架构设计

目前微服务架构己成为主流开发架构和发展趋势,随着云计算技术的发展,采用微服务架构己成为未来广东移动应用建设的必然趋势,符合广东移动统一应用建设总体规划。

通过对比Dubbo、SpringCloud、ServiceComb三种框架技术,SpringCloud是目前成熟的开源框架,具备完善的体系,己成为主流,本次基础开发平台的架构将采用SpringCloud实现微服务架构,利用SpringCloud体系提供的丰富组件来实现,主要组件及实现说明如下:

(1)网关服务:处理用户请求,转发和控制,基于Gateway组件实现;

(2)负载均衡:实现服务负载均衡访问,基于Ribbon组件;

(3)服务注册中心:实现所有服务的注册、发现,采用Eureka组件实现;

(4) Restful客户端:实现Restful接口支持,内部组件之间基于Feign进行交互;

(5)可扩展组件:采用配置中心、Hystrix、Tunbine等实现统一配置、监控、接口方式等辅助应用。

基于微服务架构的应用,结合前后端分离的开发模式是目前应用开发的最佳实践,前端为纯静态页面,通过接口从后端获取数据展示和提交数据到后端,后端作为服务端封装为微服务,基于SpringCloud各种组件部署运行,从而达到各项灵活的服务注册发现、负载均衡、监控、动态扩容/缩容等能力。

(1)前端采用纯静态的HTML进行实现,基于Vue开发框架,部署于Nginx,可根据需要轻松实现负载均衡;

(2)后端基于SpringCloud体系组件进行开发、对接并实现相应的功能逻辑;

(3)基于微服务架构提供了良好的解耦、灵活性和扩展性,对于开发框架、语言、数据库等可根据微服务实际场景及需求进行选择。

基于微服务架构的统一应用基础开发平台的整体软件逻辑架构设计如图1。

3.2 运行架构设计

广东移动已有成熟完善的基础设施,操作系统采用Lmux的比重在逐步增大,而Windows系统仍然还有较多系统在使用,很长一段时间内Linux与Window仍然是主流使用的系统,目前相应的技术以及软件开发相关技术和环境仍然对Linux和Windows环境给予支持。运行环境方面采用何种操作系统影响不大,但应用开发需要考虑对Linux和Windows环境的支持。

基于微服务的基础开发平台可基于SpringBoot以Jar包的形式发布,仅基于一条简单的Java指令即可启动应用并独立运行,简单易管理。应用同时可支持容器化部署,如基于Docker部署并制作镜像,通过PaaS及管理平台进行管理和维护。

基于微服务架构的统一应用基础开发平台最终实现的应用系统整体运行结构如图2。

3.3基础功能设计

广东移动管理域应用都需要实现组织机构和用户管理(基于用戶中心进行同步)、角色权限管理、菜单管理、认证授权、日志管理等基础功能,基础开发平台对以上基础功能进行整合封装,作为基础服务提供业务使用。

基于基础微服务,对办公通用个人事务、系统管理、标准接口对接等常用应用功能等进行实现,保证基础平台整体功能完整、可用。

3.3.1基础微服务功能

通过对系统基本功能、标准接口功能封装为微服务,以Restful接口形式提供应用的业务功能直接调用使用。为了避免服务过度拆分造成服务结构过于复杂,将所有的基础服务作为一个统一的服务应用进行发布,简化基础微服务的部署使用难度。

3.3.2常用应用功能

除了基础微服务外,管理域应用仍有部分功能需要作为常用的应用功能直接提供,避免应用重复进行开发实现,这些功能包括系统管理功能(模块菜单、角色权限、机构人员、系统日志等)、个人事务(系统待办/待阅、已办/已阅、起草中心、个人设置)等,通过对这些基本常用应用功能的建设,达到基础平台部署即可具备使用能力,只需要在此基础上进行特定的业务功能的实现即可,应用开发团队不必关注这些基础功能,从而也提升了应用建设的效率和质量。

3.3.3 标准接口对接

广东移动管理域应用的建设,都需要涉及内部多个基础系统的标准接口对接,接口规范标准,通过对这些标准接口进行实现,作为应用基础能力,配置即可使用,避免重复建设。主要包括的标准接口有:

(1)人员机构同步接口:实现通用的机构、人员信息的同步、接收处理;

(2)统一身份认证接口:按照接口规范实现用户身份认证、单点登录功能;

(3)门户统一待办接口:将流程审批与业务办理的个人待办、待阅信息同步至门户或删除待办、待阅,保持通过门户统一处理个人待办、待阅事项;

(4)短信发送接口:实现短信发送接口对接,实现短信通知的发送功能。

以上标准接口实现后,应用建设时只需要进行基本的参数配置即可快速实现相应的系统整合。

3.4 应用二次开发设计

为了更好的验证微服务架构的统一应用基础开发平台实际效果,开发建设一个应用案例,通过案例验证微服务架构适应能力、基础平台微服务基础支撑能力以及与传统应用效果的对比,该案例成果将能够提供其它云应用做为标准实现进行参照。

基础平台己具备了常用的基础能力与应用功能,应用二次开发只需关注业务即可,按照基础平台设计、开发、编码规范进行实现即可。

基础微服务提供业务应用二次开发,可以采用两种模式进行开发:

(1)每个应用建设前,独立部署一套基础平台,在此基础上进行业务功能的设计、开发工作,该模式适合业务复杂、用户量大、使用频繁的业务应用;

(2)多个应用共同使用同一套基础平台,通过微服务接口进行共用基础服务功能的访问,完成业务应用功能,该模式适合业务简单、用户量不大的情况。

以上两种模式都建议业务应用功能独立部署运行,调用基础服务并可向外部提供业务功能的服务。

3.5 相关规范设计

现有综合管理域应用规划目标是更好的响应业务的统一架构、统一平台、快速开发、集中运维,这就需要减少个性化,实现统一,规范系统的开发及维护。规范应用的建设过程、建设标准、技术路线等是达成以上目标的快速、高效的方式。需要一套开发规范体系作为后续基础开发平台使用和管理域新建应用开发的指导规范。规范体系包括应用运行环境规范、设计与开发规范、发布与更新规范、UI/UE界面规范共四个方面:

运行环境规范:规定了统一应用基础开发平台的建议运行环境,结合该运行环境规范规划应用的运行环境,主要内容包括所需的运行资源要求、软件环境及版本、应用基本配置等。运行环境规范可以指导应用开发厂商快速的搭建统一应用基础开发平台的开发环境,规划所需资源并应对有关环境的问题处理方法。

设计与开发规范:设计开发规范对应用系统功能的设计、开发提供了标准化的方法,通过标准规范提高项目管理水平,通过开发框架提高系统标准化。设计开发规范主要包括应用设计工具、代码体系结构、基础组件的使用规范、编码规范等。

发布与更新规范:发布与更新规范对开发完成的应用系统发布到测试环境与运行环境的规范,包括基础环境的配置、应用参数配置、系统更新包规范、发布或更新检查与排错规范等。

UI/UE界面规范:界面规范规定了界面开发的通用规范以及基础开发平台提供的标准前端组件的使用规范、参考样例等,以便保持应用界面统一、降低开发难度。

4 总结

通过本次统一应用基础开发平台的研究与实施,以理论结合实践的形式对当前广东移动微服务架构、统一应用开发模式进行了分析、研究和探索,为后续管理域应用开发建设建立示范性的基础标准,实现了当前主流开发技术的应用和整合,降低后续应用开发的復杂度;合理的架构及开发模式大大提升了应用的处理能力、用户体验,增强了平台基础安全性、可靠性;平台架构有利于充分利用基础资源,与PaaS平台发展规划思路一致,为后期很好的适应及融入PaaS平台打好了基础。

参考资料

[1]《综合支撑平台服务规范-VI.0.0》中国移动通信集团广东有限公司.

[2]《管理支撑软件项目管理办法>中国移动通信集团广东有限公司信息系统部.

[3]Apache Dubbo官方网站http: //dubbo.apache.org

[4] SpringCloud官方网站https: //spring.io/projects/spring-cloud

[5] Vue.js官方网站ht tps: //cn.vuejS.org/

[6] AngularjS官方网站https: //angularjs.org/

[7]React官方网站https: //reactjs.org/

作者简介

匡华(1977-),男,湖南省人。大学本科学历,高级工程师。研究方向为云计算。

猜你喜欢

微服务架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
基于云服务的图书馆IT架构
LSN DCI EVPN VxLAN组网架构研究及实现
微信公众平台在医院图书馆的应用现状调查
从单一模式系统架构往微服务架构迁移转化技术研究
一种基于FPGA+ARM架构的μPMU实现
具身学习环境SMALLab的架构分析及启示