天天看点

Ribbon负载均衡 饥饿加载

需要两份或多份相同的性质的服务的模块,地址与端口不同,服务模块名称相同,访问者通过名称进行访问

让访问者进行负载均衡的选择

Ribbon负载均衡 饥饿加载

在Eureka中发送这个路径我使用的是名字,而不是ip,这里面的负载均衡就是由我们的Ribbon实现的,

如过在浏览器中搜索这个路径肯定是查不到的,所以说这个Ribbon实现了Eureka中的负载均衡

Ribbon负载均衡 饥饿加载

@LoadBalanced注解就是拦截RestTemplate的请求,交给Ribbon来处理

Ribbon根据请求的服务名去拉取Ereuka注册中心里的服务列表

然后去做负载均衡处理,选择好服务列表中某一个ip后,会把服务名称改为选择好的ip,重新发送请求给提供者

通过源码 类LoadBalancerInterceptor 中 的 intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) 方法可以看出

Ribbon的负载均衡策略由IRule决定的,可以通过Irule接口自定义它的策略,默认轮询策略

有全局微服务配置,和局部服务的Ribbon负载均衡 方式有xml和注解

Ribbon有懒加载和饥饿加载

默认懒加载:第一次加载拉去服务,然后缓存,往后就会很快

第一次加载

Ribbon负载均衡 饥饿加载

第二次加载

Ribbon负载均衡 饥饿加载

饥饿加载:在配置中对某个服务开启饥饿加载

ribbon:

eager-load:

enabled:true #开启饥饿加载

clients:userservice #指定对userservice这个服务进行饥饿加载

Ribbon负载均衡 饥饿加载

启动后测试

Ribbon负载均衡 饥饿加载

Eureka的负载均衡就是由Ribbon控制的

继续阅读