Nacos
安装
源码安装
第一步:利用Gitee获取nacos在github上的代码到自己的gitee仓库中

https://github.com/alibaba/nacos.git
第二步:下载源码到本地。
第三步:使用maven编译代码。
bash
# 先切换到master分支
git checkout master
# 使用如下命令编译源码
mvn -Prelease-nacos -Dmaven.test.skip=true -Drat.skip=true clean install -U
第四步:编译好的内容在distribution目录下


第五步:把zip文件放到其他目录中,并解压。

第六步:修改配置conf目录下的配置文件,添加secretkey。

properties
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
第七步:启动nacos F:\env\nacos\bin目录下
bash
startup.cmd -m standalone
Nacos环境测试
https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
bash
#服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
#服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
#发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
#获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
Nacos服务的注册与发现
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
父POM
注意版本号的选取。
xml
<packaging>pom</packaging>
<properties>
<spring.cloud-version>Hoxton.SR10</spring.cloud-version>
<springboot-version>2.2.9.RELEASE</springboot-version>
<spring.cloudalibaba-version>2.2.9.RELEASE</spring.cloudalibaba-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloudalibaba-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
模块 provider
微服务模块中引入nacos依赖
yaml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
yml配置
yaml
server:
port: 8070
spring:
application:
name: service-provider #服务名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos注册中心的地址
启动类NacosProviderApplication
java
@SpringBootApplication
@EnableDiscoveryClient // 注册到nacos中
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
java
@RestController
public class EchoController {
@Value("${server.port}")
private Integer port;
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery: "+port+"--->" + string;
}
}

模块 consumer
pom文件与producer一致
yaml
server:
port: 8090
spring:
application:
name: service-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
启动类NacosConsumerApplication
java
@SpringBootApplication
@EnableDiscoveryClient // 注册到nacos中 不管是消费者还是提供者,都是这个注册到nacos中
public class NacosConsumerApplication {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
}
java
@RestController
public class TestController {
private final RestTemplate restTemplate;
@Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
}
}
Nacos服务配置中心
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
POM文件
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
yml配置文件
文件名为:bootstrap.yml
yaml
spring:
application:
name: config-demo
cloud:
nacos:
server-addr: 127.0.0.1:8848
config:
group: mygroup
file-extension: yaml
profiles:
active: dev
Nacos配置中心添加服务配置


注意需要在bootstrap配置文件中声明nacos中使用的配置文件的扩展名
properties
spring.cloud.nacos.config.file-extension=yaml
yml
spring:
application:
name: config-demo #跟配置的前缀名字
cloud:
nacos:
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
profiles:
active: test #跟配置的后缀 设备名匹配
如果需要指定配置文件的分组,如下
properties
spring.cloud.nacos.config.group=dev
.cloud.nacos.config.file-extension=yaml
yml
spring:
application:
name: config-demo #跟配置的前缀名字
cloud:
nacos:
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
profiles:
active: test #跟配置的后缀 设备名匹配
如果需要指定配置文件的分组,如下
properties
spring.cloud.nacos.config.group=dev