本文是一篇软件工程硕士论文,本文阐述了前后端分离架构在运营商 IT 系统重构中的意义,通过对其中关键技术进行研究,实现了一套可扩展的Web开发框架。该框架支持将大型的系统分解为一系列前后端模块,每个模块专注于各自领域内的功能实现,并实现模块间的单点认证和安全交互机制。
第一章 绪论
1.1 课题背景
随着市场竞争的加剧、网络结构的升级,运营商 IT 架构正在向“平台+应用”的模式演进,将大型系统分解成一系列的能力中心和应用,通过对企业内外部的能力的整合、编排,快速支撑新业务。能力中心按照企业专业划分,实现专业领域的 IT 能力,例如:网络资源中心、客户关系中心、网络运行中心、工单调度中心等,能力中心对外开放 restful 风格的 API,支持远程访问。应用层负责贴近企业的各类岗位角色、面向一线的场景打造工具,如营销支撑工具、装维支撑工具、工程施工支撑工具等。“平台+应用”架构有利于沉淀企业的核心能力,实现能力的共享共建,助力企业在面向新业务、新网络时,充分利用已有能力,快速组装成新的场景应用,降低软件的总拥有成本、快速适应新的市场需求。
“平台+应用”架构对运营商 IT 系统建设和运营模式形成挑战,由于历史原因,运营商大量 IT 系统基于传统“一体化”的架构,系统所有的业务逻辑和交互界面在均在一个模块中设计、开发、部署、运营,因而是一个相对封闭的体系,模块间耦合度高,能力对外不透明。为适应新的架构需求,新一代的应用系统要具备以下特征:(1)微服务架构:系统被分解为一系列可独立部署的子模块,但对用户来说是一个整体。(2)开放性:系统的能力通过 restful协议开放,支持远程访问,对周边系统透明。(3)前后端分离:支持用户交互界面和业务逻辑被划分到不同的子模块中,独立建设和运营。(4)可扩展性:支持通过增加模块的方式扩展系统的功能,不改变现有模块的部署。(5)安全性:保护开放的能力免受非授权访问,支持用户一点登陆,所有子模块通过认证。(6)云原生:系统能够在容器中部署,支持集中监控所有模块的运行状态,支持基于容器技术一键发布、负载均衡、动态伸缩。(7)灰度发布:每个模块均可根据工号配置不同的版本,达到无风险发布的目的。
....................
1.2 研究的目的和意义
本文研究新一代 Web 应用开发的各类技术,在此基础上实现一套可扩展的开发框架,将系统分解为一系列前后端模块并实现了模块之间的安全交互。该框架实现了一般系统的公共功能:员工工号管理、权限管理、角色管理、安全认证、模块管理、菜单管理、公告管理、部署环境管理。该框架支持在基于容器的 PAAS 平台中发布、升级、迁移、负载均衡、扩容、缩容,以满足规模化运维的要求。该框架支持每个模块部署 AB 两套环境,模块间交互式,不同的工号访问不同的环境,以达到模块无风险升级的目的。
本文研究的意义:(1)从实操层面对“平台+应用”的演进思路进行 POC 验证。(2)为企业传统 IT 系统演进提供技术支持,减少新应用的上线时间,提升运营效率。
.........................
第二章 相关技术介绍
2.1 Web 框架基础技术
2.1.1 HTTP
HTTP[20],全称是 HyperTextTransferProtocal(超文本传输协议),是 Web 应用中客户端和服务器之间的交互协议规范,完成客户端向服务端发起请求,服务端向客户端返回请求处理结果的一系列过程。HTTP 协议是一种应用层协议,工作在 TCP/IP 协议基础之上,如图 2.1所示。
........................
2.2 Web 后端技术
2.2.1 RestfulAPI
Restful[22],称为“表述性状态转移”,是一种基于 Http 协议,用于系统模块之间相互调用的接口协议。RestfulAPI 将对外开放的服务表达成 Web 资源,每个 Web 资源都通过 Url 表达其调用地址。客户端通过 Url 发起 Http 请求对 Web 资源进行 get、post、put、delete 等操作,RestfulAPI 允许 web 服务的设计者根据需求实现四种操作的业务逻辑。
例如,用户管理模块提供对用户信息进行查询、新增、修改、删除的服务,RestfulAPI 将用户作为一种资源,对应的 url 为:http://x.x.x.x/users。
调用用户管理模块的接口查询 id 为 1 的用户信息,则发起 http 请求如下:
Get /users/1.
调用用户管理模块的接口查询用户信息,要求分页查询每页 20 条记录,返回第 1 页,则发起 Http 请求如下:
Get /users/page?pageIndex=1&pageSize=20
Spring 框架[23]是 J2EE 应用开发的集成解决方案,提供了 IOC(控制反转)和 AOP(面向切面)两种核心机制,为应用程序内部各模块之间实现高内聚、低耦合提供了支持。
IOC,又称“控制反转”,是一种根据配置实例化 Java 对象,管理对象生命周期,组织对象之间关系的设计思想。Spring 框架将纳入生命周期管理的 Java 对象称之为”Bean”,Spring框架在启动时自动创建 Bean,并将 Bean 放到 Spring 的上下文中。如果某个 Bean 申明需要关联另外一个 Bean,Spring 框架自动建立 Bean 之间的关联。当某个 Bean 申明需要关联另外一个 Bean 时,可以申明关联另外一个 Bean 的接口,Spring 会自动从上下文中查找实现该接口的 Bean,从而建立两者之间的关联。
.............................
第三章 系统概要设计................... 41
3.1 总体架构......................... 41
3.2 功能架构......................... 42
第四章 系统功能实现............... 61
4.1 前端实现............................... 61
4.1.1 口令认证........................ 61
4.1.2 单点认证....................... 63
第五章 总结与展望..................... 127
5.1 总结....................... 127
5.2 展望............................. 127
第四章 系统功能实现
4.1 前端实现
4.1.1 口令认证
口令认证界面由 oauth-web 模块实现,后端 restful 服务由 oauth-rest 模块实现,如图 4.1所示,访问地址:http://oauth-web-a/login?clientId=portal-web.
.......................
第五章 总结与展望
5.1 总结
本文阐述了前后端分离架构在运营商 IT 系统重构中的意义,通过对其中关键技术进行研究,实现了一套可扩展的Web开发框架。该框架支持将大型的系统分解为一系列前后端模块,每个模块专注于各自领域内的功能实现,并实现模块间的单点认证和安全交互机制。相比于传统的一体化开发框架,该框架具有如下优势:
(1)按照“平台+应用”的设计思想实现了一套应用模板,集成关键技术,为企业搭建能力中台、通过灵活组合编排的方式敏捷支撑新的业务提供技术支持。
(2)平台具备可扩展性,新的前后端模块只要符合安全交互规范即接入,并可独立设计、开发、部署和运营。
(3)系统拆解为轻量级模块后,支持在基于容器的 PAAS 平台中发布、监控、调度、扩容、缩容、负载均衡,符合企业建设统一 PAAS 平台的战略。
(4)该框架实现每个模块部署 AB 两套环境,不同的工号使用不同的环境,以支持版本发布时基于少量工号测试,满足白天无风险版本升级的要求。
参考文献(略)