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

SpringCloud Alibaba体系一览

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

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

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

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

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

注册中心-Nacos

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

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

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

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

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

Nacos支持AP和CP切换。何时选择使用何种模式?ZR828资讯网——每日最新资讯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服务客户端ZR828资讯网——每日最新资讯28at.com

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

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

(2)OpenFeign

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

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

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

负载均衡-LoadBalancer

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

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

(1)RestTemplate

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

(2)WebClient

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

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

ZR828资讯网——每日最新资讯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进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。ZR828资讯网——每日最新资讯28at.com

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

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

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

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

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

微服务限流-Sentinel

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

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

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

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

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

分布式事务-seata

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

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

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

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

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

  • 全局唯一的事务ID

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

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

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

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

分布式链路追踪-Skywalking

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

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

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

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

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

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

附录

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

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

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

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

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

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

标签:
  • 热门焦点
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein“利用市场支配力量强迫服装厂商与之签订独家
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 小米汽车电池信息疑似曝光:容量101kWh,支持800V高压快充

    7月14日消息,今日一名博主在社交媒体发布了一张疑似小米汽车电池信息的照片,显示该电池包正是宁德时代麒麟电池,容量为101kWh,电压为726.7V,可以预测小
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 荣耀Magicbook V 14 2021曙光蓝版本正式开售,拥有触摸屏

    荣耀 Magicbook V 14 2021 曙光蓝版本正式开售,搭载 i7-11390H 处理器与 MX450 显卡,配备 16GB 内存与 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 键盘键程、
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top