Fork me on GitHub

扩展Ribbon支持Nacos集群配置

在Nacos上,支持集群配置。集群是对指定微服务的一种虚拟分类。集群还是比较有用的,例如: 为了容灾,把指定微服务同时部署在两个机房(例如同城多活【其中1个机房崩溃另一个机房还能顶】、异地多活【防止自然灾害,例如地震什么的】),比如南京机房和北京机房。 调用时,可优先调用同机房的实例,如果同机房没有实例,再跨机房调用。 当然cluster还有很多其他作用,请各位看客自行脑补,本文将围绕上面描述的场景展开。 虽然Spring Cloud Alibaba支持集群配置...

扩展Ribbon支持Nacos权重的三种方式

Nacos支持权重配置,这是个比较实用的功能,例如: 把性能差的机器权重设低,性能好的机器权重设高,让请求优先打到性能高的机器上去; 某个实例出现异常时,把权重设低,排查问题,问题排查完再把权重恢复; 想要下线某个实例时,可先将该实例的权重设为0,这样流量就不会打到该实例上了——此时再去关停该实例,这样就能实现优雅下线啦。当然这是为Nacos量身定制的优雅下线方案——Spring Cloud中,要想实现优雅下线还有很多姿势,详见:《实用技巧:Spring Cloud中...

跟我学Spring Cloud(Finchley版)-08-Ribbon深入

上一节讲了Ribbon的入门姿势,本节深入探讨Ribbon的高级特性。 内置负载均衡规则负载均衡规则是Ribbon的核心,下面来看一下Ribbon内置的负载均衡规则。 AvailabilityFilteringRule:过滤掉一直连接失败的被标记为circuit tripped的后端Server,并过滤掉那些高并发的后端Server或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运...

跟我学Spring Cloud(Finchley版)-07-Ribbon入门

经过前文讲述,我们已经实现了服务发现。本节来解决 跟我学Spring Cloud(Finchley版)-02-构建分布式应用 提到的如下问题: 负载均衡如何考虑?难道得在电影微服务和用户微服务之间加个NGINX做负载均衡吗?听起来是可行的,但如果有10000+服务(这并不夸张,我司的微服务数目是这个数字乘以N,N >= m,哈哈哈)那这个NGINX的配置得有多复杂…… 一般来说,提到负载均衡,大家一般很容易想到浏览器 -> NGINX -> 反向代...

Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题?

Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? TIPS 本文于2019-01-10更新,基于Spring Cloud Finchley。 造成该问题的原因Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。而首次请求往往会比较慢(由于Ribbon是懒加载的,在首次请求时,才会开始初始化相关类),这个响应时间可能就大于1秒了。知道原因后,我们来总结一下解决方案。以feign为例,解决方案有如下四种。…