文档介绍:该【微服务平台建设方案 】是由【guoxiachuanyue003】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【微服务平台建设方案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。微服务平台建设方案
1系统设计
1・1总体框架
1・1・1功能架构
微服务平台主要由服务支撑层、基础服务层、通用服务及业务服务层
组成,系统总体功能架构图如下:
前端战用
基础设施
1)基础设施
微服务平台的基础设施包括网络、存储、计算等硬件基础设施,为平台的运行提供基础保障。
服务支撑层
服务支撑层为保证整个服务平台健康、高效运行提供支撑服务,包括服务注册与发现中心、配置中心、日志中心、监控中心、服务限流降级与熔断、微服务网关等支撑服务功能。
基础服务层
基础服务层将平台通用的功能以服务的形式进行封装,为其他业务服务的实施提供基础服务,包括分布式缓存服务、分布式存储服务、搜索服务、消息队列服务、分布式事务服务、任务调度服务、统一认证中心、用户中心、组织机构管理、代办任务中心、流程管理中心等基础服务功能。
通用服务层
通用服务层,是将一般业务功能开发都需要使用的功能进行封装,形成通用服务,提高开发效率,控制开发质量的一种方式。
业务服务层
通过通用服务实现的业务逻辑部署在业务服务层,为前端应用提供服务。
»#l£t
~S±3L
riUH
i
IM£-甲mrcML
l
utg
旧国田n黃■一4皿
绅山耳IGbud也dw却
■*
ntb=flftR^K
耳血臼CkrjdOHtrMTi!
邯伽Ckiud
"Grafana
■=peItIMEM
鱼曲nllin訂
[M
fM
「随
OALEPTH4G
[-除些
"・
鼻的•昔■屏
QRrwetiieus
平台架构以SpringCloud微服务架构为核心进行构建,集成了
SpringCloudAlibabaNacos实现服务注册、发现与配置管理,集成Skywalking、ElasticLogstash、ElasticSearch、ElasticKibana实现日志中心功能、集成Prometheus、Grafana实现监控预警功能、集成SpringCloudAdmin实现微服务监控功能、集成Alibaba
Sentiel实现服务限流、降级与熔断功能,集成SpringCloudGateway实现了微服务网关功能。
、高效运行提供支撑服务,包括服务注册与发现中心、配置中心、日志中心、监控中心、服务限流降级与熔断、微服务网关等支撑服务功能。
、发现与配置
SpringCloudAlibabaNacos是阿里巴巴公司的开源组件,Nacos提供了一组简单易用的特性集,能够快速实现动态服务注册、发现、服务配置、服务元数据及流量管理功能,帮助企业更敏捷和容易地构建、交付和管理微服务平台,是构建以“服务”为中心的现代应用架构服务的基础设施。
服务发现和服务健康监测
Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI或一个独立的AgentTODO注册服务后,服务消费者可以使用DNSTODO或HTTP&API查找和发现服务。
Nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos支持传输层(PING或TCP)和应用层(如HTTP、MySQL、用户自定义)的健康检查。对于复杂的云环境和网络拓扑环境中(如VPC、边缘网络等)服务的健康检查,Nacos提供了Agent上报模式和服务端主动检测2种健康检查模式。Nacos还提供了统一的健康检查仪表盘,帮助根据健康状态管理服务的可用性及流量。
动态配置服务
动态配置服务可以平台以中心化、外部化和动态化的方式管理所有环
境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
动态DNS服务
动态DNS服务支持权重路由,让平台更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务使平台更容易地实现以DNS协议为基础的服务发现,以帮助消除耦合到第三方应用私有服务发现API上的风险。
整个平台分布着大量的服务器、中间件、数据库、微服务组件,对他们的性能、运行指标、健康状况的监控就显得尤为重要。方案通过多种组件集成的方式提供了整个平台的可视化监控中心功能。
分布式链路追踪
随着业务的发展,平台中提供的服务会越来越多,服务之间的调用也会越来越错综复杂,一个请求可能会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,为此方案中通过集成ApacheSkyWalking组件,来帮助我们快速定位和解决问题。
ApacheSkyWalking包括了分布式追踪、性能指标分析、应用和服务依赖分析功能oSkyWalking核心包括探针Probo、后台服务Backend、存储Storage、可视化UI四部分组件,其中存储我们选用
ElasticSearch企业级搜索服务来来存储监控日志信息。
SkyWalking的探针只需要部署到要监测服务的服务器上,即可实现代码无侵入的方式收集服务相关日志信息。
探针收集到数据并进行格式转换后,将数据推送到后台服务,后台服务对收集的数据进行分析和聚和后存储到本方案选取的存储ElasticSearch上,以便可视化展示给最终用户。
服务器与组件监控
为了及时了解平台的健康情况,我们需要建包括服务器的CPU空闲率、CPU使用率、CPU负载率、可用内存、内存使用率、文件系统空闲空间、网络上传、下载速率、磁盘10情况,数据库吞吐量、连接情况、缓冲池使用情况、查询性能,ElasticSearch的查询索引性能、内存分配、垃圾回收情况、集群健康及节点可用性等多种指标。为此,本方案采用Prometheus组件实现平台的监控与报警功能。Prometheus是一套开源的系统监控报警框架,他包含了多个独立的组件,其中有些组件是可选的,我们方案主要选择如下组件:
PrometheusServer:用于收集和存储时间序列数据;
Exporters:用于暴露已有的第三方服务metrics给
Prometheus,本方案中主要用到了Node-Exporter、OracleExporter、Mysqld-Exporter、ElasticSearch-Exporter、Redis-Exporter;
Alertmanager:从Prometheusserver端接收到报警后,会进
行去除重复数据级分组操作,并通过邮件、短信等方式发出报警;
主要工作流程:
Prometheusserve定期从配置好的exporters中拉取metries;
Prometheusserver在本地存储收集到的metries,,记录新的时间序列或者向Alertmanager推送报警信息;
Alertmanager根据配置文件,对接收到的警报进行处理,发出告警;
在图形界面中,可视化显示采集数据;
在各个微服务开发实现过程中,根据业务需要我们会设置一些埋点记录应用日志,比如用Log4j记录应用日志信息,以便我们对应用进行分析排查问题或做统计分析。为了能够实时、可视化的方式对日志进行统计、分析、查看,方案选用ELK开源组件实现日志中心功能。ELK核心组件包括:
Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可
靠和易管理等特点。能对大容量的数据进行接近实时的存储、搜
索和分析操作;
Logstash:数据收集引擎。它支持动态的从各种数据源搜集数
据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
Kibana:数据分析和可视化平台。通常与Elasticsearch配合
使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Filebeat:一个轻量级开源日志文件数据搜集器。在需要采集日志数据的服务上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,实时发送到Logstash进行解析,也可以直接发送到Elasticsearch进行集中式存储和分析。
另外,我们经常遇到一些需要将数据库中的数据同步到
Elasticsearch中,以便提高查询效率、降低数据库服务器压力的情
况,为了实现这样的功能通常有几个方案:
代码实现(双写),针对代码中进行数据库的增删改操作时,
同时进行elasticsearch的增删改操作;
mybatis实现,通过mybatisplugin截取sql语句进行分析,针对insert、update、delete的语句进行处理;
AOP实现,根据制定的规则,如规范方法名,注解等进行切面
处理;
Logstash,利用Logstash支持动态的从各种数据源搜集数据的特性,可以进行数据的同步,只需要简单的配置就能将Mysql、Oracle等数据库的数据同步到Elasticsearch,但是Logstash的原理是每分钟进行一次增量数据查询,将结果同步到Elasticsearch,如果实时性要求不是特别高的情况建议使用此方案;另外,如果是只针对Mysql数据库的情况,可以利用阿里巴巴的Canal组件与Logstash相结合的方式实现实时数据同步到Elasticsearch。
、熔断降级
随着平台中微服务组件的不断增加,如何在其中一个或几个服务出现流量异常的情况下,保障其他服务能够正常运转,而不至于整个平台陷入瘫痪显得越来越重要。
阿里巴巴Sentinel是面向微服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。
流量控制,流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。因此需要根据系统的处理能力对流量进行控制oSentinel让我们从控制资源的调用关系(例如资源的调用链路,资源和资源之间的关系)、运行指
标(例如QPS、线程池、系统负载等)、控制的效果(例如直接
限流、冷启动、排队)等角度,进行灵活组合,从而达到想要的效果。
熔断降级,除了流量控制以外,及时对调用链路中的不稳定因素进行熔断也是Sentinel的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,可能会导致请求发生堆积,进而导致级联错误。因此当检测到调用链路中某个资源出现不稳定的表现(例如请求响应时间长或异常比例升高)的时候则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。