1.下载安装nacos
中文官网
https://nacos.io/zh-cn/
中文文档
https://nacos.io/zh-cn/docs/quick-start.html
从 最新稳定版本(https://github.com/alibaba/nacos/releases) 下载 nacos-server-$version.zip 包或nacos-server-$version.tar.gz 。
或者在这里下载:nacos-server-1.4.1,2.0.1,2.0.3,2.0.4-Java文档类资源-CSDN下载
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
在浏览器中输入http://localhost:8848/nacos就可以访问了,默认的用户名和密码都是nacos
拓展
ubuntu默认采用dash,导致sh运行报错
用命令 ls -l /bin/sh
若结果是: /bin/sh -> dash
我们会发现Ubuntu默认采用的是 dash
如果要修改默认的sh,可以采用命令
sudo dpkg-reconfigure dash
然后选择【否】
成功后再执行ls -l /bin/sh 看看
结果是: /bin/sh -> bash
修改成功!
当然我们也可以使用
sudo dpkg-reconfigure dash
把sh修改回去
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
在浏览器中输入http://localhost:8848/nacos就可以访问了,默认的用户名和密码都是nacos
2.springboot添加 Nacos依赖以及在properties配置Nacos
(1).添加SpringBoot父级依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
(2).添加Nacos配置中心,注册中心依赖,记得控制好版本的选择
<properties>
<!-- 版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本 -->
<!-- nacos.config,nacos.discovery 如果要选用0.2.x最好大于0.2.2以上-->
<nacos.config.version>0.2.7</nacos.config.version>
<nacos.discovery.version>0.2.7</nacos.discovery.version>
<springboot.version>2.3.2.RELEASE</springboot.version>
</properties>
<!-- nacos-config配置中心依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos.config.version}</version>
</dependency>
<!-- nacos-discovery注册中心依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${nacos.discovery.version}</version>
</dependency>
(3).在application.properties中添加以下配置
# springApplicationName
spring.application.name=nacos-service
# 应用端口以及地址
server.port=8088
server.ip=127.0.0.1
# nacos配置中心地址
nacos.config.server-addr=127.0.0.1:8848
# nacos注册中心地址
nacos.discovery.server-addr=127.0.0.1:8848
3.springboot配置nacos 服务配置与服务自动注册
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
@Configuration
@NacosPropertySource(dataId = "nacos-springboot-service", autoRefreshed = true)
public class NacosConfig {
@Value("${server.port}")
private int serverPort;
@Value("${server.ip}")
private String ip;
@Value("${spring.application.name}")
private String applicationName;
@NacosInjected
private NamingService namingService;
/**
* 开机自动注册服务
*
* @throws NacosException
*/
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName, ip, serverPort);
}
}
(1).在@NacosPropertySource注解中配置服务,配置多个服务可以使用’@NacosPropertySources
如:@NacosPropertySources({
@NacosPropertySource(dataId = "nacos.springboot.service", groupId = "springboot", autoRefreshed = true),
@NacosPropertySource(dataId = "nacos.springboot.service.pre", groupId = "springboot", autoRefreshed = true),
@NacosPropertySource(dataId = "nacos.springboot.service.test", groupId = "springboot", autoRefreshed = true),
@NacosPropertySource(dataId = "nacos.springboot.service.test", groupId = "springboot", autoRefreshed = true)
})
(2).在registerInstance()方法中进行服务注册
4.写nacos api 测试接口
@RestController
@RequestMapping("/api/nacos/")
class NacosController {
@NacosValue(value = "${service.name:1}", autoRefreshed = true)
private String serverName;
@Value("${useLocalCache:false}")
private boolean useLocalCache;
public void setUseLocalCache(boolean useLocalCache) {
this.useLocalCache = useLocalCache;
}
@RequestMapping(value = "/getLocalCache", method = GET)
public boolean getLocalCache() {
return useLocalCache;
}
@RequestMapping(value = "/getServerName", method = GET)
public String getServerName() {
return serverName;
}
@NacosInjected
private NamingService namingService;
/**
* 根据服务名称获取实例数
*/
@RequestMapping(value = "/getServiceInfo", method = GET)
public List<Instance> getServiceInfo(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
1.getLocalCache
2.getServerName 获取服务配置名称
3.getServiceInfo 根据应用名称springApplicationName获取实例信息
成功启动应用后的访问示例:
http://localhost:8088/api/nacos/getServiceInfo?serviceName=nacos-service