基于 Spring Cloud Gateway 实现微服务架构的限流、熔断和重试
pring Cloud Gateway是一个基于Spring Boot的网关服务,可以实现微服务架构中的限流、熔断和重试等功能。
【资料图】
限流:
在Spring Cloud Gateway中,可以使用RateLimiter来限制每个请求的速率。RateLimiter是基于令牌桶算法实现的,它会根据配置的速率,为每个请求分配一个令牌,如果请求的速率超过了配置的速率,则会被限流。
首先,需要在pom.xml文件中添加依赖:
io.github.resilience4j resilience4j-ratelimiter 1.7.1
然后,在Spring Cloud Gateway中配置一个RateLimiter:
@Configurationpublic class GatewayConfiguration { @Bean public KeyResolver userKeyResolver() { return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("user")); } @Bean public RateLimiter rateLimiter() { RateLimiterConfig config = RateLimiterConfig.custom() .limitRefreshPeriod(Duration.ofSeconds(1)) .limitForPeriod(1) .timeoutDuration(Duration.ofMillis(500)) .build(); return RateLimiter.of("gatewayRateLimiter", config); } @Bean public GatewayFilterFactory ratelimiterGatewayFilterFactory() { return new RatelimiterGatewayFilterFactory(); }}
这个配置将会限制每个用户每秒钟只能访问一个请求。在使用这个限流器时,只需要在路由配置中添加一个RatelimiterGatewayFilterFactory:
spring: cloud: gateway: routes: - id: some-service uri: lb://some-service filters: - name: RequestRateLimiter args: key-resolver: "#{@userKeyResolver}" rate-limiter: "#{@rateLimiter}"
熔断:
Spring Cloud Gateway还支持熔断器,可以在服务不可用时,快速地返回错误信息。在Spring Cloud Gateway中,可以使用resilience4j来实现熔断器。
首先,在pom.xml文件中添加依赖:
io.github.resilience4j resilience4j-circuitbreaker 1.7.1
然后,在Spring Cloud Gateway中配置一个CircuitBreaker:
@Configurationpublic class GatewayConfiguration { @Bean public CircuitBreaker circuitBreaker() { CircuitBreakerConfig config = CircuitBreakerConfig.custom() .failureRateThreshold(50) .waitDurationInOpenState(Duration.ofMillis(1000)) .slidingWindowSize(5) .build(); return CircuitBreaker.of("gatewayCircuitBreaker", config); } @Bean public GatewayFilterFactory circuitBreakerGatewayFilterFactory() { return new CircuitBreakerGatewayFilterFactory(); }}
这个配置将会在请求失败率达到50%时打开熔断器,并在熔断器打开后等待1秒钟后再尝试请求。在使用这个熔断器时,只需要在路由配置中添加一个CircuitBreakerGatewayFilterFactory:
spring: cloud: gateway: routes: - id: some-service uri: lb://some-service filters: - name: CircuitBreaker args: name: "#{@circuitBreaker}"
重试:
在微服务架构中,服务之间的调用可能会出现网络故障或其他问题导致请求失败。为了解决这个问题,可以使用Spring Cloud Gateway中的重试机制。
首先,在pom.xml文件中添加依赖:
org.springframework.cloud spring-cloud-starter-gateway 3.0.3
然后,在路由配置中添加重试机制:
spring: cloud: gateway: routes: - id: some-service uri: lb://some-service predicates: - Path=/some/path/** filters: - name: Retry args: retries: 3 statuses: BAD_GATEWAY backoff: firstBackoff: 100ms maxBackoff: 5s factor: 2
这个配置将会在请求返回BAD_GATEWAY时进行3次重试,重试时间间隔为100毫秒到5秒之间的指数增长。在实际使用时,可以根据具体情况调整重试次数、重试间隔等参数。
标签:
精彩推送
天天微速讯:外卖打包费不能成“包装刺客”:强制消费并非留客之道
多家媒体近日报道了一些外卖商家收取打包费的乱象:“一份13 14元的奶茶,打包费竟要4元,而送来的这杯...
杭州高新(300478):第四届第十七次监事会会议决议,审议关于公司董事长为公司向银行申请综合授信提供担保暨关联交易的议案等多项议案|全球独家
4月4日,杭州高新公告显示,公司第四届第十七次监事会会议于2023年4月4日以现场会议方式召开,会议通过...
新闻快讯
X 关闭
X 关闭
新闻快讯
- 基于 Spring Cloud Gateway 实现微服务架构的限流、熔断和重试
- 每日讯息!西藏药业2023年一季度净利预增超七成
- 环球滚动:ST星星:截至2023年4月10日,公司股东总户数为35,889户
- 上海国际医学园区吸引超千家企业、机构落户后,新建16万平方米张江基因岛即将投用
- 唐朝“牛李党争”持续40年|快播报
- 自贡文旅投资9亿元私募债券项目更新至“已受理”|全球微头条
- 巴西总统卢拉将访华 热点在线
- 【天天新要闻】星空私语——金星合昴星团11日浪漫登场
- 横琴“双15%”税惠政策落地 明确3类人才可享个税优惠
- 淘宝租凭合同范本(热门7篇)
- 3月CPI同比上涨0.7% 涨幅创近18个月新低
- 招商银行上海分行二手房“带押过户”贷款落地 首笔发放200万元 焦点滚动
- 第110万辆菱智家族下线
- 今亮点!市委党校春季学期主体班开班
- dfu模式怎么进入 dfu模式的应用范围-当前快报 视点
- 多言有益乎?5个很短的寓言,看懂后受用一生! 全球播报
- 雅俗共赏歌曲dj版_雅俗共赏歌曲
- 环球即时看!基金经理,正在疯狂离职
- 河北阜平召开2023年药品、医疗器械经营企业培训会
- 每日聚焦:西昌邛海附近发生火情,救援力量已赶赴现场
- 一单顶半年!福莱特逾80亿元大单到手
- 英超0-2到2-2!阿森纳3分变1分!利物浦主场狂追2球,曼城真笑了 每日看点
- Mysteel日报:全国热轧板卷价格下跌 预计明日震荡下行_每日信息
- 每日消息!口袋心理学:上海女孩卖50万豪车辞掉编制当网红
- 银行首份一季度业绩快报来了,常熟银行总资产突破3000亿 全球微头条
- 如何油漆铝板_新年礼物送女生什么比较好呢|世界快消息
- 中国国贸董秘回复:根据公司与客户签署的合同,公司收取租金或其他费用基本以人民币进行计价和结算
- 湘雅常德医院何青春:“生死时速”创造生命奇迹
- 环球热点评!抢救一个“没有价值”的村庄
- 【全球新要闻】原神角色对话没声音怎么回事
- 以军轰炸叙利亚南部 造成部分设施损毁
- 河北省张家口市2023-04-10 06:49发布大风蓝色预警
- 男子拦劳斯莱斯不给喜烟就掰车标!价值24万的“小金人”
- 天天快讯:Skip:詹姆斯仍能以高水准去得分 但没法终结比赛 别说他是GOAT
- 肾衰竭能活多久最好_肾衰竭能活多久
- 天天热门:电脑开不了机怎么用u盘重装系统教程_电脑开不了机怎么用u盘重装系统
- 安顺一路口有安全隐患,交警:即将安装红绿灯 世界速讯
- 天天百事通!“人气爆棚”“规模之最” 缓复苏和去库存仍是白酒行业主基调
- 山药褐斑病
- 【世界新视野】硬核快报丨魏牌蓝山正面硬刚理想L7、8兄弟 胜算几何?
- 天天亮点!马克龙中英法三语分享访华行程 赞“法中友谊万岁!”
- 玩家绘制主机概念图:把PS5变成可爱机械猫猫! 环球热议
- 天际汽车停工停产,尾部新造车陷入生死局 全球观察
- 手机怎么买双色球彩票选号(手机怎么买双色球) 最新
- 苏俄牧羊犬多重_苏俄牧羊犬
- 当前快讯:熊安板块股票有哪些(自贡期货配资)
- 大语言模型中的涌现现象是不是伪科学?
- 企鹅最生活打不开_企鹅最生活
- 武则天登基后是怎么对付那些不满的朝臣的?只用了一招
- 新挖的煤为何要水洗才能用?洗煤流程是怎样?背后反映了很多问题|世界聚焦