APP下载

分布式微服务应用系统架构设计与实践

2022-12-06陈英达杨春松聂维

微型电脑应用 2022年11期
关键词:数据总线分片分布式

陈英达,杨春松,聂维

(1.南方电网数字电网集团有限公司,广东,广州 510000;2.国电南瑞科技股份有限公司,江苏,南京 210000;3.润和软件股份有限公司,江苏,南京 210000)

0 引言

随着近几年业务数字化建设的迅猛发展,基于传统单体架构的应用系统已无法及时响应业务的快速变化。为实现电力业务可持续发展,完成从传统应用系统向新一代数字化互联网应用的转型,某电网公司(以下简称公司)于2019年在《数字化转型和数字电网建设行动方案》中提出了基于公司云平台,采用微服务架构建设新业务系统、改造存量业务系统的目标,从而提升业务应用的服务化水平,支撑企业数字化转型和数字电网建设战略的落地[1]。

现阶段,公司正积极推进微服务应用建设及改造工作,前期已选型采用SpringCloud架构作为微服务技术框架并构建了集中式微服务应用系统架构[2]。但随着各类业务系统的部署从省地二级向网省地一级的集约化模式转变收拢,业务应用的微服务架构体系逐步由省级集中式(各分省自行部署与管理)扩展至覆盖网级、省级、地市级的分布式(网级总部统管,全网分布式部署),一些关键性技术问题也逐渐暴露并亟待解决,主要体现在以下两方面:

(1) 注册中心服务节点存在高负载风险。随着业务规模不断增长,当服务实例数量达到一定量级时,注册中心负载压力开始显现,进而影响微服务应用的运行性能。

(2) 业务数据爆炸式增长,数据库读写性能下降。自微服务应用开展分布式架构建设以来,业务数据量急剧增加,导致数据库出现读写性能下降、索引效率低、备份和恢复耗时长等问题。

为解决上述问题,本文提出了一种基于SpringCloud和MyCat技术栈的分布式微服务应用系统通用技术架构,并实现了注册中心动态扩缩容与数据分片等关键技术,为公司分布式微服务应用架构的转型提供了有效技术支撑。

1 分布式微服务应用系统技术架构

在公司已有的集中式微服务架构体系基础上,开展分布式微服务应用系统技术架构的研究。通过构建该技术架构,深入分析技术架构体系中各技术组件之间的协同关系,支撑分布式微服务应用的落地实现与高效运行。

分布式微服务应用系统技术架构由分布式微服务总线与微服务分布式数据总线两大技术栈构成,如图1所示。各类分布式微服务挂载在分布式微服务总线与微服务分布式数据总线上,分布式微服务总线SpringCloud提供服务注册、发现、配置、调用及监控等微服务治理功能[3],微服务分布式数据总线MyCat提供微服务的分布式数据管理与持久化功能。

图1 分布式微服务应用系统技术架构

1.1 分布式微服务总线

分布式微服务总线按功能层次分为接入模块、基础模块与支撑模块。

接入模块用于实现外部应用对微服务内部的安全接入访问,技术组件包括Nginx负载均衡、API网关、JWT认证、OAuth2授权以及Security攻击防护等。Nginx负载均衡用于实现对API网关服务器的负载均衡选择[6];API网关为外部访问调用微服务提供统一入口;JWT 用于认证用户的身份信息,认证成功后的用户在请求某个服务前,通过OAuth2授权得到访问令牌,再经API网关将用户请求转发至后台微服务,并通过路由策略实现微服务调用的动态路由更新;Security用于保护微服务免受XSS攻击、SQL注入等外部攻击,实现微服务的安全、正常访问。

基础模块用于实现微服务的注册、调用等功能,技术组件包括Eureka注册中心[7]、Ribbon负载均衡以及Feign服务调用等。Eureka提供所有微服务的统一注册;微服务之间通过Feign进行声明式调用;Feign通过Ribbon负载均衡从注册中心获取目标微服务的服务器地址列表;在后续网络请求过程中,Ribbon会以负载均衡的方式把微服务调用请求分摊至不同微服务实例上。

支撑模块用于实现微服务的配置、监控等功能,技术组件包括Apollo配置中心、Elastic-Job任务管理、RabbitMQ消息队列、Hystrix与SpringBootAdmin应用服务监管中心以及ELK(Elasticsearch、Logstash、Kibana)日志监控等。Apollo配置中心为微服务提供动态配置信息的统一管理;Elastic-Job实现分布式微服务的全局任务调度;RabbitMQ完成分布式微服务应用系统之间的异步通信;Hystrix进行微服务应用的限流熔断处理;SpringBootAdmin用于监视与管理微服务应用程序的运行状态;ELK提供分布式微服务应用系统的日志监控服务。

