简述微服务高可用之Sentinel、Seate

简述微服务高可用之Sentinel、Seate使用

下文主要讲述使用sentinel,如何降级限流熔断及如何使用seata管理分布式事务

sentinel服务端安装与使用

1、下载

进入https://github.com/alibaba/Sentinel/releases

根据你的需求进行下载对应版本

我这里是JDK17 下载的1.8.8版本,sentinel-dashboard-1.8.8.jar

2、启动服务,需安装java环境

复制代码
java -jar sentinel-dashboard-1.8.8.jar

3、在工程配置文件配置服务端地址。

在cloud:层级下配置sentinel,sentinel的默认端口为8080

复制代码
sentinel:
  transport:
    dashboard: localhost:8080  #配置sentinel服务端
  http-method-specify: true #开启请求方式前缀

4、访问sentinel服务端

此处的用户名和密码都是sentinel

5、进入主界面

在工程中配置了dashboard,接口访问后都会在此显示

6、实时监控

服务的请求情况都会记录,每秒通过多少次,拒绝多少次

7、簇点链路

用于记录每个接口的情况以及管理策略操作,可以对某接口进行限流、熔断、热点、授权等操作

(1)新增流控规则、

针对某接口进行流控,可选择QPS(每秒请求数)和并发线程数进行限制,选择QPS当每秒超过配置数会限制操作,提示Blocked by Sentinel (flow limiting)1秒后可重新访问

(2)新增熔断规则

熔断策略有三种慢调用模式,当调用时间达到最大RT,且比例阈值大于等于配置的阈值,视为该链路不可用。异常比例,当调用次数异常与总次数比例阈值>=配置阈值即熔断;异常数,当异常请求个数到达配置阈值。熔断时长表示不可用时间,在熔断时长后再次请求调用。采用了滑动时间窗算法。

滑动窗口算法是对固定窗口算法的改进,它将时间窗口分为多个小周期,每个小周期都有自己的计数器。随着时间的滑动,过期的小周期数据被删除,这样可以更精确地控制流量。

详细限流算法见https://zhuanlan.zhihu.com/p/689922080

(3)新增热点数据规则

对经常访问的数据进行限流。参数索引此处的0表示方法中的第一个参数,意为以哪个参数为索引。详情见https://blog.csdn.net/zhiqiang_cao/article/details/142937510

(4)新增权限规则

用于拦截那些允许访问、那些禁止访问。

详情参见https://blog.csdn.net/weixin_53041251/article/details/129651977

Seata 分布式事务处理

用于在微服务/分布式中保持数据的一致性

官方文档:https://seata.apache.org/zh-cn/docs/user/quickstart/

安装服务端:https://blog.csdn.net/2301_76862031/article/details/141499249

1、引入依赖

复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

2、在方法上增加@GlobalTransactional,此处为示例代码具体逻辑实现请自行实现

复制代码
@Transactional
@GlobalTransactional
public String createOrder(String id){
    System.out.println("创建订单成功");
    inventoryService.reduceNum(id);
    return "";
}

分布式事务处理分为两阶段,第一阶段各自服务各自进行事务提交。第二阶段seata收集提交结果,若其中一个失败,则通过undolog回滚事务。

相关推荐
前端大白话22 分钟前
前端必知!HTML中`<a>`标签target属性全攻略:新窗口、当前窗口、指定框架一网打尽
前端·架构·html
有梦想的攻城狮1 小时前
AIGC架构与原理
人工智能·ai·架构·aigc
Goboy1 小时前
深入理解Java的文件写入与资源管理
后端·面试·架构
quququ_21382 小时前
Java面试:从Spring Boot到微服务的全面考核
spring boot·微服务·kubernetes·mybatis·hibernate·java面试
sinat_262292114 小时前
Java面试实战:音视频场景下的微服务架构与缓存技术剖析
java·spring boot·redis·微服务·kafka·分布式系统·面试技巧
SoFlu软件机器人7 小时前
飞算 JavaAI 与 Spring Boot:如何实现微服务开发效率翻倍?
spring boot·后端·微服务
华为云PaaS服务小智10 小时前
《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢
人工智能·架构·serverless·华为云
掘金-我是哪吒12 小时前
分布式微服务系统架构第118集:Future池管理容器-CompletableFuture
分布式·微服务·云原生·架构·系统架构
晴天彩虹雨13 小时前
实时数仓体系概览与架构演进
数据仓库·clickhouse·架构·flink·kafka
quququ_213816 小时前
Java面试:探索Spring Boot与微服务的深度挑战
java·spring boot·微服务·面试·技术栈