sentinel 以及 seata 的windows搭建

在这里插入图片描述

服务雪崩效应,业务场景高并发应用

在这里插入图片描述

容错三板斧
1.超时机制 例如1s  每次请求在1s内必须返回,否则到点我就吧线程掐死 释放资源
一旦超时 就会释放资源 由于资源释放的比较快  应用不会呢么容易托死
2.隔离应用 比如说我

在这里插入图片描述

2.舱壁模式
https://blog.csdn.net/m0_63437643/article/details/122511776
3.断路器模式

在这里插入图片描述
在这里插入图片描述

sentinel 整合springboot 
1.sentinel 启动服务端口  2.pom 3.配置
我们需要整合Sentinel-dashboard(哨兵流量卫兵)我们需要整合sentinel-dashboard,
利用java-jar sentinel-dashboard  启动

在这里插入图片描述

起来了

在这里插入图片描述

我这里有2个项目 就模拟 sentinel ------->order 
sentinel 通过nacos 以及rabbion调用 order  此时给这个接口做一个限流策略

在这里插入图片描述
在这里插入图片描述

2. pom
	--sentinel--
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
	--监控--
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
#  yml 配置
server:
  port: 8081
spring:
  application:
    name: mall-sentinel
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080  # dashboard 的配置  
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos配置

management:
  endpoints:
    web:
      exposure:
        include: '*'

在这里插入图片描述

当我们用localhost:8080 登录 之后用 sentinel sentinel 登录  就是这个页面 
当放生请求的调用时候 就会有对应的服务节点

在这里插入图片描述

当我们访问localhost:8081  
--->
也就是sentinel调用order的时候 在sentinel页面上就会有对应的链路关系了

在这里插入图片描述

可以看到我们是基于接口名命名资源的 ,并且此时1分钟过了7个qps ,我们可以吧这个请求设置一个流控规则
让他1分钟过1个  多余的报错

在这里插入图片描述
在这里插入图片描述

还可以配置warn up 就是让你缓慢上升的过程
快速失败是你最高峰1000个qps, 瞬时流量到达1000再往上就通过不了
配置warn up  就会你比如说多长时间达到1000个  这样的场景一般在于你项目启动的时候 比如说连接池没有初始化好
 我允许你流量慢慢的增加 经过多长时间才达到你的阈值
 
 排队等待就是你匀速器模式 比如1s 经过2个qps 
当我们点击过多的时候他就会报错

在这里插入图片描述

可能近期做的是中台系统吧 基于功能想下 sentinel有那些接口
1.服务注册 
2.
3.
------------------------------------------------------------------------------->>>
上述就是sentinel 的简单应用 我们看下seata 的分布式事务
我们知道事务,要么一起完成 要么一起失败  事务的特性就是acid
原子性

一致性
持久性
隔离性
我们可以用    @Transactional  就可以让本地事务生效  如果有异常我们就会让她回滚
当我们遇到分布式事务的时候该怎么去解决

在这里插入图片描述

我这里还是2个服务 一个用户服务一个order  [userService.save(userEntity); 保存用户]
【 orderFeignService.saveFirst(orderEntity);保存订单】


在这里插入图片描述

在order 这边都一样的 我的saveFirst  只是模拟 其他的微服务  
也就是说我正常情况下  一个请求应该是这样的

在这里插入图片描述
在这里插入图片描述

我们访问user 的端口号 
http://localhost:8040/user/save
正常情况下 user 中insert 1条数据
		 order中insert2条数据

在这里插入图片描述
在这里插入图片描述

 也就是说此时分3步
 第一步 insert user
 第二步 insert order
 第三步 insert order
 但是如果此时在第三步 有异常了报错 此时 @Transactional 会进行本地回滚策略
 他会抛异常 抛到 user 服务中 user 也本地回滚 但是第二步 已经Insert 成功了
就会造成一种情况 明明已经失败了 回滚了 但是此时还会插入库中一条数据

在这里插入图片描述

我吧之前user和order 表中数据都清了, 在这里加一个int i=1/0 模拟报错

在重新启动order 服务  
访问 http://localhost:8040/user/save
此时程序会报错 但是order中已经insert 一条数据了 这个就是 分布式事务

在这里插入图片描述
在这里插入图片描述

seata 的搭建看这里
https://blog.csdn.net/jixieguang/article/details/110621561

在这里插入图片描述

这里有一个两阶段提交
第一阶段就是 只执行 不提交(会导致锁表)

在这里插入图片描述

就类似于这样的

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值