Ribbon 学习

关于负载均衡

负载均衡⼀般分为服务器端负载均衡和客户端负载均衡。

所谓服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据⼀定的算法将请求路由到⽬标服务器处理。

所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调⽤⽅在请求前通过⼀定的负载均衡算法选择⼀个服务器进⾏访问,负载均衡算法的执⾏是在请求客户端进⾏。

Ribbon是Netflix发布的负载均衡器。Eureka⼀般配合Ribbon进⾏使⽤,Ribbon利⽤从Eureka中读取到服务信息,在调⽤服务提供者提供的服务时,会根据⼀定的算法进⾏负载。
在这里插入图片描述

Ribbon高级应用

不需要引⼊额外的Jar坐标,因为在服务消费者中我们引⼊过eureka-client,它会引⼊Ribbon相关Jar。
在这里插入图片描述
代码中使⽤如下,在RestTemplate上添加对应注解即可

@Bean
// Ribbon负载均衡
@LoadBalanced
public RestTemplate getRestTemplate() {
 return new RestTemplate();
}

Ribbon负载均衡策略

Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接⼝为com.netflix.loadbalancer.IRule ,类树如下
在这里插入图片描述
在这里插入图片描述
修改负载均衡策略

#针对的被调⽤⽅微服务名称,不加就是全局⽣效
lagou-service-resume:
 ribbon:
 	NFLoadBalancerRuleClassName:
	com.netflix.loadbalancer.RandomRule #负载策略调整

Ribbon核⼼源码剖析

Ribbon⼯作原理

在这里插入图片描述
在这里插入图片描述

Ribbon细节结构图(涉及到底层的⼀些组件/类的描述)

1)获取服务实例列表
2)从列表中选择⼀个server
在这里插入图片描述
图中核⼼是负载均衡管理器LoadBalancer(总的协调者,相当于⼤脑,为了做事
情,协调四肢),围绕它周围的多有IRule、IPing等

  • IRule:是在选择实例的时候的负载均衡策略对象
  • IPing:是⽤来向服务发起⼼跳检测的,通过⼼跳检测来判断该服务是否可⽤
  • ServerListFilter:根据⼀些规则过滤传⼊的服务实例列表
  • ServerListUpdater:定义了⼀系列的对服务列表的更新操作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值