Nacos及其使用

什么是 Nacos

Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 的关键特性

Nacos 的关键特性包括:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

Nacos的高性能特点

Nacos之所以能够具有高性能,主要归结于以下几点:

  1. 基于阿里自研的distro协议,Nacos可以同步不同节点的数据。
  2. 大量使用线程池和异步的方式,提高API的响应速度。
  3. 在2.X版本中,使用gRPC长连接的方式取代了1.X需要一直发送心跳包,解决了服务器CPU占用较高的问题。

Nacos 优势

Nacos 的优势包括:

  • 易用:简单的数据模型,标准的 restfulAPI,易用的控制台,丰富的使用文档。
  • 稳定:99.9% 高可用,脱胎于历经阿里巴巴 10 年生产验证的内部产品,支持具有数百万服务的大规模场景,具备企业级 SLA 的开源产品。
  • 实时:数据变更毫秒级推送生效;1w 级,SLA 承诺 1w 实例上下线 1s,99.9%推送完成;10w 级,SLA 承诺 1w 实例上下线 3s,99.9% 推送完成;100w 级别,SLA 承诺 1w 实例上下线 9s 99.9% 推送完成。
  • 规模:十万级服务/配置,百万级连接,具备强大扩展性。

Nacos 注册中心架构和基本概念

服务 (Service)

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。

服务注册中心 (Service Registry)

服务注册中心,它是服务及其实例和元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。

服务提供方 (Service Provider)

服务提供方是指提供可复用和可调用服务的应用方。

服务消费方 (Service Consumer)

服务消费方是指会发起对某个服务调用的应用方。

Nacos注册中心核心功能

服务注册

Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。

服务心跳

在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。

服务同步

Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。

服务发现

服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。

服务健康检查

Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)。

参考资料

: Nacos 官方文档
Nacos OpenAPI文档

Nacos注册中心(Nacos Server)环境搭建

单机模式

官方文档: https://nacos.io/zh-cn/docs/deployment.html

微服务(Nacos Client)整合Nacos注册中心(Nacos Server)

配置服务提供者base-user

服务提供者可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。

1. 引入依赖

在当前项目的pom.xml文件中引入以下依赖:

 <!-- nacos 服务注册中心 -->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
   </dependency>
   <!-- nacos 配置发现中心 -->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   </dependency>

注意:只引入spring-cloud-starter-alibaba-nacos-discovery包会出现下面的错误,还需要再引入nacos-common包。此bug已经修复了,不需要再引入nacos-common了,只需要引入spring-cloud-starter-alibaba-nacos-discovery。

2. 配置nacos注册中心

在application.yml或者application.properties文件中添加以下配置:

server:
  port: 8020

spring:
  application:
    name: base-user #微服务名称

  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848

3. 启动base-user

启动base-user服务,然后在nacos管理端界面查看是否成功注册。

测试:通过Open API查询实例列表
http://localhost:8848/nacos/v1/ns/instance/list?serviceName=base-user

配置服务消费者base-user

服务消费者可以通过 Nacos 的服务注册发现功能从 Nacos server 上获取到它要调用的服务。

1. 引入依赖

在当前项目的pom.xml文件中引入以下依赖:

 <!-- nacos 服务注册中心 -->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
   </dependency>
   <!-- nacos 配置发现中心 -->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   </dependency>

2. 配置nacos注册中心

在application.yml或者application.properties文件中添加以下配置:

server:
  port: 8040

spring:
  application:
    name: base‐user #微服务名称

  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848

3. 启动base-user

启动base-user服务,然后在nacos管理端界面查看是否成功注册。

4. 使用RestTemplate进行服务调用

给 RestTemplate 实例添加 @LoadBalanced 注解,开启 @LoadBalanced 与 Ribbon 的集成。

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

调用逻辑:

//使用微服务名发起调用
String url = "http://base‐user/user/getBasInfoByUserId/"+id;
UserInfo userInfo = restTemplate.getForObject(url, UserInfo.class);

测试:http://localhost:8040/user/getBasInfoByUserId/1,返回数据。

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nacos是一个开源的注册中心和配置管理平台,可以帮助开发者更方便地管理微服务架构中的服务注册、发现和配置管理等功能。下面介绍一下Nacos的注册中心及其配置管理的相关内容: 1. 注册中心 Nacos的注册中心功能可以帮助开发者更方便地实现服务的注册和发现,从而实现服务间的通信。注册中心的主要功能包括服务注册、服务发现和服务心跳检测。 服务注册:在Nacos注册中心上注册服务,可以将服务的名称、IP地址和端口号等信息注册到注册中心上,其他服务可以通过查询注册中心获取该服务的信息。 服务发现:服务发现是指服务在运行时通过查询Nacos注册中心获取其他服务的地址和端口号等信息,从而实现服务之间的通信。 服务心跳检测:Nacos注册中心可以定期检测服务是否在线,如果发现服务不可用,则会将该服务从注册中心中删除。 2. 配置管理 除了注册中心功能外,Nacos还可以用作配置管理平台,可以帮助开发者更方便地管理配置文件。配置管理的主要功能包括配置发布、配置查询和配置监听。 配置发布:在Nacos配置管理平台上发布配置文件,可以将配置文件的内容保存到Nacos服务器上,其他服务可以通过查询Nacos获取该配置文件的内容。 配置查询:服务可以通过查询Nacos获取配置文件的内容,并且可以动态更新配置文件的内容,从而实现配置文件的动态管理。 配置监听:Nacos可以监听配置文件的变化,并且可以及时通知服务进行相应的处理,从而实现配置文件的实时管理。 总之,Nacos的注册中心和配置管理功能可以帮助开发者更方便地实现微服务架构中的服务注册、发现和配置管理等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值