天天看点

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

首先官方: https://github.com/Netflix/ribbon

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

ribbon自带以下几种算法

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

实现如下场景的负载均衡

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

简单使用(默认用的时轮询算法)

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

接下来用restTemplate调用其他工程时,通过注册中心来调用。所以调用时地址写服务提供者注册到注册中心的工程名就行

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

Ribbon的核心组件(使用其他负载均衡算法)

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

Ribbon自定义负载均衡算法

想要自定义负载均衡算法,就需要在启动来引入一个注解:

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

下图这样自定义类就生效了,当然了,这里我自定类中还是写的它自带的随机算法。接下来看就是自定义了

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

自定义负载均衡算法

需求实现:我们实现一个自定义负载均衡算法规则:依旧轮询策略,但是加上新需求,每个服务器要求被调用5次,也即是以前是每台机器一次,现在每台机器5次

首先参考它官方自带的随机算法怎么实现的:https://github.com/Netflix/ribbon/blob/master/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/RandomRule.java

看看它是怎么写的

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

然后将刚刚那个需求实现

ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)
ribbon负载均衡Ribbon的核心组件(使用其他负载均衡算法)

继续阅读