3、Nacos 基础入门:安装、启动与控制台初探

好,咱们正式开始接触 Nacos 了。

说实话,我第一次接触 Nacos 是在一个微服务改造的项目里。当时团队还在用 ZooKeeper 做配置管理,每次改个配置都要重启服务,搞得大家怨声载道。后来换了 Nacos,嗯,真香。

这一章,我带大家把 Nacos 跑起来,看看它到底长什么样。

3.1 环境准备与安装

Nacos 依赖 Java 环境。我个人习惯用 JDK 1.8+,太老的版本可能会有兼容问题。

注意: 别用 Java 9 或 10,我踩过坑。Nacos 官方推荐 JDK 8 或 11。

安装方式有两种:

  • 源码编译:适合想研究源码的同学
  • 下载发行包:咱们生产环境常用的方式

我建议新手直接下载编译好的包。去 Nacos 的 GitHub Release 页面,找到最新稳定版,下载 nacos-server-xxx.tar.gznacos-server-xxx.zip

解压后,目录结构是这样的:

nacos/
├── bin/          # 启动脚本
├── conf/         # 配置文件
├── data/         # 数据存储(默认用内嵌数据库)
├── logs/         # 日志
└── target/       # 启动类

嗯,这里要注意:conf/application.properties 是核心配置文件。如果你要改端口、数据库连接,都在这里改。

3.2 启动与验证

启动很简单。Linux/Mac 下执行:

sh bin/startup.sh -m standalone

Windows 下执行:

bin\startup.cmd -m standalone

-m standalone 表示单机模式。生产环境一般用集群模式,咱们学习阶段用单机就够了。

启动成功后,控制台会输出类似这样的日志:

Nacos started successfully in stand alone mode. use external storage

这时候打开浏览器,访问 http://localhost:8848/nacos,就能看到登录页面了。

小提示: 默认用户名和密码都是 nacos。我第一次登录时还愣了一下,这也太简单了吧?嗯,生产环境记得改密码。

3.3 控制台初探

登录进去后,你会看到 Nacos 的控制台。我把它分成几个核心区域:

区域 功能
左侧菜单 配置管理、服务管理、命名空间等
配置列表 展示所有配置项,支持搜索和过滤
服务列表 展示注册的服务实例
命名空间 隔离不同环境或项目

说白了,左边是导航,中间是内容区。你点哪个菜单,右边就显示对应的内容。

我个人习惯先看「配置列表」。这里能看到所有已经发布的配置。你可以新建一个配置试试:

Data ID: example.properties
Group: DEFAULT_GROUP
配置内容:
user.name=zhangsan
user.age=25

点击发布后,这个配置就生效了。客户端可以通过 Nacos SDK 实时获取到。

核心概念: Data ID 是配置的唯一标识,Group 是配置的分组。两者组合起来,才能唯一定位一个配置。

3.4 命名空间与分组

这两个概念,我刚开始学的时候有点混淆。咱们捋一捋。

3.4.1 命名空间(Namespace)

命名空间用于隔离。你可以把它理解成一套独立的配置环境。

举个例子:

  • 开发环境用一个命名空间
  • 测试环境用一个命名空间
  • 生产环境用一个命名空间

每个命名空间里,Data ID 和 Group 可以重复。因为它们属于不同的命名空间,互不影响。

我曾经在一个项目里,把开发和生产混在同一个命名空间里。结果有一次误操作,把生产配置改了,差点出事故。从那以后,我强制要求每个环境必须用独立的命名空间。

3.4.2 分组(Group)

分组是在同一个命名空间内,对配置做逻辑分类

比如:

  • DEFAULT_GROUP:默认分组,放通用配置
  • DATABASE_GROUP:数据库相关配置
  • CACHE_GROUP:缓存相关配置

分组的作用,说白了就是方便管理。你想想看,如果几百个配置都堆在默认分组里,找起来多费劲。

我的建议: 命名空间按环境划分,分组按业务模块划分。这样既隔离又清晰。

3.5 实际操作:创建命名空间和分组

咱们动手试试。

在控制台左侧菜单,点击「命名空间」。你会看到一个列表,默认有一个 public 命名空间。

点击「新建命名空间」,输入:

  • 命名空间ID:dev
  • 命名空间名称:开发环境

创建成功后,在配置列表的左上角,就能切换到 dev 命名空间了。

然后在这个命名空间下,新建一个配置:

Data ID: app.yml
Group: DATABASE_GROUP
配置内容:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
    username: dev_user
    password: dev_pass

发布后,这个配置就只属于 dev 命名空间下的 DATABASE_GROUP 分组。

避坑指南: 我曾经犯过一个错——客户端没指定命名空间,结果一直读不到配置。记住,客户端必须明确指定命名空间ID,否则默认使用 public

3.6 本章小结

咱们这一章,把 Nacos 跑起来了,也看了控制台长什么样。重点记住三个东西:

  • Data ID:配置的唯一标识
  • Group:配置的分组,用于逻辑分类
  • Namespace:命名空间,用于环境隔离

下一章,咱们会深入配置管理,看看客户端怎么动态获取配置。嗯,到时候我会分享一个线上事故,跟配置刷新有关,挺有意思的。

先到这,动手试试吧。