当前位置: 首页 > news >正文

Spring Cloud Alibaba 中间件

Spring Cloud Alibaba 中间件

🔗 Spring官方介绍 [⚠️Spring官方对Spring Cloud Alibaba的更新不及时]

🔗 Spring Cloud Alibaba官网

📝 代码记录

Nacos(服务注册与发现)

Nacos(Dynamic Naming and Configuration Service, Nacos),一个易于构建 Al Agent 应用的动态服务发现、配置管理和AI智能体管理平台。

Nacos = Eureka + Config + Bus = Spring Cloud Consul

Nacos官网

组件名语言CAP服务健康检查对外暴露接口Spring Cloud集成
EurekaJavaAP可配支持HTTP已集成
ConsulGoCP支持HTTP/DNS已集成
ZookeeperJavaCP支持客户端已集成
NacosJavaAP支持客户端已集成

Nacos 在阿里巴巴内部有超过 10 万的实例运行,已经过了类似双十一等各种大型流量的考验,Nacos默认是AP模式,

但也可以调整切换为CP,一般用默认AP即可。

下载与安装

  • spring-cloud-starter-alibaba-nacos-config: 实现配置的动态更新
  • spring-cloud-starter-alibaba-nacos-discovery: 实现服务的注册与发现

注册中心

主要配合spring-cloud-starter-alibaba-nacos-discovery

服务发现:yml配置nacos相关配置、主启动配置EnableDiscoveryClient注解

调用注册中心中的服务:只需在配置中增加RestTemplate的bean,并增加loadbalancer注解,调用服务的接口时将host写成服务名称即可

配置中心

主要配合spring-cloud-starter-alibaba-nacos-discovery

nacos端配置文件DataId的命名规则:

p r e f i x − {prefix}- prefix{spring.profiles.active}.${file-extension}

Namespace,Group,DataId

目的是解决 多环境、多项目、多配置文件的管理

Nacos 数据模型 Key 由三元组(Namespace,Group,DataId)唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

Sentinel(服务熔断和降级)

面向分布式、多语言异构化服务架构的流量治理组件。

从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性

Sentinel官网/Github

Sentinel后台端口8719,前台端口8080,前台用户名密码都是sentinel

SentinelResource注解

SentinelResource是一个流量防卫组件注解,用于指定防护资源,对配置的资源进行流量控制、熔断降级等功能。

SentinelResource注解配置说明

注意fallback与blockHandler的区别

  • blockHandler,主要针对sentinel配置后出现的违规情况处理
  • fallback,程序异常了,JVM抛出的异常服务降级

流控规则

流控规则说明

Sentinel能够对流量进行控制,主要是监控应用的QPS流量或者并发线程数等指标,如果达到指定的阈值时,就会被流量进行控制,以避免服务被瞬时的高并发流量击垮,保证服务的高可靠性。

流控模式

  • 直接:默认的流控模式,当接口达到限流条件时,直接开启限流功能。
  • 关联:当关联的资源达到阈值,就限流自己;当与A关联的资源B达到阈值后,就限流A自己。(A惹事B挂了)
  • 链路: 来自不同链路的请求对同一个目标访问时,实施针对性的不同限流措施,比如C请求来访问就限流,D请求来访问就是OK

流控效果

  • 快速失败:直接失败,抛出异常。Blocked by Sentinel (flow limiting)
  • Warm up:限流,冷启动。当流量增大的时候,希望系统从空闲状态到繁忙状态的切换时间长一些。公式:阈值除以冷却因子coldFactor(默认值为3),经过预热时长后才会达到阈值。默认coldFactor为3,即请求QPS从threshold/3开始,经预热时长逐渐升至设定的QPS阈值
  • 排队等待:主要处理间隔性突发流量,当一秒内发起大量请求,后几秒却是空闲状态。排队等待重排请求,使得服务器匀速处理请求。

熔断规则

Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。

熔断规则说明

  • 慢调用比例(SLOW_REQUEST_RATIO) :在统计时长内,实际请求数目 > 设定的最小请求数 且 实际慢调用比例 > 比例阈值,进入熔断状态。
  • 异常比例(ERROR_RATION): 异常比例达到阈值,进入熔断状态
  • 异常数(ERROR_COUNT): 数量达到阈值,进入熔断状态

热点规则

热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进修限流或者其他操作

热点规则说明

简单来说就是对指定入参限流,sentinel还可以有参数例外项,即对特定的参数值不限流,其他的参数值都限流

授权规则

对请求分黑白名单

来源访问控制说明

⚠️注意要实现RequestOriginParser再配合可视化端

Seata(分布式事务)

⚠️面试重灾区,Seata分布式三大模式的原理需要仔细了解

背景:一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题;但是关系型数据库提供的能力是单机事务,一但遇到分布式事务场景,就需要通过更多其他技术手段来解决问题。

Seata(Simple Extensible Autonomous Transaction Architecture), 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

Seata官网/Github, Alibaba开发,2023.10.29捐赠给Apache

Seata部署

Seata三大模式

  • Seata AT
  • Seata TCC
  • Seata SAGA
  • Seata XA

工作流程

Seata对分布式事务的协调和控制就是1+3

  • 1个XID:XID是全局事务的唯一标识,他可以在服务的调用链路中传递,绑定到服务的事务上下文中。
  • 3(TC->TM->RM)
    • TC(Transaction Coordinator)事务协调者
      • 维护全局和分支事务的状态,驱动全局事务提交或回滚。
    • TM(Transaction Manager)事务管理器
      • 定义全局事务的范围:开始全局事务、提交或回滚全局事务。
    • RM(Resource Manager)资源管理器
      • 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

三个组件相互协作,TC以Seata服务器形式独立部署,TM和RM则是以Seata Client的形式集成在微服务中运行

流程:

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

相关文章:

  • rt-thread的红外遥控开源库使用(裸机版本)记录.
  • Flutter 与原生技术(Objective-C/Swift,java)的关系
  • 【MFC】编辑框、下拉框、列表控件
  • 位运算详解之异或运算的奇妙操作
  • org.springframework.cloud.openfeign 组件解释
  • Spring Framework 执行链路设计
  • 大模型笔记1:大致了解大模型
  • MLLM常见概念通俗解析(五)
  • 【Redis】Redis的启航之路:Ubantu操作系统下安装Redis
  • ABP vNext 多语言与本地化:动态切换、资源继承与热更新
  • 微信小程序使用图片实现红包雨功能
  • error:MISCONF Redis is configured to save RDB snapshots
  • 计算机网络-自顶向下—第五章数据链路层重点复习笔记
  • 《高并发系统性能优化三板斧:缓存 + 异步 + 限流》
  • Nginx+keepalived主从,双主架构
  • git-build-package 工具代码详细解读
  • Git常用命令摘要
  • 青少年编程与数学 01-011 系统软件简介 19 SSMS 数据库管理工具
  • 【AS32系列MCU调试教程】性能优化:Eclipse环境下AS32芯片调试效率提升
  • Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
  • 仙桃建设网站/抖音seo是什么
  • 公司网站建设公司/公司建官网要多少钱
  • 网络代理修复怎么解决/广东短视频seo搜索哪家好
  • wordpress改不了语言/搜索引擎seo关键词优化方法
  • 网站代理登录网址/网络销售怎么才能找到客户
  • 芜湖做网站公司/关键词查询工具免费