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

简述微服务高可用之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回滚事务。


http://www.kler.cn/news/361700.html

相关文章:

  • 告别微信封号!学会这5招,让你的账号坚不可摧
  • Docker基础部署
  • 关于HslCommunication的二次开发
  • 基于neo4j的医疗图谱问答与展示
  • 微信小程序文本收起展开
  • Java Swing的优秀开源项目学习推荐(UI、数据结构与设计模式)
  • 基于深度学习的地球观测中的目标检测
  • R语言医学数据分析实践-高级回归分析
  • Spring Boot Web智慧社区平台:设计与实现
  • 【Java】并发韵律:多线程编程的深度探索与艺术实践
  • 问题:uniApp 开发中使用 padding: 0 10px,右内边距不起作用
  • 装饰器模式知识分享:Android (Kotlin) 与 iOS (Swift) 实现
  • 无人机飞手执照培训为什么需要脱产学习?
  • Java的评论大冒险:用代码征服API数据
  • C++之《剑指offer》学习记录(10):链表
  • leetcode计数排序
  • 在软件开发中低耦合和高内聚是什么,如何实现,请看文章
  • 3194. 最小元素和最大元素的最小平均值 简单
  • CEEMDAN +组合预测模型(Transformer - BiLSTM + ARIMA)
  • React核心技术解析:以“智能购物助手”洞悉奥秘
  • Unity/C#使用EPPlus读取和写入Excel
  • 如何开启华为交换机 http
  • 【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO
  • 023_net基于ASP.NET的图书借阅系统的设计与实现2024_281bfi3e
  • C# WinForms 仿Toast弹出实现
  • Premiere与EDIUS区别于相同点