01_SOA面向服务的架构_2021-09-27

摘要
2019年1月,我参与了某通讯公司的分布式大容量终端平台项目,我在项目中担任系统架构设计师,主要负责设计系统架构和技术选型。该平台为通信设备商、终端商、运营商建立了一个调度管理上万台真实终端的统一业务平台,实现了分布式大容量场景下各类无线终端的attch/dattach、拨号、网络灌包、流媒体视频点播、VoLTE语音、VoNR视频通话、信令解析、远程投屏、虚拟SIM、FOTA升级、状态监控、休眠节能、KPI分析等四十多个业务功能模块, 以及与PDN、核心网、基站平台、网管等第三方平台的交互管理等。
本文首先简要说明了SOA技术框架的概念、包含的服务类型、主要技术和实现方式,然后详细阐述了如何基于SOA设计理念构建大容量混合终端平台以及具体实施和成效。 目前,平台已稳定运行一年多,实践证明,这种架构设计提高了系统和资源的共享性,达到了服务重用、服务共享的目标,使不同厂商、架构、型号的终端能够有机的灵活整合,与基站平台、核心网的接口对接统一调度,实现资源和信息的共享。

正文
背景:
随着通信技术与移动互联网行业的蓬勃发展,在经历了1G落后、2G追随、3G突破、4G同步、5G引领几个发展阶段,我国已成为世界通信行业全面领先的技术强国。据统计,仅2018年全球智能手机终端出货量就达18亿部,我国移动终端出货量达4.55亿部。移动通信行业的迅猛发展,终端的综合管理已逐渐暴露出了厂商多、型号多、系统固件版本差异大、功能定制裁剪、网络制式(3G4G5G)多、业务复杂、工作场景多变、分布性、零散性等诸多痛点,且用户对多可用性和性能要求较高。
如何测试一辆高铁、一个小区、一个十万人体育馆等高并发、大容量场景下终端及基站的业务能力?终端商、通信设备商、运营商都强烈的希望可以建设一个共享的千级、万级、十万级甚至更多台真实终端统一调度管理的平台,统一管理全国各地的终端,并实现与基站平台、核心网的交互。
我司是为国内外运营商提供2G/3G/4G/5G无线基站与核心网、IMS、固网接入与承载 ICT通信设备及解决方案的大型国有通讯企业。 2019年1月,我所在的RAN(Radio Access Network)研发中心某部总工和项目经理牵头开会分析研讨后,决定开发分布式大容量终端平台项目,由我担任此项目的系统架构设计师,负责整体架构设计和中间件选型。该系统要求开发周期较短,持续迭代,系统灵活性高、可维护性强等,目前已有的零散终端业务与基站平台、核心网等相互独立,形成一座座“信息孤岛”了,不但无法实现数据的共享和业务整合,还造成了重复建设、资金浪费的问题。结合SOA的特点,我们最终采用了面向服务的、基于SOA的企业应用集成。
我们的平台整体采用CS为主BS为辅的混合架构,用到了 微软.net框架、ICE(Internet Communication Engine)跨平台跨语言中间件框架、MySql数据库、IIS、WEB服务器、网络通信业务服务器(包含Iperf、HTTP、FTP等服务)信令log解析服务器等,客户端以WinForm、WPF的windows桌面软件为主QT开发的linux客户端为辅,浏览器主要方便普通用户查看在线终端的状态、业务发起。业务机有x86、PowerPC两种架构,CGEL、Win10、ubuntu三种系统。服务提供者为以太网有线组网的N台业务机(PC机/IRB主机/MPB机架),它有8~32个USB口,通过USB线连接管理UE;服务请求者主要为客户端桌面软件和浏览器。

下面首先介绍SOA架构的内容、特点,以及在本项目中的选型应用和实施效果:(过度到论点2、3)

	SOA是一种面向服务的架构,在这种架构中,所有功能都定义为独立的服务,服务之间通过交互和协调完成业务的整体逻辑。SOA制定了一组实体,包括服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约,这些实体详细说明了如何提供和消费服务。服务提供者提供符合契约的服务,并将它们发布到服务代理。这些服务是自我包含的、无状态的实体,可以由多个组件组成。服务代理者作为存储库、目录库或交换所,产生由服务提供者发布的事先定义的标准化接口,使得服务可以提供给在任何异构平台和任何用户接口使用。这种松散耦合和跨技术实现,使各服务在交互过程中无需考虑双方的内部实现细节、实现技术、以及部署在什么平台上,服务消费者只需要提出服务请求,就可以发现并调用其他的软件服务得到结果。SOA作为一种粗粒度、松耦合的架构,具有松散耦合(服务提供者与服务使用者分离)、粗粒度、服务自治、服务分级、标准化的接口(WSDL、SOAP、XML)、位置和传输协议透明、服务的封装和重用、服务的互操作等几个特点。  SOA主要有操作、服务、业务流程三个主要的抽象级别。

	我们的分布式大容量终端平台选用了ICE中间件及服务框架,它是比CORBA更强大且支持微服务的高性能跨语言跨平台综合框架,集合了RPC、微服务、Storm发布订阅、消息路由、文件分发、Glacier防火墙和NAT穿越一系列功能。下面具体论述其SOA的主要工作角色以及应用过程:
