# Eureka 的替代品:Alibaba Nacos
Nacos 是 Alibaba 开发的是用于微服务管理的平台,其核心功能是服务注册与发现、集中配置管理。
Nacos 作为服务注册发现组件,可以替换 Spring Cloud 应用中传统的服务注册于发现组件,如:Eureka、Consul 等,支持服务的健康检查。
Nacos 作为服务配置中心,可以替换 Spring Cloud Config、Apollo 等。
TIP
为什么叫 Nacos?Naming 与 Configuration 的前两个字母的组合,最后的 s 代表 service 。从其命名也能看出其核心功能。
# 1. Nacos 的下载和安装
首先去 nacos 的 github 地址下载 release 安装包。下载地址 (opens new window)
进入到 nacos/bin 目录下面,startup 命令用于启动 nacos ,shutdown 命令用于停掉 nacos 。
如果你是 windows 系统
执行 startup.cmd -m standalone 启动。
如果你是 linux/unix 系统
执行 startup.sh -m standalone 启动。
nacos 的默认服务端口是 8848 ,启动完成之后通过浏览器访问 nacos:http://127.0.0.1:8848/nacos (opens new window) 。
看到如下界面,需要登陆,默认的用户名密码都是 nacos ,登陆之后看到如下界面:
nacos 的单机 standalone 模式是开发环境中使用的启动方式,它对用户而言非常友好,几乎不需要的更多的操作就可以搭建 nacos 单节点。另外,standalone 模式安装默认是使用了 nacos 本身的嵌入式数据库 apache derby 。
# 2. 注册中心
因为 Nacos 属于 Spring Cloud Alibaba 成员,为了规范相关版本与 Spring Cloud、Spring Boot 版本之间的兼容性,我们在父项目 pom 文件中引入 spring-cloud-alibaba-dependencies 。
spring-cloud-alibaba 与 spring-cloud 和 spring-boot 之间的版本说明 (opens new window)
微服务整合 nacos 服务发现:
spring-cloud-starter-alibaba-nacos-discovery 是 spring-cloud-alibaba-dependencies 子项目。所以它们的版本号都不需要我们手动维护,继承自父项目 dependencyManagement 中的定义。
如果你之前使用的是 eureka 注册中心,那么你要用 nacos 的 spring-cloud-starter-alibaba-nacos-discovery 将spring-cloud-starter-netflix-eureka-client 在 pom 文件中替换掉。
spring-cloud-starter-alibaba-nacos-discovery 也默认包含了 spring-cloud-starter-netflix-ribbon ,不需要单独引入 ribbon 。我们之前学习的所有的 ribbion 和 openfeign 相关的负载均衡、远程服务调用的知识在 nacos 下依然适用。
<dependency> <!-- 自动引入 Ribbon -->
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在 application.yml(或 bootstrap.yml)中加入必要的服务注册中心信息配置(替换掉 eureka 相关配置):
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 日志设置
logging:
level:
root: INFO
pattern:
console: "${CONSOLE_LOG_PATTERN:\
%clr(${LOG_LEVEL_PATTERN:%5p}) \
%clr([%15.15t]){faint} \
%clr(%-40.40logger{39}){cyan} \
%clr(:){faint} \
%m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}}"
加上 @EnableDiscoveryClient 注解,开启 Spring Cloud 的服务注册与发现功能。spring cloud alibaba 遵守 spring cloud 规范,因此 @EnableDiscoveryClient 注解能激活、启用 nacos 的服务发现功能。
@Slf4j
@Configuration
@EnableDiscoveryClient // 看这里,看这里,看这里
public class NacosDiscoveryConfiguration {
}
我们访问 Nacos 服务,通过 服务管理
-> 服务列表
,看到我们注册的服务已经在列表中。
# 3. 微服务 group 分组
Nacos 的微服务分组概念,有两层含义:
不同分组的微服务,彼此之间不能发现对方,也就不能进行远程服务调用。逻辑上,不同的分组意味着这是两个不同的独立项目。即,你(微服务)从配置中拉取到的注册表只有可能是你所在组的注册表。
将微服务分组,方便我们查看,以及方便配置管理分类。
可以通过如下属性对微服务所属分组进行配置:
spring:
cloud:
nacos:
discovery:
group: xxx
由于多个项目可能、可以使用同一个 nacos 作为注册中心,这种情况下,group
就是区分你我的标识,每个微服务从 nacos 上拉取的只有本组的注册表。
← 版本对应关系 Nacos 配置中心 →