2021升级版微服务教程6—Ribbon使用+原理+整合Nacos权重+实战优化

Ribbon基本使用

简介

Ribbon是一个客户端负载均衡工具,封装Netflix Ribbon组件,能够提供客户端负载均衡能力。

理解Ribbon最重要的就是理解客户端这个概念,所谓客户端负载均衡工具不同于Nginx(服务端负载均衡),Ribbon和应用程序绑定,本身不是独立的服务,也不存储服务列表,需要负载均衡的时候,会通过应用程序获取注册服务列表,然后通过列表进行负载均衡和调用。

Nginx独立进程做负载均衡,通过负载均衡策略,将请求转发到不同的服务上

客户端负载均衡,通过在客户端保存服务列表信息,然后自己调用负载均衡策略,分摊调用不同的服务

基本使用

Ribbon的负载均衡有两种方式

和 RestTemplate 结合 Ribbon+RestTemplate

和 OpenFeign 结合

Ribbon的核心子模块

ribbon-loadbalancer:可以独立使用或者和其他模块一起使用的负载均衡API

ribbon-core:Ribbon的核心API

订单服务集成Ribbon

订单远程桌面服务调用商品服务

配置过程 分两步

在订单服务中导入ribbon的依赖

<!--ribbon--><dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>

配置 RestTemplate

订单服务调用商品服务

订单服务调用商品服务的链接 不能写成ip+端口号,需要写成商品服务的服务名称

参数调优

主要调整请求的超时时间,是否重试

如果业务没有做幂等性的话建议把重试关掉:ribbon.MaxAutoRetriesNextServer=0

# 从注册中心刷新servelist的时间 默认30秒,单位msribbon.ServerListRefreshInterval=15000# 请求连接的超时时间 默认1秒,单位msribbon.ConnectTimeout=30000# 请求处理的超时时间 默认1秒,单位msribbon.ReadTimeout=30000# 对所有操作请求都进行重试,不配置这个MaxAutoRetries不起作用 默认false#ribbon.OkToRetryOnAllOperations=true# 对当前实例的重试次数 默认0# ribbon.MaxAutoRetries=1# 切换实例的重试次数 默认1ribbon.MaxAutoRetriesNextServer=0

如果MaxAutoRetries=1和MaxAutoRetriesNextServer=1请求在1s内响应,超过1秒先同一个服务器上重试1次,如果还是超时或失败,向其他服务上请求重试1次。

那么整个ribbon请求过程的超时时间为:ribbonTimeout = (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1

(0)

相关推荐