进入Nacos目录下nacos/bin/startup.sh 进行启动
命令:sh startup.sh 默认是集群模式下的启动
如果是单机版使用命令:sh startup.sh -m standalone
否则会有会有异常:
Nacos 2.X 版本迎来了首秀,在 1.X 的架构基础上 新增了对长连接模型的支持。通信层目前通过 grpc 实现了长连接 RPC 调用和推送能力,使用长链接的好处大幅度减少了 1.x 轮询心跳频繁导致 JVM Full GC。
nacos 1
1.X架构存在的问题:心跳多,无效查询多,心跳续约感知变化慢,连接消耗大,资源空耗严重。
心跳数量多,导致 TPS 居高不下
通过心跳续约,当服务规模上升时,特别是类似 Dubbo 的接口级服务较多时,心跳及配置元数据的轮询数量众多,导致集群 TPS 很高,系统
1. 升级生产环境时是从 rc 环境上把运行中的 Nacos server 直接复制到生产环境用于升级,而复制过去的目录包含了 rc 环境的缓存数据,会影响 Nacos server 的正常工作。
2. 生产环境各个业务服务使用的 Nacos 客户端版本没有统一管控,有的版本比服务端高。而高版本的客户端在 server 端升级上去后,被开启了一些高版本的功能。回滚回低版本的 server 端时,这些高版本的功能低版本的 server 端无法兼容,导致回滚后无法自动注册,需要重启业务服务才能注册。
Nacos 2.x 的源码是开源的,可以从 Nacos 的官方 GitHub 仓库中获取:https://github.com/alibaba/nacos。
Nacos 2.x 的代码结构比较清晰,主要分为以下几个模块:
1. `nacos-api`: Nacos 的 Java API 接口定义;
2. `nacos-common`: Nacos 的通用工具类和配置项定义;
3. `nacos-config`: Nacos 的配置管理模块,包括配置的读写、监听和推送等功能;
4. `nacos-core`: Nacos 的核心模块,包括服务注册和发现、健康检查、集群管理等功能;
5. `nacos-discovery`: Nacos 的服务发现模块,包括服务注册和发现的 API、服务实例的管理和心跳检测等功能;
6. `nacos-naming`: Nacos 的命名服务模块,包括服务的命名、分组和标签等功能;
7. `nacos-server`: Nacos 的服务端实现,包括 Nacos 的启动和配置、日志输出、插件管理等功能;
8. `nacos-standalone`: Nacos 的单机模式启动脚本和配置文件;
9. `nacos-upgrade`: Nacos 的升级脚本和工具。
如果您想深入了解 Nacos 2.x 的实现原理,可以从 `nacos-server` 模块的入口类 `com.alibaba.nacos.Nacos` 开始阅读源码,并结合其他模块的实现逐步深入理解。
在阅读源码的过程中,需要注意 Nacos 的模块之间的相互依赖关系和调用关系,以及各个模块的核心功能实现方式和细节问题。同时,还需要结合 Nacos 的文档和官方社区的讨论,以便更好地理解和使用 Nacos。