迎着风跑  

 

 

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-01

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>
Copied!

在 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}}"
Copied!

加上 @EnableDiscoveryClient 注解,开启 Spring Cloud 的服务注册与发现功能。spring cloud alibaba 遵守 spring cloud 规范,因此 @EnableDiscoveryClient 注解能激活、启用 nacos 的服务发现功能。

@Slf4j
@Configuration
@EnableDiscoveryClient  // 看这里,看这里,看这里
public class NacosDiscoveryConfiguration {

}
Copied!

我们访问 Nacos 服务,通过 服务管理 -> 服务列表,看到我们注册的服务已经在列表中。

nacos-02

#3. 微服务 group 分组

Nacos 的微服务分组概念,有两层含义:

  • 不同分组的微服务,彼此之间不能发现对方,也就不能进行远程服务调用。逻辑上,不同的分组意味着这是两个不同的独立项目。即,你(微服务)从配置中拉取到的注册表只有可能是你所在组的注册表。

  • 将微服务分组,方便我们查看,以及方便配置管理分类。

可以通过如下属性对微服务所属分组进行配置:

spring:
  cloud:
    nacos:
      discovery: 
        group: xxx
Copied!

由于多个项目可能、可以使用同一个 nacos 作为注册中心,这种情况下,group 就是区分你我的标识,每个微服务从 nacos 上拉取的只有本组的注册表。

posted on 2021-11-29 16:03  迎着风跑  阅读(66)  评论(0编辑  收藏  举报