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进行性能测试。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.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教程