Springcloud学习笔记28--JeecgBoot 微服务熔断/限流

1.熔断

(1)jeecg-cloud-gateway 模块中application.yml加入如下配置

复制代码
      # 全局熔断降级配置
      default-filters:
        - name: Hystrix
          args:
            name: default
            #转发地址
            fallbackUri: 'forward:/fallback'
        - name: Retry
          args:
            #重试次数,默认值是 3 次
            retries: 3
            #HTTP 的状态返回码
            statuses: BAD_GATEWAY,BAD_REQUEST
            #指定哪些方法的请求需要进行重试逻辑,默认值是 GET 方法
            methods: GET,POST
# hystrix 信号量隔离,3秒后自动超时
hystrix:
  enabled: true
  shareSecurityContext: true
  command:
    default:
      execution:
        isolation:
          strategy: SEMAPHORE
          thread:
            timeoutInMilliseconds: 3000
复制代码

(2)熔断处理器编写

复制代码
@RestController
public class FallbackController {

    /**
     * 全局熔断处理
     * @return
     */
    @RequestMapping("/fallback")
    public Mono<String> fallback() {
        return Mono.just("访问超时,请稍后再试!");
    }
}
复制代码

(3)编写测试方法

复制代码
package org.jeecg.test.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.test.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * @Author lucky
 * @Date 2021/10/8 9:15
 */
@Slf4j
@Api(tags = "test001")
@RestController
@RequestMapping("/test001")
public class TestController {
    @Resource
    private TestService testService;

    @Autowired
    ISysBaseAPI sysBaseAPI;


    @GetMapping("/sleep")
    public Result mocksleep() {
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        List<DictModel> list=sysBaseAPI.queryAllDict();
        return Result.OK(list);
    }

}
复制代码

(4)postman测试

访问:http://127.0.0.1:9999/test001/sleep

注意:如果通过网关无法访问到jeecg-cloud-test下面的方法,考虑以下解决方案(1)访问路径是否已经被重复使用,可以修改访问路径(2)重启所有微服务

 此时修改测试代码:让睡眠时间为5000ms

Thread.sleep(5000);

 2.限流

(1)首先,在jeecg-cloud-gateway中添加配置,再重启jeecg-cloud-gateway应用

 (2)利用Jmeter进行性能测试。

 

posted @   雨后观山色  阅读(715)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2019-10-08 Idea使用技巧10--Idea java 中导包路径分析
2019-10-08 23 Maven工程module的移除和重新导入(经典)
2018-10-08 pika教程
点击右上角即可分享
微信分享提示