Nacos能够实现服务注册与发现,在服务提供者和服务消费者调用时,使用自带组件。
1. 在服务消费者中注入DiscoveryClient
@Autowired
private DiscoveryClient discoveryClient;
2. 从discoveryClient中用服务名字获取服务地址
// 从nacos中获取服务地址
List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("service_product");
ServiceInstance serviceInstance = serviceInstanceList.get(0);
String url = serviceInstance.getHost() + ":" + serviceInstance.getPort();
3. 当同一个服务有多个实例时,自定义实现负载均衡
// 从nacos中获取服务地址
List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("service_product");
// 自定义负载均衡
int index = new Random().nextInt(serviceInstanceList.size());
ServiceInstance serviceInstance = serviceInstanceList.get(index);
String url = serviceInstance.getHost() + ":" + serviceInstance.getPort();