0
点赞
收藏
分享

微信扫一扫

sentinel 以及 seata 的windows搭建

Silence潇湘夜雨 2022-05-02 阅读 61

在这里插入图片描述

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

在这里插入图片描述

容错三板斧
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个  多余的报错

在这里插入图片描述

当我们点击过多的时候他就会报错

在这里插入图片描述

------------------------------------------------------------------------------->>>
上述就是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 条评论