Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
下载安装Nacos- Nacos下载地址 github下载地址特别慢,可以使用gitee下载或者docker安装
- 下载nacos-server-$version.zip
- 下载后解压文件进入到Nacos的bin目录下
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
- Windows启动命令:
cmd startup.cmd
- 或者双击startup.cmd运行文件。
- 账号: nacos
- 密码: nacos
http://ip地址:8848/nacos
- Linux/Unix/Mac
sh shutdown.sh
- Windows
cmd shutdown.cmd
- 或者双击shutdown.cmd运行文件。
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。starter使用有错,暂时不用
com.alibaba.boot
nacos-discovery-spring-boot-starter
0.2.3
com.alibaba.boot
nacos-config-spring-boot-starter
0.2.3
nacos.discovery.server-addr=10.114.10.37:8848
org.springframework.cloud
spring-cloud-alibaba-dependencies
0.2.1.RELEASE
pom
import
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config
nacos:
config:
server-addr: 127.0.0.1:8848
discovery:
server-addr: 127.0.0.1:8848
- 添加依赖,使用Nacos的注册中心服务
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2.0.2.RELEASE
之前eureka客户端的pom坐标:
org.springframework.cloud spring-cloud-starter-netflix-eureka-client
- 添加依赖,使用Nacos的配置中心
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
2.0.2.RELEASE
- 创建模块的配置文件bootstrap.properties文件
# 端口号
server.port=6001
# 服务名
spring.application.name=article
# nacos地址
spring.cloud.nacos.server-addr=localhost:8848
# nacos上创建的article.yml配置文件,名字于服务名相同
spring.cloud.nacos.config.extension-configs[0].data-id=article.yml
# 属于哪个组
spring.cloud.nacos.config.extension-configs[0].group=dev
# 修改配置文件且发布后不用重启服务
spring.cloud.nacos.config.extension-configs[0].refresh=true
我在application.properties中使用以下内容替换eureka信息:
server.port=9108 spring.cloud.nacos.server-addr=10.114.10.37:8848 spring.cloud.nacos.discovery.ip=10.114.10.37
eureka的信息:
#eureka.client.register-with-eureka=true #eureka.client.fetch-registry=true #eureka.client.serviceUrl.defaultZone=http://10.114.10.37:9100/eureka/ #eureka.instance.hostname=10.114.10.37 #eureka.instance.instance-id=10.114.10.37:${server.port} #eureka.instance.status-page-url=http://10.114.10.37:${server.port}/swagger-ui.html#/
主启动类上使用注解:@EnableDiscoveryClient
因为新版本做了相应的改造,所以这个注解可以不加
bootstrap.yml中配置
#同时存在bootstrap.yml和application.properties,会先加载bootstrap.yml #所以配置中心的地址要写在bootstrap.yml中 server: port: 9096 #eureka: # client: # serviceUrl: # defaultZone: http://10.114.10.37:9100/eureka/ # instance: # hostname: 10.114.10.37
spring: application: name: applicationname cloud: config: profile: dev discovery : enabled : true serviceId : config-server nacos: server-addr: 10.114.10.37:8848 discovery: ip: 10.114.10.37
- 通过账号密码登录到Nacos控制台
- 创建配置文件,名字要于服务的name名相同
- 配置文件article.yml
- 成功创建配置文件并发布后,启动服务,在控制台就可以看到了
- 配置文件就在Nacos管理了,每次修改文件后也不需要重启服务。
-
这里扩展一下,Spring Cloud 提供了一个服务接口
DiscoveryClient
,里面有两个方法比较实用,一个是查询指定服务的所有实例信息的getInstances接口,另一个是查询该注册中心有多少个服务getServices()接口,直接写到自己的测试代码里就可以查看该注册中心上面的信息了。代码如下:@Autowired private DiscoveryClient discoveryClient; @GetMapping("getInstances") public List getInstances(){ //查询指定服务的所有实例信息 //无论使用什么做注册中心都可以使用consul、eureka、zookeeper return discoveryClient.getInstances("user-center"); } @GetMapping("getServices") public List getServices(){ //查询该注册中心有多少个服务 return discoveryClient.getServices(); }