一、Ribbon
1.1、概述
1.2、spring-cloud-starter-alibaba-nacos-discovery默认集成了Ribbon

1.3、官网
https://github.com/Netflix/ribbon/wiki/Getting-Started

1.4、Ribbon进入维护模式怎么办
1.5、功能
1.5.1、LB
1.5.2、Ribbon本地负载均衡 vs Nginx服务端负载均衡
1.5.3、集中式LB
1.5.4、进程内LB
1.6、 Ribbon工作原理
1.7、核心组件IRule
1.7.1、概述
1.7.2、继承结构

1.7.3、组件介绍
1.7.4、IRule原理
1.8、如何使用
/**
* @Author : 一叶浮萍归大海
* @Date: 2024/1/3 9:00
* @Description:
*/
public class MyRandomRule extends AbstractLoadBalancerRule {
@Override
public Server choose(Object key) {
// 获取当前请求的服务实例
ILoadBalancer loadBalancer = this.getLoadBalancer();
List<Server> servers = loadBalancer.getReachableServers();
int index = ThreadLocalRandom.current().nextInt(servers.size());
return servers.get(index);
}
@Override
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
}
/**
* @Author : 一叶浮萍归大海
* @Date: 2024/1/3 8:39
* @Description:
*/
@RibbonClients(value = {
@RibbonClient(name = "stock-service-nacos",configuration = MyRibbonConfig.class)
})
@SpringBootApplication
public class OrderServiceRibbon8001MainApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceRibbon8001MainApplication.class, args);
}
}
1.9、参考