Nacos注册与发现原理

111 阅读2分钟

1、Nacos

1.1 介绍:

在微服务环境下,每个服务调用若基于手动编写的方式会有:多实例部署地址定向问题、代码重复编写问题等等。Nacos则是在此环境下出现的应对这种情况的技术。我们可以将服务注册到Nacos上,Nacos会解决如某一实例宕机之后仍被调用等此类问题。

以下是官方对Nacos的介绍:

欢迎来到 Nacos 的世界!

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1.2 下载与安装:

官方地址: nacos.io/zh-cn/docs/…

1.2.1 下载前环境准备:

Nacos的运行需要依赖于JDK和Maven的环境,此处以Nacos的2.x版本为例

2.x版本Nacos需要 JDK1.8+ 与 Maven3.2.x+

1.2.2 下载与安装:

可以选择拉去Git的源码或者下载发行包(参照官网)

以安装包为例:

  • 下载完成后直接bin目录下运行sh startup.sh -m standalone 命令即可
  • 建议封装为bat脚本可以省去每次输入命令的繁琐

运行成功后访问 http://localhost:8848/nacos (默认地址)登录账密均为nacos

1.2.3 与项目适配

  • 导入依赖 `

      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>`
    
  • 配置文件更新

spring: 
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos服务地址
  • 注意: Nacos旧版本需要额外的在启动类声明注解@EnableDiscoveryClient

2.1 注册与发现原理

既为远程调用,则一定存在服务的提供者与消费者

服务提供者:提供一个接口以便于其他微服务调用,例如图示中的item-service

服务消费者:调用其他微服务提供到注册中心的接口,比如cart-service

image.png

流程:

  1. 服务启动时将自己的服务信息上传到注册中心
  2. 调用者从注册中心订阅自己要访问的服务
  3. 调用者对实例列表负载均衡,选择自己本次要访问的实例
  4. 服务列表变更,注册中心会进行通知