版本

  1. springboot版本:2.1.6.RELEASE
  2. nacos版本Nacos 1.1.0

创建一个springboot项目

快速开始

  1. pom引用

        <!--配置 屏蔽,方便测试-->
         <!--<dependency>-->
             <!--<groupId>org.springframework.cloud</groupId>-->
             <!--<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
             <!--<version>0.9.0.RELEASE</version>-->
         <!--</dependency>-->
         <!--服务注册-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <version>0.9.0.RELEASE</version>
         </dependency>
  2. yml配置

修改配置名称: bootstrap.yml
添加配置信息

spring:
  application:
    name: nacos-client
  cloud:
    nacos:
#      config:
#        server-addr: 127.0.0.1:8848
#        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
server:
  port: 8086

  1. 代码

a.NacosController.class

@RestController
public class NacosController {

    @Autowired
    private LoadBalancerClient loadBalancerClient;
    @Autowired
    private RestTemplate restTemplate;

    @Value("${spring.application.name}")
    private String appName;

    @GetMapping("/echo/app-name")
    public String echoAppName() {
        //使用 LoadBalanceClient 和 RestTemolate 结合的方式来访问
        ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-producer");
        String url = String.format("http://%s:%s/echo/%s", serviceInstance.getHost(), serviceInstance.getPort(), appName);
        System.out.println("request url:" + url);
        return restTemplate.getForObject(url, String.class);
    }

}

b.NacosDiscoveryClientApplication.class


/**
 * @author huangdeyao
 */
@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryClientApplication.class, args);
    }

    //实例化 RestTemplate 实例
    @Bean
    public RestTemplate restTemplate() {

        return new RestTemplate();
    }
}

分别启动NacosDiscoveryClientApplication,和NacosDiscoveryProducerApplication项目Spring Cloud + Nacos 三部曲之Discovery服务注册发现

请求接口:http://localhost:8086/echo/app-name
返回:Hello Nacos Discovery nacos-client

这里可以多启动几个NacosDiscoveryProducerApplication实例,一直刷请求,可以发现后台打印信息,nacos默认的负载均衡Ribbon机制为 轮询

request url:http://192.168.177.1:8085/echo/nacos-client
request url:http://192.168.177.1:8085/echo/nacos-client
request url:http://192.168.177.1:9999/echo/nacos-client
request url:http://192.168.177.1:8085/echo/nacos-client
request url:http://192.168.177.1:9999/echo/nacos-client
request url:http://192.168.177.1:8085/echo/nacos-client

关于 Nacos Starter 更多的配置项信息

更多关于 spring-cloud-starter-alibaba-nacos-discovery 的 starter 配置项如下所示:

配置项Key默认值说明
服务端地址spring.cloud.nacos.discovery.server-addrNacos Server 启动监听的ip地址和端口
服务名spring.cloud.nacos.discovery.service${spring.application.name}给当前的服务命名
权重spring.cloud.nacos.discovery.weight1取值范围 1 到 100,数值越大,权重越大
网卡名spring.cloud.nacos.discovery.network-interface当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
注册的IP地址spring.cloud.nacos.discovery.ip优先级最高
注册的端口spring.cloud.nacos.discovery.port-1默认情况下不用配置,会自动探测
命名空间spring.cloud.nacos.discovery.namespace常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
AccessKeyspring.cloud.nacos.discovery.access-key当要上阿里云时,阿里云上面的一个云账号名
SecretKeyspring.cloud.nacos.discovery.secret-key当要上阿里云时,阿里云上面的一个云账号密码
Metadataspring.cloud.nacos.discovery.metadata使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息
日志文件名spring.cloud.nacos.discovery.log-name
集群spring.cloud.nacos.discovery.cluster-nameDEFAULT配置成Nacos集群名称
接入点spring.cloud.nacos.discovery.enpointUTF-8地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否集成Ribbonribbon.nacos.enabledtrue一般都设置成true即可

代码
个人站点

reference

Nacos Config Example

Spring Cloud Alibaba Nacos Config

Spring Cloud Alibaba Nacos Discovery

最后修改:2020 年 02 月 13 日
如果觉得我的文章对你有用,请随意赞赏