基于SpringCloud的电信综合服务保障系统微服务改造之路

2019-12-18 03:06刘斌
中小企业管理与科技 2019年33期
关键词:保障系统网关客户端

刘斌

(中邮科通信技术股份有限公司,福州350001)

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 结语

单体应用向微服务架构的重构是一个持续的过程,充满了挑战。实现这一过程不能一味地从头开始重写代码,而是应该渐进式地将单体应用中的功能模块转换成微服务。随着时间的推移,大量微服务逐步形成,旧单体应用的功能逐步下线,最终实现全部改造的目标。

猜你喜欢
保障系统网关客户端
“深海勇士”号载人潜水器运维保障系统设计及应用
基于FPGA的工业TSN融合网关设计
建立智能地质保障系统的8大关键技术
如何看待传统媒体新闻客户端的“断舍离”?
信号系统网关设备的优化
天地一体化网络地面软网关技术及其应用
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
“蓝天王国”奇遇记(十四)——飞机的生命保障系统