标题 | 基于SpringCloud的电信综合服务保障系统微服务改造之路 |
范文 | 【摘?要】随着电信业务的多元化发展,对后端运营支撑的电信综合服务保障系统提出了更高的要求。传统的单体式应用逐渐暴露出自身架构的缺陷,如复杂性高、扩展性差、技术栈单一。为改进单体式应用的不足,论文提出了基于SpringCloud的微服务架构设计方案。经过改造的电信综合服务保障系统更易于开发、理解和维护,并且不受技术栈的限制。 【Abstract】With?the?diversified?development?of?telecommunication?business,?higher?requirements?are?put?forward?for?the?guarantee?system?of?telecommunication?integrated?service?supported?by?back-end?operation.?The?traditional?single?application?has?gradually?exposed?the?defects?of?its?own?architecture,?such?as?high?complexity,?poor?scalability?and?single?technology?stack.?In?order?to?improve?the?disadvantages?of?single?application,?this?paper?proposes?a?micro-service?architecture?design?scheme?based?on?SpringCloud.?The?improved?guarantee?system?of?telecommunication?integrated?service?is?easier?to?develop,?understand?and?maintain,?and?is?not?limited?by?the?technology?stack. 【關键词】SpringCloud;微服务架构;改造 【Keywords】SpringCloud;?micro-services?architecture;?transformation 【中图分类号】TP311???????????????????????????????????????【文献标志码】A??????????????????????????????????????????????【文章编号】1673-1069(2019)11-0090-02 【作者简介】刘斌(1981-),男,福建福州人,工程师,从事软件工程研究。 1?引言 电信业在近几年得到了蓬勃的发展,业务更加复杂,关系更加紧密,数据更加多样化。原先旧的综合服务保障系统逐渐显露出自身架构的缺陷:所有功能集中在一个项目中,逻辑复杂、模块耦合、代码臃肿,修改难度大,系统错误隔离性差、可用性差,任何一个模块的错误均可能造成整个系统的宕机。加之为顺应电信IT系统的Paas云平台化改造,决定对现有综合服务保障系统进行基于SpringCloud的微服务化改造[1]。 2?微服务简介 微服务是将原本单一型的应用分解为多个微服务,各个微服务独立运行在自己的进程中,可分别有自己的数据库。微服务之间使用REST或者RPC等协议进行通信。具有易于开发和维护、启动更快便于部署、更宽的技术栈等优点。 3?微服务改造实践 综合服务保障系统是一套在用系统,所以如果从头构建全新的基于微服务的应用,充满了风险,有可能导致失败。相反,应当采取渐进式重构旧系统的策略,逐步构建一个由微服务构成的应用,与旧系统并行运行。随着时间推移,原先由旧系统实现的功能不断收缩,最后或者完全消失,或者转变为微服务。转化的实现策略包括以下几个方面: 策略一:拆分前端和后端。将表示层与业务逻辑和数据访问层分离。表示层是一个应用,业务和数据访问逻辑是一个应用。表示层应用远程调用业务逻辑层。 策略二:提取微服务。将旧系统内的模块转变为独立的微服务。每当提取模块将其转化为服务,旧系统就会收缩。一旦转化了足够的模块,旧系统或者彻底消失,或者缩小成为另一个微服务。 策略三:新增的业务模块直接微服务化。使旧系统停止继续变大,不再对旧系统开发新的功能,而把新的功能模块开发成为独立的微服务[2]。 4?SpringCloud简介 SpringCloud是一套基于SpringBoot构建的通用工具集,非常适合用于快速地构建分布式系统。作为微服务的开发框架,其整合并增强了微服务架构中常用的组件,如Eureka、Zuul、Hystrix等,具有功能齐全、开箱即用、适用于各种环境等特点。 4.1?Eureka Eureka是一个基于REST服务的服务注册与发现组件,主要包含Eureka?Server和Eureka?Client两个组件。SpringCloud将其集成在子项目Spring?Cloud?Netflix中。 各个微服务启动时,会将自己的信息(如IP、端口、微服务名称等)注册到Eureka?Server,Eureka?Server会存储这些信息。Eureka?Client会周期性(默认30s)地向Eureka?Server发送心跳以续约自己的信息。Eureka?Server会检查超过一定时间(默认90s)没有续约的微服务,如有发现,则会注销该微服务实例。每个Eureka?Server同时也是一个Eureka?Client,多个Eureka?Server实例互相之间通过复制的方式实现注册信息的同步[3]。 4.2?Ribbon Ribbon是一套基于HTTP和TCP的客户端负载均衡工具,由Netflix发布。经由SpringCloud封裝后,Ribbon可以自动地从Eureka?Server中获取服务提供者的地址列表,并基于负载均衡算法(如轮询、随机等),请求其中一个服务提供者实例,也可为Ribbon实现自定义的负载均衡算法。 4.3?Hystrix 微服务架构的应用系统通常包含多个服务层,各服务之间存在一定的依赖关系。底层服务的故障有可能引发级联故障,导致雪崩效应。要防止雪崩效应,必须有一个强大的容错机制。 Hystrix是有Netflix开源的一个工具类库,可以为网络请求设置超时,使用断路器模式,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性和容错性。 4.4?Zuul Zuul是Netflix开源的微服务网关,SpringCloud对Zuul进行了整合与增强,使其能够与Eureka、Ribbon、Hystrix等组件更方便地配合使用。 微服务网关是介于外部客户端(如网页端、手机APP等)和服务器之间的中间层,所有客户端来的请求都通过微服务网关到达后端的应用服务。作为一个边界性质的应用程序,Zuul底层利用各种过滤器实现了以下功能:身份认证与安全、动态路由、性能监控、压力测试、负载分配、静态相应处理等。 4.5?微服务架构 图1???SpringCloud架构图 5?结语 单体应用向微服务架构的重构是一个持续的过程,充满了挑战。实现这一过程不能一味地从头开始重写代码,而是应该渐进式地将单体应用中的功能模块转换成微服务。随着时间的推移,大量微服务逐步形成,旧单体应用的功能逐步下线,最终实现全部改造的目标。 【参考文献】 【1】洪华军,吴建波,冷文浩.一种基于微服务架构的业务系统设计与实现[J].计算机与数字工程,2018,46(1):149-154. 【2】Chris?Richardson.微服务架构的设计模式[M].北京:机械工业出版社,2019. 【3】杨宇,焦丽琴.基于微服务的企业应用设计与实现[J].电子科学技术(北京),2016(5):623-625. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。