Spring Cloud Ribbon 负载均衡组件-超时、重试、自定义服务列表
Ribbon 是Spring Cloud 微服务框架中弹性扩展的基础组件,与其他组件结合可以发挥很多的作用,支持丰富的负载均衡策略、重试机制等等。
Ribbon 与负载均衡
Ribbon 是客户端的负载均衡,也叫进程内(Inter-Process Communication,IPC)负载均衡,指从注册中心获取一个实例进行流量导入。
Ribbon 默认使用轮询的方式访问源服务,此外Ribbon 对服务实例节点的增减也能动态感知。
Ribbon 超时与重试
通过Ribbon进行服务间HTTP调用时,可以进行超时和重试的设置。
client-b: #被调用的service name
ribbon:
ConnectTimeout: 3000
ReadTimeout: 60000
MaxAutoRetries: 1 #对第一次请求的服务的重试次数
MaxAutoRetriesNextServer: 1 #要重试的下一个服务的最大数量(不包括第一个服务)
OkToRetryOnAllOperations: true
Ribbon 脱离Eureka 使用
默认情况下,Ribbon 客户端会从 Eureka 注册中心读取服务注册列表信息,来达到动态负载均衡的功能。但如果Eureka 不可用,或者只是为了和service provider 进行简单联调,可以临时脱离Eureka,而在Ribbon 客户端自行指定服务地址,让Ribbon脱离Eureka 注册中心来使用。
首先,需要再Ribbon 中禁用 Eureka的功能:
#取消Ribbon使用Eureka
ribbon:
eureka:
enabled: false
然后,对service provider设置地址列表:
#配置Ribbon能访问的微服务节点,多个节点用逗号隔开
microservice-provider-user:
ribbon:
listOfServers: localhost:7900,localhost:7901,localhost:7902