什么是Nacos?
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
– nacos官网
在docker中使用Nacos
通过docker search nacos从镜像库中搜索,从列表中找到nacos/nacos-server, 直接将该镜像pull下来就行了。
下载完成后通过一下命令启动
docker run -d \
--name nacos \
--privileged \
--cgroupns host \
--env JVM_XMX=256m \
--env MODE=standalone \
--env JVM_XMS=256m \
-p 8848:8848/tcp \
-p 9848:9848/tcp \
--restart=always \
-w /home/nacos \
nacos/nacos-server
docker run -d: 以分离模式运行一个容器(后台运行)。
–name nacos: 给容器指定一个名称为 nacos。
–privileged: 以特权模式运行容器。这将使容器拥有更多的权限,类似于宿主机的 root 权限。
–cgroupns host: 将容器的 cgroup 命名空间设置为宿主机的 cgroup 命名空间。这在某些情况下可能有助于性能优化。
–env JVM_XMX=256m: 设置环境变量 JVM_XMX 为 256m,这用于限制 JVM 最大堆内存为 256MB。
–env MODE=standalone: 设置环境变量 MODE 为 standalone,这意味着 Nacos 将以单机模式运行。
–env JVM_XMS=256m: 设置环境变量 JVM_XMS 为 256m,这用于设置 JVM 初始堆内存为 256MB。
-p 8848:8848/tcp: 将宿主机的 8848 端口映射到容器的 8848 端口,用于 TCP 协议。这通常是 Nacos 的服务端口。
-p 9848:9848/tcp: 将宿主机的 9848 端口映射到容器的 9848 端口,用于 TCP 协议。这个端口通常是用于 Nacos 的监控或其他功能。
–restart=always: 设置容器的重启策略为“总是重启”,即使容器因错误退出也会自动重启。
-w /home/nacos: 设置容器内的工作目录为 /home/nacos。
nacos/nacos-server: 这是要运行的 Docker 镜像名称。
总结起来,这条命令是在后台运行一个名为 nacos 的容器,该容器运行 Nacos 服务器,以特权模式运行,并设置了特定的 JVM 内存配置、运行模式及端口映射,并且在容器意外停止时会自动重启。最后通过docker ps -a 查看是否运行。启动后访问8848端口就可以进入Nacos的服务界面了。
Nacos使用
进入Nacos服务页后需要登录账号和密码,默认账号和密码是nacos,进入后是这样一个界面
可以通过右侧加号为我们的项目添加配置。
官网里有详细的配合一些主流生态的使用教程
例如:
Nacos与Spring boot一起使用
Nacos与Kubernetes一起使用
注意:对dataId的命名一定要遵守规范,完整格式如下
${prefix}-${spring.profiles.active}.${file-extension}
注意: 在Spring Cloud项目中使用是需要将配置信息填入bootstrap.properties中,并引入如下依赖:
<!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.4</version> <!-- 请选择合适的版本-->
</dependency>
由于我使用的是springboot3.x给自己留个传送锚点,可以避一些雷
springboot3.x集成nacos踩坑,并实现多环境配置
远程连接nacos配置中心报错(远程连接遇到问题一定要看一下)
Add a spring.config.import=nacos: property to your configuration. If configuration is not required(这种情况我建议使用方法二,用方法一日志输出可能会有问题)
nacos启动服务发现
在需要启动服务发现的项目的pom.xml文件里添加以下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
并向bootstrap.properties填入适当的配置信息(详细配置信息)。
示例如下:
spring:
application:
name: <!-- 填入你的项目名-->
profiles:
active: <!-- 填入你的环境设置 dev:开发环境 test:测试环境 pred:生产环境-->
cloud:
nacos:
config:
server-addr: <!-- 你的项目地址-->
prefix: ${spring.application.name}
group: <!-- 所属group-->
file-extension: <!-- 文件拓展名-->
namespace: <!-- 命名空间,默认public可不填-->
discovery:
enabled: true <!-- 开启服务发现-->
server-addr: <!-- 你的项目地址-->