您好, 访客   登录/注册

基于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.
转载注明来源:https://www.xzbu.com/3/view-15115242.htm