添加负载均衡操作
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
package com.njcn.microservice.compent;
|
||||||
|
|
||||||
|
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
|
||||||
|
import com.alibaba.cloud.nacos.ribbon.NacosServer;
|
||||||
|
import com.alibaba.nacos.api.exception.NacosException;
|
||||||
|
import com.alibaba.nacos.api.naming.NamingService;
|
||||||
|
import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||||
|
import com.netflix.client.config.IClientConfig;
|
||||||
|
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
|
||||||
|
import com.netflix.loadbalancer.BaseLoadBalancer;
|
||||||
|
import com.netflix.loadbalancer.Server;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义负载均衡算法
|
||||||
|
*/
|
||||||
|
public class NacosWeightLoadBalanceRule extends AbstractLoadBalancerRule {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initWithNiwsConfig(IClientConfig clientConfig) {}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private NacosDiscoveryProperties nacosDiscoveryProperties;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Server choose(Object key) {
|
||||||
|
// 1.获取服务的名称
|
||||||
|
BaseLoadBalancer loadBalancer = (BaseLoadBalancer) this.getLoadBalancer();
|
||||||
|
String serverName = loadBalancer.getName();
|
||||||
|
// 2.此时Nacos Client会自动实现基于权重的负载均衡算法
|
||||||
|
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
|
||||||
|
try {
|
||||||
|
Instance instance = namingService.selectOneHealthyInstance(serverName);
|
||||||
|
return new NacosServer(instance);
|
||||||
|
} catch (NacosException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.njcn.microservice.config;
|
||||||
|
|
||||||
|
import com.netflix.loadbalancer.IRule;
|
||||||
|
import com.njcn.microservice.compent.NacosWeightLoadBalanceRule;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hongawen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2022年08月25日 19:53
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class RibbonConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public IRule getLoadBalancerRule(){
|
||||||
|
return new NacosWeightLoadBalanceRule();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user