1.2 微服务分布式数据总线

微服务分布式数据总线相关技术组件包括MyCat服务、分布式数据库、Redis分布式缓存以及HDFS分布式文件系统。MyCat服务集群位于分布式微服务应用及其自身数据库的中间,灵活解耦应用与数据库,提供分布式异构数据库的访问与路由,以及分库分表、读写分离、分布式事务管控等功能;分布式数据库提供数据持久化能力;Redis用于实现数据的分布式缓存;HDFS为分布式文件系统提供超大文件管理。

2 分布式微服务应用系统关键技术

分布式微服务应用系统技术架构中虽然探讨了分布式微服务总线与微服务分布式数据总线的技术实现框架及关联关系,但需结合各类微服务应用系统的实际业务需求,对架构关键技术点进行重点识别梳理与研究分析,并完成定制化创新与改进设计,以解决分布式微服务应用建设过程中暴露出现的注册中心高负载、数据库读写性能下降等问题,确保分布式微服务应用系统架构能有效支撑应用的业务需求。

2.1 基于Apollo的Eureka注册中心动态扩缩容

大规模分布式微服务应用系统中微服务数量庞大,在高并发情况下,注册中心作为微服务治理最基础的组件,存在高负载风险[4]。通过采用本文设计的注册中心服务集群动态扩缩容的方式,实现多个微服务注册中心实例协同运行,从而保证注册中心的高性能,提升微服务应用系统的运行能力。在实际应用中,通过Apollo配置中心组件完成Eureka-Server的动态添加与删除,从而实现Eureka注册中心的自动动态扩缩容。基于Apollo配置管理的Eureka注册中心动态扩缩容工作原理,如图2所示。

图2 基于Apollo配置管理的Eureka注册中心动态扩缩容工作原理

2.2 基于MyCat的数据分片

随着公司微服务应用部署模式从省级集中式架构逐步延伸至网、省、地市的分布式架构,各类业务应用系统的复杂度呈指数级上升,数据量与并发量也越发庞大,从而导致数据库服务器出现数据操作开销大、查询慢、存储空间不足等问题[5]。通过采用本文设计的基于MyCat的数据分片技术,按照业务关联程度将存储于单个物理单元中的数据拆分分片(垂直分片与水平分片相结合方式进行数据分库分表)至数据库集群的各节点上,以分摊单个物理数据库的读写压力,突破数据库在分布式微服务架构中的瓶颈。以公司统一服务平台的数据分片为例,基于MyCat的数据分片工作原理如图3所示。

3 分布式微服务应用系统架构实践

分布式微服务应用系统架构体系自发布上线以来,已在公司电网管理平台、统一服务平台等多个微服务重点项目中得到了应用实践,有效增强了分布式微服务应用系统的可用性以及稳定性,大幅提升了系统性能。

(1) 提高应用系统运行性能。针对分布式微服务应用系统中访问压力较大的微服务,在服务注册中心集群和配置中心集群等组件的协同配合下,实现了微服务多实例的自动化弹性伸缩部署,进而提高应用系统的整体运行性能。以公司电网管理平台为例,经过分布式微服务应用系统架构改造后,200并发量下的TPS(每秒处理事务数,Transactions Per Second)数值从改造前的7 600提升至13 000,平均响应时间从改造前的135 ms降低至22 ms。

(2) 降低数据库压力。利用微服务分布式数据总线上的数据分片技术,可有效解决分布式微服务系统中数据库扩展能力有限、数据库响应变慢等问题,在满足分布式事务一致性的前提下,提升了响应连接数,降低数据库负载压力,如公司统一服务平台,在并发量为1 000的情况下,数据传输速率提高约20%。

4 总结

本文针对分布式微服务应用建设过程中暴露出现的注册中心高负载与数据库读写性能下降等问题,提出了一种基于SpringCloud分布式微服务总线与MyCat微服务分布式数据总线的分布式微服务应用系统通用技术架构,并研究设计了注册中心动态扩缩容与数据分片等关键技术。该架构体系有效提升了分布式微服务应用系统的可用性、可靠性以及稳定性,并大幅提高了系统运行性能,为公司数字化转型提供有力支撑。

图3 统一服务平台中基于MyCat的数据分片工作原理

猜你喜欢

数据总线分片分布式
上下分片與詞的時空佈局
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
基于模糊二分查找的帧分片算法设计与实现
分布式光伏热钱汹涌
智能电网调度控制系统中的数据总线技术研究
分布式光伏:爆发还是徘徊
基于ASP.NETSignalR的实时Web功能的实现
基于DDS的分布式三维协同仿真研究
现场总线技术在电厂自动化控制中的应用