1、安装nacos安装
2、服务提供
2.1、分别在服务提供及服务消费工程中的pom中添加如下依赖,此依赖的作用是服务发现。
即1、将自己的地址注册到服务发现中心,2、从服务发现中心获取服务列表
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.2、在对应的application.yaml文件中配置对应的nacos服务发现相关的配置:如下:
spring:
application:
name: nacos-restful-provider #服务名即所在的pom模块的服务名称,也即对外提供访问的服务名称,还是注册到nacos上的服务名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #服务发现中心地址 nacos的地址,即向这个地址进行注册
2.3重启服务就可以在nacos服务列表看到对应的服务
3、服务消费
3.1、服务消费也需要在服务消费模块中引入上边的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2、同样服务消费也需要在配置列表中配置nacos服务中心的地址才能找到服务
spring:
application:
name: nacos-restful-consumer # 如果只是做服务消费,可以不配服务名,但是如果组个服务消费也需要对外提供服务就必须配,一般建议配
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #服务发现中心地址 nacos的地址,即向这个地址进行注册
3.3、配置完成后就可以调用服务提供方提供的服务了
@Autowired
LoadBalancerClient loadBalancerClient;
@GetMapping(value = "/service1")
public String service1(){
//远程调用
RestTemplate restTemplate = new RestTemplate();
//发现一个地址 # loadBalancerClient客户端负载均衡,Nginx是服务器端负载均衡
ServiceInstance serviceInstance = loadBalancerClient.choose(serviceId);
//获取一个http://开头的地址,包括ip和端口
URI uri = serviceInstance.getUri();
String result = restTemplate.getForObject(uri + "/service", String.class); // 调用远程服务
return "consumer 123 invode|"+result;
}
负载均衡策略:
在服务消费方的application.yml配置文件中添加如下内容来修改负载均衡策略
nacos-restful-provider: # 服务提供方的服务名
ribbon: # 固定
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 选择所使用的测略的全路径