zoukankan      html  css  js  c++  java
  • 分布式服务熔断以及服务降级报警机制自定义实现思路

    在熔断服务降级fallback接口进行短信通知,使用redis每5分钟通知一次,添加线程池可以更高效

    demo:

    @FeignClient(
        name = "order-server",
        fallback = ShopOrderDetailInterface.DefaultFallback.class
    )
    public interface ShopOrderDetailInterface {
    
        @RequestMapping(value = {"/shop/order/detail"},method = {RequestMethod.POST})
        @ResponseBody
       ShopOrderDetailResponseDTO processRequest(@RequestBody ShopOrderDetailRequestDTO requestDTO);
    
        @Component
        class DefaultFallback implements ShopOrderDetailInterface {
            @Override
            public ShopOrderDetailResponseDTO processRequest(ShopOrderDetailRequestDTO requestDTO) {
            //如果请求参数注入HttpRequest,这里也可以获取到ip地址,这样当服务熔断了,可以短信通知,哪个机器发生了熔断
    
                String value=redisTemplate.get("order.fallback");
                if(StringUtils.isBlank(value)){
                    //此处可以使用线程池
                   new Thread(()->{
                       System.out.println("发送短信通知。。。订单服务已经被熔断了。。。");
                       //此处调用发短信接口TODO 省略
    
                       redisTemplate.set("order.fallback","tag",5, TimeUnit.MINUTES);//5分钟后失效
                   }).start();
                }else {
                    System.out.println("服务被熔断了。。。。");
                }
    
    
    
                return responseDTO;
            }
        }
    }
  • 相关阅读:
    uniapp数据循环带参数拼接方法
    UniApp页面跳转
    layui表单提交时关闭默认刷新页面
    js计时器
    Jquery 鼠标移入移出事件
    jquery常用ajax请求
    易宝网上支付接口的实现
    不使用缓存和不同缓存下程序的效率测试
    Mysql常见指令--常用的命令
    PHP冒泡与快速排序法
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/12508860.html
Copyright © 2011-2022 走看看