前言

Nacos 的寻址机制一共有三种,前两篇分别介绍了 单机寻址 以及 文件寻址,本篇来介绍最后一种地址服务器寻址。

参考文档

关于地址服务器寻址

在上一篇文件寻址操作中,如果遇到需要扩缩容的情况,就需要去修改每一个节点的配置文件 cluster.conf,并且还可能存在修改失败导致的节点数据不一致的问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为了解决上述问题,因而有了更为方便的地址服务器寻址方式。

在这里插入图片描述
在这里插入图片描述

框架集成

本文使用的【RuoYi-Cloud-Plus】框架版本是 V1.3.0
在这里插入图片描述

Nacos采用的是源码集成方式,版本为 V2.1.1
在这里插入图片描述

集群启动演示

关于集群启动的部分,和上一篇一样采用的是 IDEA 启动多个服务的方式,不再需要单独创建 cluster.conf 配置文件。

步骤一:使用 Nginx 作为地址服务器

首先需要说明的是,地址服务器形式多样,并不一定是 Nginx,也可以是 Web 服务器等。

修改 Nginx 配置文件:

server {
	listen 8989;
	server_name nacoslist;
	
	location /nacos/serverlist {
	    add_header Content_type text/plain;
	    return 200 '192.168.10.1:8848\r\n192.168.10.1:8858\r\n192.168.10.1:8868\r\n';
	}
}

监听的端口号是 8989,一共三个节点。Nacos 底层解析节点时是按行解析,因此需要用 \r\n

修改后查看返回结果是否正确:
在这里插入图片描述

注:此处使用的 Nginx 是 Linux 云服务器上的。一开始在 Win10 环境下使用会出现节点同步异常的问题,改用了 Linux 虚拟机,也出现了节点同步异常的情况,因此最后采用的是 Linux 云服务器。

如果没有云服务器的情况下,可以使用接口进行模拟。

@GetMapping("/nacos/serverlist")
public String serverlist() {
    return "192.168.10.1:8848\r\n192.168.10.1:8858\r\n192.168.10.1:8868\n";
}

步骤二:修改 Nacos 配置文件

ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties
在这里插入图片描述

请需要注意寻址类型的写法!

路径前缀直接使用 IP 访问,如果有域名也可以设置域名。

步骤三:修改 Nacos 启动类(同上篇)

修改 Nacos 启动类,将单机模式修改为 false
在这里插入图片描述

步骤四:设置 IDEA 启动项(同上篇)

在这里插入图片描述

设置允许多个服务启动:
在这里插入图片描述

在这里插入图片描述

设置完成会出现:
在这里插入图片描述

为了和文件寻址配置地址区分开,这里设置的home地址分别是 nacos4、nacos5、nacos6:

# Nacos-8848
-Dserver.port=8848 -Dnacos.home=F:/study/Nacos/test/nacos4

# Nacos-8858
-Dserver.port=8858 -Dnacos.home=F:/study/Nacos/test/nacos5

# Nacos-8868
-Dserver.port=8868 -Dnacos.home=F:/study/Nacos/test/nacos6

这里的 home 文件夹会在 Nacos 启动时自动创建。

步骤五:启动服务

在这里插入图片描述

新生成的文件:
在这里插入图片描述

生成的配置文件内容:
在这里插入图片描述

Nacos 控制台:
在这里插入图片描述

拓展步骤:缩容

去掉 8868 节点。

修改地址服务器配置(即修改 Nginx 配置文件)
在这里插入图片描述

查看Nacos控制台:
在这里插入图片描述

操作成功。

拓展步骤:扩容

在上一步缩容的基础上增加 8878 节点。

修改地址服务器配置(即修改 Nginx 配置文件)
在这里插入图片描述

启动节点并查看 Nacos 控制台:
在这里插入图片描述
操作成功。

源码分析

寻址模式初始化流程图(重要)

在上一篇流程图的基础上进行了细化和整理,重新画了一张流程图,可以根据流程图进行分析。

在这里插入图片描述

1、ServerMemberManager 节点管理器初始化

ServerMemberManager#init
在这里插入图片描述

在这里插入图片描述

2、初始化寻址模式 ServerMemberManager#initAndStartLookup

在这里插入图片描述

该方法主要有两个步骤:

  1. 创建 MemberLookup 寻址对象
  2. 开始寻址

2.1、创建寻址对象实例 LookupFactory#createLookUp

在这里插入图片描述
此处先进行判断,如果是单机模式,则直接创建对象。而非单机模式,会进入 if 方法体:

  1. 从配置环境获取寻址模式类型
  2. 根据类型选择寻址模式枚举 LookupFactory#chooseLookup
  3. 根据枚举获取寻址模式对象 LookupFactory#find

此处在配置文件中设置了 LOOKUP_MODE_TYPEaddress-server
在这里插入图片描述
根据 lookupType 获取枚举信息:

在这里插入图片描述

LookupType#sourceOf
在这里插入图片描述

LookupFactory#chooseLookup
在这里插入图片描述

根据返回的枚举信息获取寻址对象:
在这里插入图片描述

LookupFactory#find
在这里插入图片描述

注入 ServerMemberManager 属性,返回寻址对象到上一层。
在这里插入图片描述

2.2、开始寻址 AbstractMemberLookup#start

ServerMemberManager#initAndStartLookup
在这里插入图片描述

AbstractMemberLookup#start
在这里插入图片描述

3、地址服务器寻址 AddressServerMemberLookup#doStart

在这里插入图片描述

3.1、初始化地址服务 AddressServerMemberLookup#initAddressSys

在这里插入图片描述

3.2、运行 AddressServerMemberLookup#run

在这里插入图片描述
在这里插入图片描述

同步节点 url:(定时任务也是调用此方法)
AddressServerMemberLookup#syncFromAddressUrl
在这里插入图片描述
至此,地址服务器寻址初始化完成。

GitHub 加速计划 / na / nacos
29.84 K
12.75 K
下载
Nacos是由阿里巴巴开源的服务治理中间件,集成了动态服务发现、配置管理和服务元数据管理功能,广泛应用于微服务架构中,简化服务治理过程。
最近提交(Master分支:3 个月前 )
4334cd16 * Support custom client configuration timeout.(#12748) * Add UT.(#12748) 24 天前
b04d2266 28 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