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

相关推荐
运维&陈同学14 分钟前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
哔哥哔特商务网13 小时前
一文探究48V新型电气架构下的汽车连接器
架构·汽车
007php00713 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
码上有前15 小时前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
gjh120817 小时前
什么是微服务?
微服务
货拉拉技术21 小时前
多元消息融合分发平台
javascript·后端·架构
问窗21 小时前
微服务中Spring boot的包扫描范围
java·spring boot·微服务
冷心笑看丽美人1 天前
Spring 框架七大模块(Java EE 学习笔记03)
学习·spring·架构·java-ee
思尔芯S2C1 天前
面向未来的智能视觉参考设计与汽车架构,思尔芯提供基于Arm技术的创新方案
arm开发·架构·汽车·iot·fpga原型验证·prototyping·智慧视觉
聂 可 以1 天前
IDEA一键启动多个微服务
java·微服务·intellij-idea