Nacos服务注册与发现

Nacos是阿里巴巴开源的微服务组件,用于服务注册与发现以及全局配置,本文主要介绍其服务注册及发现的用法。

官网地址:https://nacos.io/

源码地址:https://github.com/alibaba/nacos

如果要测试Nacos组件,同样需要开启至少三个服务,分别是Nacos Server,服务提供者、服务消费者。

1. 启动Nacos Server
(1) 从github上下载 nacos1.4.1
(2) 编译
  mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
(3) Linux/Unix/Mac下运行
  启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone
(4)  在浏览器输入 . http://127.0.0.1:8848/nacos 可以查看服务情况
    

2. 服务提供者,向Nacos Server注册服务

(1) pom 文件添加依赖
   <dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
(2) 启动主类上添加注解
    @EnableDiscoveryClient
 (3) application.yml添加 nacos 配置
spring:
  application:
    name: "common-sys"
  datasource:
    driverClassName: "com.mysql.cj.jdbc.Driver"
    url: "jdbc:mysql://xxx.yyy.xxx.ttt:3316/nanhai?allowMultiQueries=true"
    username: "root"
    password: "root"
  cloud:
    nacos:
      discovery:
        server-addr: "nanhai.com.cn:9090"

server:
  port: 7070

3. 消费者访问服务,消费的方式有多种,可以用openFeign,可以和nacos官网案例中的NamingService实例,也可以用RestTemplate,下面我用

RestTemplate来演示服务间的调用 ,这个案例演示一个服务如何通过注册中心去调用/hello这个服务

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate() ;      //这个restTemplate具有负载均衡的能力
    }


    @Autowired
    private RestTemplate restTemplate ;

    @Autowired
    LoadBalancerClient loadBalancerClient;

    @RequestMapping("/test")   
public String testHello(){ //ServiceInstance serviceInstance = loadBalancerClient.choose("common-sys"); String url = "http://common-sys" + /*serviceInstance.getInstanceId() + */"/hello" ; //commons-sys是注册到注册中心的服务名 System.out.println( "--------" + url); String result = restTemplate.getForObject( url , String.class); return result ; }
原文地址:https://www.cnblogs.com/hzhuxin/p/14730265.html