1.服务注册中心
	服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的服务,不过,服务注册中心是整个模型的可选的角色。如果使用静态绑定的服务,服务提供者则可以把描述直接发送给服务请求者。

在分布式大容量终端平台中我们采用了服务注册中心,保证该系统的各个模块、服务的相互独立性与松耦合。同时,服务注册中心的存在也使得服务请求者与服务提供者之间进一步解耦。在服务注册中心包含有服务提供者已发布的终端基础信息与终端网络信息的描述信息,其描述信息主要包括服务功能描述、参数描述、接口定义、信息传递等相关信息。
在我们的平台中使用IceGrid的技术实现,IceGrid提供网格化、负载均衡、复制、自动部署、可管理的servant节点群支撑能力。它是一个Registry.config 配置 注册器、节点文件(XML格式),可以配置注册节点的位置、用户监听客户端连接的协议类型和端口、注册节点的数据存储目录、安全验证方式、管理用户名密码等 。

	2.服务提供者
	服务提供者是服务的所有者,主要完成服务的设计、描述、定义、实现和发布等相关工作,使用WSDL对服务进行详细、准确、规范地描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。经过对终端的特性分析及业务场景的深入研究,对分布式大容量终端平台业务流程进行梳理,考虑到服务粗粒度、松耦合、自包含和模块化等特点进行服务的设计。为了避免服务通信期间,信息量过大,服务之间交互过于频繁,尽量的减少了服务的数量。同时,为了保证服务自身功能的完整性,尽可能的减少服务与系统之间的通信,在分布式大容量终端平台的分析与开发过程中,先行设计,提取出了两个必要、急需的服务便于日后集成使用,其中包括命令执行服务和终端基础信息查询服务。

服务提供者实现IDL定义的服务接口,本平台中通过创建ICE的Slice文件(一种IDL Interface Define Languare)编写服务接口定义(此语言与面向对象的C++/C#语法类似), 然后通过slice2cpp、slice2csharp转换成对应的服务定义头文件源文件添加到客户端服务端工程,定义的服务会自动生成对应编程语言的接口、抽象类、抽象方法。
服务提供者负责实现IDL定义的服务接口,在终端服务中,执行命令是最基础最重要的服务,主要有终端shell命令、AT命令的同步、异步执行,它可以控制终端重启(reboot)、查询信息(如ifconfig)、启动ndk APP等, 这些服务接口的设计。实现都是有服务提供者完成的。待完成服务设计和实现之后,服务提供者采用WSDL进行服务描述,而后再利用UDDI技术将这些服务信息发布至服务注册中心,公布查找和定位服务的方法。

	3.服务请求者
	服务请求者是服务的使用者,虽然服务面向的是程序,但程序的最终使用者仍然是用户。从架构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。请求服务主要有两个流程:
	1).查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。对服务请求者而言,可能会在生命周期的两个不同阶段中涉及查找操作,首先是在设计阶段,为了程序开发而查找服务的接口描述;其次是在运行阶段,为了调用而查找服务的位置描述。
	2).绑定。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。绑定可以分为动态绑定和静态绑定。在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地与服务交互;在静态绑定中,服务请求者已经与服务提供者达成默契,通过本地文件或其他方式直接与服务进行绑定。服务请求者通过服务的endpoint(IP、端口)、协议类型、服务域、服务名等信息在服务注册中心查找到服务后,通过与服务提供者直接建立session长连接会话实现绑定,其连接信息ICE会缓存在本地。
	3)调用。ICE通过代理者的设计模式实现RPC编程,服务请求者可以在本地构造一个远程服务的proxy对象,通过此对象调用服务接口,和操作本地构造的对象方法一样,复杂的socket连接过程、epoll机制等底层实现都由中间件框架实现了。在这期间服务请求者无需了解服务提供者谁是、实现方法、位置信息。
	SOA对于实现企业资源共享,打破了“信息孤岛”。他把应用和资源转换成服务,2.把这些服务变成标准的服务,形成资源的共享。系统更易维护。当需求发生变化时,不需要修改提供业务服务接口,只需要调整业务服务流程或者修改操作即可。

	项目历时10个月,共21个迭代,最终项目成功上线,项目组共23人,软件研发投资共725万。在架构决策阶段,我所设计的架构得到了各部门的认可和采纳,平台上线后,持续稳定运行,尽管经历了终端业务逻辑变更、新增子系统、适配异形终端、5G支持等负责运维状况,但由于设计之初就采用了基于SOA架构的思想,因此能够较轻松的应对,在降低维护难度和成本、方便扩展业务功能、提供系统安全性、稳定性等方面均表现出色。

你可能感兴趣的:(程序人生)