Nacos学习总结-配置管理和服务发现

详细可参考:

http://www.pbteach.com/post/java_distribut/nacos-config/
http://www.pbteach.com/post/java_distribut/nacos-discovery/

一、Nacos配置管理

  1. 安装Nacos Server,快速入门以及配置管理的基本应用,Nacos的集群部署方式。

  2. 下载Nacos Server的zip包 bin目录下的start.cmd启动命令。访问127.0.0.1:8848/nacos 用户名密码均是nacos。
    启动nacos成功后,通过nacos提供的http api验证nacos服务是否正常(发布一个配置),下面通过curl工具来测试nacos的open api:
    curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/onfigs?dataId=nacos.cfg.dataId?group=test&content=HelloWorld” 这就是向配置中心发布了一个名字为nacos.cfg.dataId的配置文件,内容为HelloWorld
    获取一个配置:curl -X GET “http://127.0.0.1:8848/nacos/v1/cs/config?dataId=nacos.cfg.dataId&goup=test” 就能看到HelloWorld

  3. 让nacos使用外部的mysql数据库; 初始化mysql数据库,新建nacos_config数据库(随意名命),然后在压缩包里的conf/nacos-mysql.sql ,然后修改/conf/application.properties文件,增加支持mysql数据源配置:spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://ip:3306/nacos_config?
    characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=nacos_devtest
    db.password=youdaotknow

  4. 通过nacos的控制台界面来添加配置–>配置列表–>点击“+”号(新建配置) 输入 data ID : nacos-simple-demo.yaml Group: DEFAULT_GROUP 配置格式yaml 配置内容: common:config:something

  5. 程序中获取nacos管理的配置
    添加依赖nacos-client 版本:1.1.3
    写一个获取配置的main方法
    pulbic class SimpleDemoMain
    {
    public static void main(String[] args){
    String serverAddr = “127.0.0.1:8848”;
    String namespace = “xxxx”;
    String dataId = “nacos-simple-demo.yaml”;
    String group = “DEFAULT_GGROUP”;
    Properties properties = new Properties();
    properties.put(“serverAddr”,serverAddr);
    properties.put(“namespace”,namespace);

    ConfigService configService = NacosFactory.createConfigService(properties);
    

String config = configService.getConfig(dataId,group,5000)
System.out.println(config);

// 监听方法
configService.addListener(dataId,group, new Listener()
{
pulbic Executor getExecutor()
{
return null;
}
public void receiveConfigInfo(String s)
{ System.out.println(s);
}
});

while(true)
{
try{
Thread.sleep(2000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}

  1. 配置管理模型
    Namespace----Group(默认为DEFAULT_GROUP)----DataId(“一个配置文件”)

  2. 免登录–修改conf目录下的application.properties文件
    打开spring.basic…enabled=false 标签。此时登录nacos的控制台,就不需要输入密码了

  3. 微服务的创建(service1和service2)以及 外部配置的文件的优先级


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config


    org.springframwork.boot
    spring-boott-starter-web

spring:
application:
name:service1
cloud:
nacos:
config:
server-addr:127.0.0.1:8848 #配置中心地址
file-extension:yaml //dataId(配置文件)名称就是application的name加上file-extension 即:service1.yaml
namespace:xxxxxx
cluster-name: DEFAULT #默认集群,可不填写
group:TEST_GROUP //测试组
shared-dataids: ext-config.properties, ext-config1.properties(默认是DEFAULT_GROUP组中)
ext-config[0]: //扩展配置–file-extension优先,ext-config其次,shared-dataids最后。
data-id: exit-config-common01.properties //默认在DEFAULT_GROUP组
ext-config[1]:
data-id: ext-config-common02.properties
group:GLOBALE_GROUP //在指定的组
ext-config[2]:
data-id: ext-config-common02.properties
group:REFRESH_GROUP //在指定的组
refresh: true //支持动态刷新
public class Service1Application{
public static void main(String[] args)
{
SpringApplication.run(Service1Bootstap.class,args);
}
@Autowired
pirvate ConfigurableApplicationContext applicationContext;

@GetMapping(value="/configs")
public String getConfigs()
{
return applicationContext.getEnvironment().getProperty(“common.name”);
}

@GetMapping(value="/configs2")
public String getConfigs2()
{
String name = applicationContext.getEnvironment().getProperty(“common.name”);
String age= applicationContext.getEnvironment().getProperty(“common.age”);
String address = applicationContext.getEnvironment().getProperty(“common.address”);
String birthday = applicationContext.getEnvironment().getProperty(“common.birthday”);
String fullname = applicationContext.getEnvironment().getProperty(“common.fullname”);
return name+"+" + age+"+"+address+"+"+birthday+""
}
}

  1. 集群部署
    解压三分nacos,修改nacos目录的conf目录下cluster.conf,并将每个配置文件中的每行配置成ip:port–例如: 127.0.0.1:8848 127.0.0.1:8849
    如果多个ip也要指定具体的ip地址
    server.port = 8850
    nacos.inetutils.ip-address=127.0.0.1
    然后分别启动三个nacos文件,然后再配置中修改 : server-addr:127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850

6-1. 生产环境部署建议
nacos.com----> VIP—>(Nacos ip1,Nacos ip2, Nacos ip3)
至于数据库,生产环境下建议至少主备模式,通过修改${nacoshome}/conf/application.properties文件,能够nacos拥有多个数据源
spring.datasource.platform=mysql
db.num=2
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&autoReconnect=true
db.url.1=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&autoReconnect=true
db.user = root
db.password = root

二、Nacos服务发现
1. 添加spring alibaba 依赖的 pom.xml的依赖关系
2. 编辑application.xml
spring:
application:
name: quickstart-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3. 多实例负载均衡测试
将服务提供者中的server: port:${port:56010} 复制三份,来模拟多个实例部署。
在idea中vm options选项中动态的输入port执行。
4. 服务发现的数据模型: 命名空间、服务、服务名、 实例、元信息(在nacos控制台上的nacos实例时候有添加元数据信息)、集群
5. 服务管理基本功能
编辑服务列表中某个服务实例的权重,权重越高,分配的负载越多 ,如果设置为0,则不分担负载 ; 服务的上下线
6. spring Cloud alibaba综合的系统架构演示
在这里插入图片描述
组件说明:

API网关 :系统统一入口,屏蔽架构内部结构,统一安全拦截,采用Zuul实现。

application-1 :应用1,模拟应用,提供http接口服务。

service-1 :微服务1,模拟微服务,提供dubbo接口服务。

service-2 :微服务2,模拟微服务,提供dubbo接口服务。

调用流程:

​ 所有访问系统的请求都要经过网关,网关转发Http请求至application-1,application-1使用dubbo调用service1完成自身业务,而后sevice1调用service2完成自身业务。至此,完成所有组件贯穿。

架构中application与sevice的区别是什么?

service提供了基础服务功能;application组装基础服务功能,提供给用户直接可用的业务。
service服务粒度小、功能基础,不易发生改变;application提供上游业务功能,紧贴业务需求,容易发生改变。
形成service支撑application的整体架构,增加多变的application甚至不需要变动service。

  1. 创建 artifactId 名为 nacos-micro-service 的 Maven 工程,此父工程继承nacos-discovery父工程,间接指定了Spring boot、spring cloud 以及spring-cloud-alibaba的依赖版本。

    nacos-discovery com.pbteach.nacos 1.0-SNAPSHOT 4.0.0

    nacos-micro-service
    pom
    nacos-discovery的pom.xml如下:

com.pbteach.nacos
nacos-discovery
1.0-SNAPSHOT
pom

com.alibaba.cloud spring-cloud-alibaba-dependencies 2.1.0.RELEASE pom import org.springframework.cloud spring-cloud-dependencies Greenwich.RELEASE pom import org.springframework.boot spring-boot-dependencies 2.1.3.RELEASE pom import org.springframework.boot spring-boot-maven-plugin 4.5 实现application1 application1属于应用层,提供http接口服务。

(1)初始化 application-1 Maven 工程

application-1


com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config


com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery


org.springframework.boot
spring-boot-starter-web


(2)实现 application-1 功能

package com.pbteach.microservice.application1.controller;

@RestController
public class Application1Controller {

@GetMapping("/service")
public String service(){
   return "test" ;
}

}
(3) application1 配置

纯粹的dubbo服务消费者,配置看起来更简单。

定义bootstrap.yml

server:
port: 56020 #启动端口 命令行注入
servlet:
context-path: /application1

spring:
application:
name: application1
main:
allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4
cluster-name: DEFAULT
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4 # 开发环境
group: NACOS_MICROSERVICE_GROUP # xx业务组

(4) application1 启动

@SpringBootApplication
@EnableDiscoveryClient
public class Application1Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Application1Bootstrap.class,args);
}
}
当 Service1Bootstrap 启动后,应用 application1 将出现在 Nacos 控制台界面。

4.6 实现 Service1
4.6.1 定义父工程
定义service1父工程,pom.xml如下:

nacos-micro-service com.pbteach.nacos 1.0-SNAPSHOT 4.0.0

Service1

4.6.2 定义service-1-api
为了方便其它服务调用dubbo服务,专门定义api工程,此工程将作为jar被其它工程依赖。

定义service-1-api工程,pom.xml如下:

Service1 com.pbteach.nacos 1.0-SNAPSHOT 4.0.0

service-1-api

定义服务接口:

package com.pbteach.microservice.service1.api;

public interface ConsumerService {
public String service();
}
4.6.3 实现service-1-server
(1)初始化 service-1-server Maven 工程

与服务提供方 Maven工程类似,需添加相关 Maven 依赖:

<parent>
    <artifactId>Service1</artifactId>
    <groupId>com.pbteach.nacos</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>service-1-server</artifactId>
com.pbteach.nacos service-1-api 1.0-SNAPSHOT
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
(2)实现 Dubbo 服务

package com.pbteach.microservice.service1.service;
@org.apache.dubbo.config.annotation.Service
public class ConsumerServiceImpl implements ConsumerService {

@Override
public String service() {
    return "Consumer invoke " ;
}

}
注意:使用@org.apache.dubbo.config.annotation.Service标记dubbo服务

(3)配置 Dubbo 服务

Service2 作为Dubbo服务消费方配置与服务提供方类似,注意,service1不仅是消费方,同时还是服务提供方:

server:
port: ${port:56030} #启动端口 命令行注入

spring:
application:
name: service1
main:
allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4
cluster-name: DEFAULT
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4 # 开发环境
group: NACOS_MICROSERVICE_GROUP # xx业务组
dubbo:
scan:
# dubbo 服务扫描基准包
base-packages: com.pbteach.microservice
protocol:
# dubbo 协议
name: dubbo
# dubbo 协议端口
port: ${dubbo_port:20881}
registry:
address: nacos://127.0.0.1:8848
application:
qos-enable: false #dubbo运维服务是否开启
consumer:
check: false #启动时就否检查依赖的服务
以上 YAML 内容,dubbo开头的为dubbo服务 的配置:

dubbo.scan.base-packages : 指定 Dubbo 服务实现类的扫描基准包,将@org.apache.dubbo.config.annotation.Service注解标注的service暴露为dubbo服务。

dubbo.protocol : Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为dubbo协议端口

可以指定多协议,如:dubbo.protocol.rmi.port=1099

dubbo.registry : Dubbo 服务注册中心配置,其中子属性 address 的值 “nacos://127.0.0.1:8848”,说明dubbo服务注册到nacos
相当于原生dubbo的xml配置中的 <dubbo:registry address=“10.20.153.10:9090” />

上半部分为SpringCloud的相关配置:

spring.application.name : Spring 应用名称,用于 Spring Cloud 服务注册和发现。
该值在 Dubbo Spring Cloud 加持下被视作 dubbo.application.name,因此,无需再显示地配置 dubbo.application.name

spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口

spring.cloud.nacos.config : Nacos 配置中心配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口。

(4)启动服务消费方应用

@SpringBootApplication
@EnableDiscoveryClient
public class Service1Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Service1Bootstrap.class, args);
}
}
当 Service1Bootstrap 启动后,应用 service1 将出现在 Nacos 控制台界面。

