小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

时间:2023-03-09 13:38:34
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

笔记

5、熔断降级服务异常报警通知实战
    简介:完善服务熔断处理,报警机制完善

1、加入redis依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    2、配置redis链接信息
      redis:
        database: 0
        host: 127.0.0.1
        port: 6379
        timeout: 2000

3、使用

//监控报警
        String saveOrderKye = "save-order";
        String sendValue = redisTemplate.opsForValue().get(saveOrderKye);
        final String ip = request.getRemoteAddr();
        new Thread( ()->{
            if (StringUtils.isBlank(sendValue)) {
                System.out.println("紧急短信,用户下单失败,请离开查找原因,ip地址是="+ip);
                //发送一个http请求,调用短信服务 TODO
                redisTemplate.opsForValue().set(saveOrderKye, "save-order-fail", 20, TimeUnit.SECONDS);
            }else{
                System.out.println("已经发送过短信,20秒内不重复发送");
            }
        }).start();

开始

发送短信的key存储在Redis里面,5分钟后自动失效。失效后继续发送短信。
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
这里不再讲解Redis的安装步骤,本机默认已经安装好了。
下图是已经加压过的redis的包
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
mac本机启动redis的服务小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

启动成功后,spring boot链接redis

1、加入redis依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    2、配置redis链接信息
      redis:
        database: 0
        host: 127.0.0.1
        port: 6379
        timeout: 2000

加入maven的依赖
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
加上注释
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
指定Redis的链接信息
我们在application的下面去配置
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
会有快捷键的提示
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
选择这个
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
会生成这段代码
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
输入h再去选择host
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
生成 host。
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
输入por选择
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
生成port默认的端口是6379
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
最后还有一个timeout
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
最终配置
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

注入redis
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
写完以上代码发现这是一个同步的调用,调用完了再会继续往下走。所以我们需要创建一个线程去做。
用一个lamada表达式去做。
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
开一个子线程去发送短信。不影响我们整个流程
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
重新启动服务进行测试。把productService服务关闭
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
多次刷新页面访问
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
高并发的情况下 可以用redis的锁的机制,自行搜索

在方法多加一个参数 
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
我们可以输出ip地址,这样可以判断是哪台服务器出现了问题
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知

小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知