当前位置:首页 > 科技  > 软件

SpringCloud Alibaba体系一览

来源: 责编: 时间:2023-11-08 09:11:13 244观看
导读Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。本文基于官方文档,对整个体系做了整

Zfz28资讯网——每日最新资讯28at.com

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。本文基于官方文档,对整个体系做了整体梳理。Zfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

SpringCloud Alibaba体系一览Zfz28资讯网——每日最新资讯28at.com

注册中心-Nacos

Nacos(Dynamic Naming and Configuration Service):一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Zfz28资讯网——每日最新资讯28at.com

Nacos就是注册中心+配置中心的组合 --> 等价于 Nacos = Eureka+Config +BusZfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

注册中心对比Zfz28资讯网——每日最新资讯28at.com

CAP原则:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。分布式系统要么满足CA,要么CP,要么AP。无法同时满足CAP。Zfz28资讯网——每日最新资讯28at.com

Nacos支持AP和CP切换。何时选择使用何种模式?Zfz28资讯网——每日最新资讯28at.com

  • 如果不需要存储服务级别的信息且服务实例是通过nacos-chient注册,并能够保持心跳上报,那么就可以选择AP模式。 当前主流的服务如Spring cloud 和 Dubbo 服务,都适用于AP模式。 AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
  • 如果需要在服务级别编辑或者存储配置信息,那么CP是必须。K8S服务和DNS服务则适用于CP模式。 CP模式下则支持注册持久化实例,此时则是以 Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错识。

服务调用-OpenFeign

(1)Feign

Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端Zfz28资讯网——每日最新资讯28at.com

Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。 Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务Zfz28资讯网——每日最新资讯28at.com

依赖:
spring-cloud-starter-feign
Zfz28资讯网——每日最新资讯28at.com

(2)OpenFeign

OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等等。Zfz28资讯网——每日最新资讯28at.com

OpenFeign的@Feignclient可以解析SpringMvc的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。Zfz28资讯网——每日最新资讯28at.com

依赖:
spring-cloud-starter-openfeign
Zfz28资讯网——每日最新资讯28at.com

负载均衡-LoadBalancer

从Spring Cloud 2020版本开始,Spring Cloud移除了 Ribbon,使用Spring Cloud Loadbalancer作为客户端的负载均衡组件。其使用方式与Ribbon基本兼容,可以从Ribbon进行平滑过渡。Zfz28资讯网——每日最新资讯28at.com

两种负载均衡的客户端:Zfz28资讯网——每日最新资讯28at.com

(1)RestTemplate

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。Zfz28资讯网——每日最新资讯28at.com

(2)WebClient

WebClient是从Spring WebFlux 5.0版本开始提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具。它的响应式编程的基于Reactor的。WebClient中提供了标准Http请求方式对应的get、post、put、delete等方法,可以用来发起相应的请求Zfz28资讯网——每日最新资讯28at.com

以RestTemplate配置LoadBalaced为例,二者对比:Zfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

  • 都是使用LoadBalancerInterceptor作为RestTemplate的拦截器。
  • 在LoadBalancerInterceptor中持有LoadBalancerClient对象,在Spring Cloud LoadBalancer中是BlockingLoadBalancerClient,在Spring Cloud Ribbon中是RibbonLoadBalancerClient。
  • LoadBalancerClient中持有NamedContextFactory对象,在Spring Cloud LoadBalancer中是LoadBalancerClientFactory,在Spring Cloud Ribbon中是SpringClientFactory。
  • Spring Cloud LoadBalancer通过实现ReactorServiceInstanceLoadBalancer接口自定义负载均衡器,Spring Cloud Ribbon通过实现ILoadBalancer接口。
  • Spring Cloud LoadBalancer通过注解@LoadBalancerClient或@LoadBalancerClients实现自定义配置,Spring Cloud Ribbon也可以使用这两个注解,另外还可以使用@RibbonClient或@RibbonClients。
  • Spring Cloud LoadBalancer支持响应式编程负载均衡,即结合Spring Web Flux使用,Spring Cloud Ribbon是不支持的。
  • 目前Ribbon提供的负载均衡算法实现较Spring Cloud LoadBalancer更丰富。

微服务网关-Gateway

Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。Zfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

Spring Cloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+Spring Boot 2.0和 Project Reactor等技术开发的网关,它旨在为微服务架构提供─种简单有效的统一的API路由管理方式。Zfz28资讯网——每日最新资讯28at.com

SpringCloud Gateway作为 Spring Cloud 生态系统中的网关,目标是替代Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。Zfz28资讯网——每日最新资讯28at.com

Spring Cloud Gateway的目标提供统一的路由方式且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。Zfz28资讯网——每日最新资讯28at.com

SpringCloud Gateway使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架。Zfz28资讯网——每日最新资讯28at.com

微服务限流-Sentinel

Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Zfz28资讯网——每日最新资讯28at.com

Sentinel 具有以下特征:Zfz28资讯网——每日最新资讯28at.com

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C++ 等多语言的原生实现。
  • 完善的 SPI 扩展机制:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

Zfz28资讯网——每日最新资讯28at.com

Sentinel 的主要特性Zfz28资讯网——每日最新资讯28at.com

分布式事务-seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Zfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

一个典型的分布式事务过程:Zfz28资讯网——每日最新资讯28at.com

分布式事务处理过程可以概括为:1 ID + 3组件模型Zfz28资讯网——每日最新资讯28at.com

Transaction lD XID :Zfz28资讯网——每日最新资讯28at.com

  • 全局唯一的事务ID

三组件概念 (opens new window)Zfz28资讯网——每日最新资讯28at.com

  • Transaction Coordinator (TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚;
  • Transaction Manager (TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议;
  • Resource Manager (RM):控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚

处理过程:Zfz28资讯网——每日最新资讯28at.com

  • TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID;
  • XID 在微服务调用链路的上下文中传播;
  • RM 向 TC 注册分支事务,将其纳入XID对应全局事务的管辖;
  • TM 向 TC 发起针对XID的全局提交或回滚决议;
  • TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。

分布式链路追踪-Skywalking

SkyWalking是一个开源APM系统,包含了云原生架构下的分布式系统的监控、跟踪、诊断功能。Zfz28资讯网——每日最新资讯28at.com

SkyWalking支持dubbo,SpringCloud,SpringBoot集成,代码无侵入,通信方式采用GRPC,性能较好,实现方式是java探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。Zfz28资讯网——每日最新资讯28at.com

Zfz28资讯网——每日最新资讯28at.com

Skywalking架构Zfz28资讯网——每日最新资讯28at.com

  • 上面的Agent:负责收集日志数据,并且传递给中间的OAP服务器
  • 中间的OAP:负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 左面的UI:负责提供web控制台,查看链路,查看各种指标,性能等等。
  • 右面Storage:负责数据的存储,支持多种存储类型。

大致流程就是Agent负责收集日志传输数据,通过GRPC的方式传递给OAP进行分析并且存储到数据库中,最终通过UI界面将分析的统计报表、服务依赖、拓扑关系图展示出来。Zfz28资讯网——每日最新资讯28at.com

附录

Zfz28资讯网——每日最新资讯28at.com

组件版本关系Zfz28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-17667-0.htmlSpringCloud Alibaba体系一览

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: RabbitMQ发送和接收消息的几种方式

下一篇: 听说你会架构设计?来,弄一个群聊系统

标签:
  • 热门焦点
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 在线图片编辑器,支持PSD解析、AI抠图等

    在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 三分钟白话RocketMQ系列—— 如何发送消息

    三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • ESG的面子与里子

    ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top
Baidu
map