启动成功,观察nacos服务列表

1572439366107

4.7 实现 application1调用Service1
现在service1已暴露dubbo服务并注册到nacos中,下边实现application1调用service1

4.7.1 引用service1
下边在application1中引用service1

在pom.xml中引入service-1-api的依赖

com.pbteach.nacos service-1-api 1.0-SNAPSHOT 引入 spring-cloud-starter-dubbo依赖,它会根据接口生成代理对象 com.alibaba.cloud spring-cloud-starter-dubbo 4.7.2 实现远程调用 @RestController public class Application1Controller {
@org.apache.dubbo.config.annotation.Reference
private ConsumerService consumerService;

@GetMapping("/service")
public String service(){
    return "test" + consumerService.service();
}

}
Note:注意:这里的@Reference注解是org.apache.dubbo.config.annotation.Reference

测试:

请求:http://localhost:56020/application1/service

consumerService正常生成代理对象,service1被调用。

4.8 实现 Service2
​ 如上面设计所示,Service2需要暴露dubbo接口以供service1消费,若想在Spring cloud Alibaba中集成并使用dubbo。

4.8.1 定义父工程
定义service2父工程,pom.xml如下:

nacos-micro-service com.pbteach.nacos 1.0-SNAPSHOT 4.0.0

Service2

4.8.2 定义service-2-api
​ 定义service-2-api工程,pom.xml如下:

Service2 com.pbteach.nacos 1.0-SNAPSHOT 4.0.0

service-2-api
​ 并定义服务接口,Dubbo 服务接口是服务提供方与消费方的远程通讯契约,通常由普通的 Java 接口(interface)来声明,如 ProviderService 接口:

package com.pbteach.microservice.service2.api;
public interface ProviderService {
String service();
}
4.5.3 实现service-2-server
(1)初始化 service-2-server Maven 工程

首先,创建 artifactId 名为 service-2-server 的 Maven 工程,并在其 pom.xml 文件中增添 Dubbo Spring Cloud 必要的依赖:

 <parent>
    <artifactId>Service2</artifactId>
    <groupId>com.pbteach.nacos</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>service-2-server</artifactId>
com.pbteach.nacos service-2-api 1.0-SNAPSHOT com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-dubbo

以上依赖 artifact 说明如下:

service-2-api : 提供 ProviderService 接口的 artifact
spring-boot-starter-web : Spring Boot starter artifact,间接引入 spring-boot artifact
spring-cloud-starter-dubbo : Dubbo Spring Cloud Starter artifact,间接引入 dubbo-spring-boot-starter 等 artifact
spring-cloud-starter-alibaba-nacos-discovery : Nacos Spring Cloud 服务注册与发现 artifact
(2)实现 Dubbo 服务

ProviderService 作为暴露的 Dubbo 服务接口,服务提供方 service-2-server 需要将其实现:

package com.pbteach.microservice.service2.service;

@org.apache.dubbo.config.annotation.Service
public class ProviderServiceImpl implements ProviderService {
@Override
public String service() {
return “Provider invoke”;
}
}
其中,@org.apache.dubbo.config.annotation.Service 是 Dubbo 服务注解,仅声明该 Java 服务(本地)实现为 Dubbo 服务。 因此,下一步需要将其配置 Dubbo 服务(远程)。

(3)配置 Dubbo 服务

在暴露 Dubbo 服务方面,推荐开发人员外部化配置的方式,即指定 Java 服务实现类的扫描基准包。

Dubbo Spring Cloud 继承了 Dubbo Spring Boot 的外部化配置特性,也可以通过标注 @DubboComponentScan 来实现基准包扫描。

同时,Dubbo 远程服务需要暴露网络端口,并设定通讯协议,完整的 YAML 配置如下所示:

server:
port: ${port:56040} #启动端口 命令行注入
spring:
application:
name: service2
main:
allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4
cluster-name: DEFAULT
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4 # 开发环境
group: NACOS_MICROSERVICE_GROUP # xx业务组
dubbo:
scan:
# dubbo 服务扫描基准包
base-packages: com.pbteach.microservice
protocol:
# dubbo 协议
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: ${dubbo_port:20891}
registry:
address: nacos://127.0.0.1:8848
application:
qos-enable: false
consumer:
check: false
(4)启动服务提供方应用

Dubbo Spring Cloud 引导类与普通 Spring Cloud 应用并无差别,如下所示:

@SpringBootApplication
@EnableDiscoveryClient
public class Service2Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Service2Bootstrap.class, args);
}
}
在引导 Service2Bootstrap 之前,请提前启动 Nacos 服务器。 当 Service2Bootstrap 启动后,应用 service2 将出现在 Nacos 控制台界面。

4.9 实现service1调用service2
4.9.1 引用service2
在service2中添加service1的依赖:

com.pbteach.nacos service-2-api 1.0-SNAPSHOT 4.9.2 实现远程调用 @org.apache.dubbo.config.annotation.Service public class ConsumerServiceImpl implements ConsumerService {
@Reference
ProviderService providerService;

public String service() {
    return "Consumer invoke | "+providerService.service();
}

}
测试:

请求:http://localhost:56020/application1/service

application1调用service1,service1调用service2

4.10 实现api-gateway
4.10.1 Zuul介绍
什么是网关?

​ 原来的单体架构,所有的服务都是本地的,UI可以直接调用,现在按功能拆分成独立的服务,跑在独立的一般都在独立的虚拟机上的 Java进程了。客户端UI如何访问?他的后台有N个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不服务我们拆分的理念,特别当前台是移动应用的时候,通常业务变化的节奏更快。另外,N个小服务的调用也是一个不小的网络开销。

1571880838542

​ 有了网关作为服务统一入口,就可以避免上述问题,不仅如此,服务网关是在微服务前边设置一道屏障,请求先到服务网关,网关会对请求进行过虑、校验、路由等处理。有了服务网关可以提高微服务的安全性,网关校验请求的合法性,请求不合法将被拦截,拒绝访问。

提供统一服务入口,让微服务对前台透明
聚合后台的服务,节省流量,提升性能
提供安全,过滤,流控等API管理功能
什么是Zuul?

​ Spring Cloud Zuul是整合Netflix公司的Zuul开源项目实现的微服务网关,它实现了请求路由、负载均衡、校验过虑等 功能。

官方:https://github.com/Netflix/zuul

Zuul与Nginx怎么配合使用?

Zuul与Nginx在实际项目中需要配合使用,如下图,Nginx的作用是反向代理、负载均衡,Zuul的作用是保障微服务的安全访问,拦截微服务请求,校验合法性及负载均衡。

1571881971066

4.10.2 搭建网关工程
初始化 api-gateway Maven 工程

<parent>
    <artifactId>nacos-micro-service</artifactId>
    <groupId>com.pbteach.nacos</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>api-gateway</artifactId>
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-zuul org.springframework.cloud spring-cloud-starter-openfeign 4.8.3 api-gateway配置 server: port: 56010 #启动端口 命令行注入

spring:
application:
name: api-gateway
main:
allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4
cluster-name: DEFAULT
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml
namespace: c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4 # 开发环境
group: NACOS_MICROSERVICE_GROUP # xx业务组

​ 网关的路由配置采用nacos远程配置,在nacos控制台开发环境中新增api-gateway.yaml配置集,配置组为TEST_GROUP,配置内容如下:

zuul:
routes:
application1:
stripPrefix: false
path: /application1/**
将请求为/application1/开头的请求路由至application1服务,保留请求url中的/application1/。

1572442388728

(4) api-gateway启动

注意在启动类上使用@EnableZuulProxy注解标识此工程为Zuul网关,启动类代码如下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class ApiGatewayBootstrap {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayBootstrap.class, args);
}
}
当 Service1Bootstrap 启动后,应用 api-gateway 将出现在 Nacos 服务列表中。

1572442564557

测试:

通过网关(api-gateway)请求Application1应用,Application1的业务实现又贯穿service1、service2,访问http://127.0.0.1:56010/application1/service ,将得到如下结果:

1571828918606

附: Spring Cloud Nacos discovery Starter配置项信息说明
配置项 Key 默认值 说明
服务端地址 spring.cloud.nacos.
discovery.server-addr 无 NacosServer 启动监听的ip地址和端口
服务名 spring.cloud.nacos.
discovery.service ${spring.application
.name} 给当前的服务命名
服务分组 spring.cloud.nacos.
discovery.group DEFAULT_GROUP 设置服务所处的分组
权重 spring.cloud.nacos.
discovery.weight 1 取值范围 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 无 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
AccessKey spring.cloud.nacos.
discovery.access-key 无 当要上阿里云时,阿里云上面的一个云账号名
SecretKey spring.cloud.nacos.
discovery.secret-key 无 当要上阿里云时,阿里云上面的一个云账号密码
Metadata spring.cloud.nacos.
discovery.metadata 无 使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息
日志文件名 spring.cloud.nacos.
discovery.log-name 无
集群 spring.cloud.nacos.
discovery.cluster-name DEFAULT 配置成Nacos集群名称
接入点 spring.cloud.nacos.
discovery.enpoint UTF-8 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否集成Ribbon ribbon.nacos.enabled true 一般都设置成true即可
是否开启Nacos Watch spring.cloud.nacos.
discovery.watch.enabled true 可以设置成false来关闭 watch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nacos-sdk-go是一个用于服务发现的开源软件包。它提供了一种简单且可靠的方式来实现服务发现功能,可以帮助开发人员更方便地构建分布式应用程序。 nacos-sdk-go基于Nacos开源项目开发,Nacos是阿里巴巴开源的一个服务发现配置管理平台。nacos-sdk-go提供了一系列的API和函数,可以用于注册、发现和管理服务。它支持HTTP和GRPC协议,能够与不同编程语言和框架进行集成。 使用nacos-sdk-go进行服务发现非常简单。首先,我们需要在应用程序中导入nacos-sdk-go的包,并初始化一个Nacos客户端。然后,我们可以使用该客户端注册服务、获取服务列表以及注销服务。例如,我们可以使用RegisterInstance函数将一个实例注册到Nacos服务注册表中。 当其他应用程序需要使用我们的服务时,它们可以使用nacos-sdk-go的DiscoverInstances函数来获取可用的服务实例列表。这样,我们的服务就可以被其他应用程序发现和使用了。 除了服务发现功能,nacos-sdk-go还提供了一些其他功能,如配置管理、动态配置刷新等。它可以帮助我们更好地管理和维护分布式应用程序的配置和服务总结来说,nacos-sdk-go是一个功能强大的服务发现工具,它可以帮助开发人员更方便地构建分布式应用程序。通过使用nacos-sdk-go,我们可以实现服务的注册、发现和管理,并能够与其他应用程序进行无缝集成,提高应用程序的可用性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值