Nacos负载均衡
整个项目的架构图还是:
如上图,如果此时用户打车成功,会调用订单服务,订单服务会修改司机状态,此时会调用 hailtaxi-driver
,如果是生产环境,每个节点一定是集群状态,比如有2个 hailtaxi-driver
节点,此时如何实现负载均衡?
我们可以发现服务注册到Nacos中,有一个权重属性,这个权重属性就是Nacos的负载均衡机制,此时需要用到Nacos
的负载均衡策略 NacosRule ,我们可以在程序中先初始化负载均衡算法,再到bootstrap.yml中配置权重。
1)初始化负载均衡算法
在hailtaxi-order
的主启动类中初始化负载均衡算法:
/***
* 负载均衡算法
*/
@Scope(value = "prototype")
@Bean
public IRule nacosRule() {
return new NacosRule();
}
2)权重配置
为了演示集群效果,我们把 hailtaxi-driver 复制2份,端口分别为18081、18083
在上图我们配置了18083的权重,再来bootstrap.yml
中配置18081的权重:
3)测试
为了方便查看调用了哪个节点,我们把每个节点的端口号输出。然后启动三个项目,再请求打车测试发现服务切换以1:2的调用比例执行。
4)注意的点
如果我们把算法NacosRule()
注释,默认就是和 Ribbon 集成,和 Ribbon 默认开启,可以通过如下配置实现关闭或开启: