<dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-spring-boot-starter</artifactId><version>3.3.9</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>io.opentracing.contrib</groupId><artifactId>opentracing-spring-jaeger-web-starter</artifactId><version>3.1.1</version></dependency>
安装
数据库初始化
创建nacos数据库、及相应的用户,并通过如下的sql初始化数据库
https://github.com/alibaba/nacos/blob/2.0.1/distribution/conf/nacos-mysql.sql
Nacos Server 配置
PREFER_HOST_MODE=hostnameMODE=standaloneSPRING_DATASOURCE_PLATFORM=mysqlMYSQL_SERVICE_HOST=mysqlMYSQL_SERVICE_DB_NAME=nacosMYSQL_SERVICE_PORT=3306MYSQL_SERVICE_USER=naocsMYSQL_SERVICE_PASSWORD=naocs# 以下为2.x新增的服务端间验证方式NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE=falseNACOS_AUTH_IDENTITY_KEY=serverIdentityNACOS_AUTH_IDENTITY_VALUE=security
权限配置
### 开启鉴权nacos.core.auth.enabled=true### 关闭使用user-agent判断服务端请求并放行鉴权的功能nacos.core.auth.enable.userAgentAuthWhite=false### 配置自定义身份识别的key(不可为空)和value(不可为空)### 所有集群均需要配置相同的server.identity信息nacos.core.auth.server.identity.key=examplenacos.core.auth.server.identity.value=example// OR DockerNACOS_AUTH_ENABLE=truecurl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'curl -X GET '127.0.0.1:8848/nacos/v1/cs/configs?accessToken={}'
参考资料:
- 对类属性的监听必须在类上加@RefreshScope,否则不会变更
对dataId的监听不能在类上加@RefreshScope,否则会触发2次变更
// @RefreshScope@RestControllerpublic class NacosApi implements InitializingBean {@Value("${zc.nacos.v1:v1}") // 必须在类上加@RefreshScope,否则不会变更private String v1;@Value("${zc.nacos.v2:v2}")private String v2;@Autowiredprivate NacosConfigManager nacosConfigManager;@Overridepublic void afterPropertiesSet() throws Exception {log.info("Add Nacos Listener");// 不能在类上加@RefreshScope,否则会接收到2次变更String name = "test-v3.yaml";nacosConfigManager.getConfigService().addListener(name,nacosConfigManager.getNacosConfigProperties().getGroup(), new AbstractListener() {@Overridepublic void receiveConfigInfo(String data) {System.out.println("----------start");System.out.println(name+" onChange : " + data);try {NacosDataParserHandler.getInstance().parseNacosData(name, data, "yaml").forEach(x -> System.out.println(x.getName() + " = " + x.getSource()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("----------end");}});}}
多配置-不支持多namespace
```bash A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置 B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置 C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
data-id 的值必须带文件扩展名,文件扩展名既可支持 properties,又可以支持 yaml/yml group 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。 refresh 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。
当三种方式共同使用时,他们的一个优先级关系是:A < B < C,n 的值越大,优先级越高
<a name="jcJNT"></a>## 版本更新<a name="I7Uj2"></a>### 2.0.1<a name="cXpUI"></a>#### 新客户端gRPC请求服务端端口9848,如通过nginx则也要开放| 9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 || --- | --- | --- || 9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |<a name="91r2m"></a>#### pom强制使用2.0.1版本客户端```xml<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.5.RELEASE</version><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.5.RELEASE</version><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.0.1</version></dependency>
