前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud Ribbon 重试机制

Spring Cloud Ribbon 重试机制

作者头像
猿天地
发布2018-04-03 12:54:59
1.2K0
发布2018-04-03 12:54:59
举报
文章被收录于专栏:猿天地猿天地

前言

在集群环境中,多个节点来提供服务,难免会有某个节点故障

用Nginx做负载均衡的时候,如果你的应用是无状态的,是可以滚动发布的,也就是一台台去重启应用

这样对用户其实是影响比较小的,因为Nginx在转发请求失败后会重新将该请求转发到别的实例上去

Zuul中是否也存在这样的问题

我们在用Zuul构建API网关时,发现eureka中的服务挂了一个, 由于ribbon的默认负载机制是轮询

如果一个服务下线,eureka并不会马上清除信息,不像zookeeper那样基于watcher可以实时监控下线

所以在eureka中挂掉的服务没有被清空信息时,zuul会转发到已经故障的机器,导致请求失败

当然这个不会持续很久, 当连续失败hystrix就会处于打开状态,就算有一次失败,我觉得也是不能容忍的

所以我们需要有像Nginx中那样重试的机制来保证请求的成功,哪怕延迟个几百毫秒响应给使用方

在Zuul中我们可以配置ribbon的重试机制来实现,必须依赖一个 Spring Retry

官方文档地址:http://cloud.spring.io/spring-cloud-static/Dalston.SR4/multi/multi_netflix-metrics.html

具体配置如下:

pom.xml

application.properties

在zuul中要生效除了要依赖spring-retry之外还需要配置zuul.retryable=true

测试步骤

  • 相同的服务注册2个到eureka中
  • 启动zuul网关
  • 访问API
  • 停掉一个服务
  • 继续访问API

具体代码可以参考我的github:

https://github.com/yinjihuan/spring-cloud

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Zuul中是否也存在这样的问题
  • pom.xml
  • application.properties
  • 测试步骤
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档