多节点Nacos如何获得主节点、从节点

背景

Nacos是一个开源的服务注册与发现、配置管理的平台,它用于帮助应用程序实现动态服务发现和配置。

一、CAP原则:

CAP理论是针对分布式数据库而言的,它是指在一个分布式系统中,
一致性(Consistency,C)
可用性(Availability,A)
分区容错性(Partition Tolerance, P)
三者不可兼得。

Nacos支持"AP"(可用性 | 分区容错性) 和"CP"(一致性 | 分区容错性)两种 默认是AP

  • AP(可用性/分区容忍性)模式下,即使发生了网络分区(网络中的某些节点无法与其他节点通信),系统仍然可以可用。这是通过将系统分成多个区域(Partition)来实现的,每个区域都独立运行,不依赖其他区域的状态。在AP模式下,系统可以容忍节点之间的数据不一致,因此会出现 eventual consistency(最终一致性)的问题。

如果注册Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;

  • CP(一致性/分区容忍性)模式下,当网络分区发生时,系统保证一致性,并停止对外提供服务。在CP模式下,系统会追求强一致性,即数据在所有节点上保持一致。这意味着,在发生网络分区时,系统会停止对外提供服务,直到网络恢复并保证了一致性。

如果注册Nacos的client节点注册时ephemeral=false,那么Nacos集群对这个节点的效果就是CP的,采用raft协议实现。

根据client注册时的属性,AP,CP同时混合存在,只是对不同的client节点效果不同。Nacos可以很好的解决不同场景的业务需求。

false为永久实例,true表示临时实例开启,注册为临时实例,默认是true
spring.cloud.nacos.discovery.ephemeral=true

  • AP模式采用distro 协议,每个 distro 节点都可以接收到读写请求,所以在Nacos中,节点在AP模式下没有明确的主从之分。每个节点都具有相同的功能和权重,并且可以独立处理请求。当然,具体的部署方式和负载均衡策略可能会根据实际情况进行调整,但整体上节点在AP模式下是对等的。

  • 在CP模式下采用raft协议,nacos节点之间有主maste从follow关系。
    因为raft 有master follower两种角色。master负责读写,follower只负责读,收到写请求会转发给master完成写。一次写操作,要经过半数follower写入成功ack应答,才能算完成一次成功的写操作。master、follower最终都拥有全量数据,达到数据一致性。

二、主从节点的异同

Nacos是一个用于动态配置管理和服务发现的开源系统。在Nacos中,有主节点和从节点两种类型的节点,它们在功能和角色上有一些异同。
(以下关于主、从节点的描述均是指Nacos在CP模式下:)
异同之处如下:

  1. 主节点(Leader):

    • 负责整个Nacos集群的管理和调度。
    • 处理配置信息的写入和更新操作。
    • 管理和分配从节点的任务并协调它们之间的工作。
    • 如果主节点不可用,从节点中的一个会被选举为新的主节点。
  2. 从节点(Follower):

    • 接收主节点分配的任务并执行它们。
    • 从主节点同步配置信息。
    • 当主节点不可用时,从节点之间会通过选举机制选择新的主节点。
    • 不能处理写入和更新操作,这些操作只能由主节点执行。

总的来说,主节点负责整个Nacos集群的管理和调度,处理写入和更新操作,而从节点则负责执行主节点分配的任务和同步配置信息。当主节点出现故障或不可用时,从节点会通过选举产生新的主节点,以保证系统的正常运行。

三、在Web端配置方面的区别

在Nacos的Web端配置主节点和从节点主要涉及以下方面的不同:

  1. 配置主节点:

    • 在Nacos的Web端,配置主节点需要设置节点类型为主节点(Leader)。
    • 主节点负责整个Nacos集群的管理和调度,处理写入和更新操作。
    • 主节点需要管理和分配从节点的任务,并协调它们之间的工作。
  2. 配置从节点:

    • 在Nacos的Web端,配置从节点需要设置节点类型为从节点(Follower)。
    • 从节点接收主节点分配的任务并执行它们,同时与主节点同步配置信息。
    • 从节点不能处理写入和更新操作,这些操作只能由主节点执行。

需要注意的是,在Nacos的Web端配置节点类型为主节点或从节点时,需要确保节点已经正确地部署和启动,以便进行节点注册与发现。此外,配置主节点和配置从节点都是基于Nacos的集群环境,用于提高系统的可用性和可扩展性。

四、选举原理:

我们以三节点部署的Nacos集群为例,简单描述下Nacos集群的选举原理

在三节点的Nacos集群中,有一个节点会被选举为主节点,而其他两个节点则成为从节点。Nacos使用Raft一致性算法来实现主节点的选举和数据的复制。

Raft算法中的角色分为三种:候选人(Candidate)领导者(Leader)追随者(Follower)

  • 1.初始情况下,所有的节点都是追随者。当集群启动或者当前的领导者节点宕机时,选举过程开始。以下是选举过程的简要描述:

  • 2.候选人状态:节点向其他节点发送投票请求,并将自己的状态更改为候选人状态,更新自己的任期(term)

  • 3.投票阶段:其他节点接收到投票请求后,检查自己的当前任期,如果比候选人的任期小,则投票给候选人,并将自己的状态更改为追随者状态。

  • 4.必要条件:在获得超过一半的选票之后,候选人将成为新的领导者。

  • 5.一旦选举完成,新的领导者将负责处理来自客户端的请求,并将更新的数据复制到其他节点上。追随者节点将按照领导者节点的指示来复制数据并保持一致。

除了选举过程之外,Nacos还提供了API和Web界面来查看当前的集群状态。在Web界面中,您可以查看每个节点的角色和状态,并明确哪个节点是主节点,哪些是从节点。

  • 需要注意的是,选举过程需要一定的时间,所以在初始选举期间可能会有一小段时间的不可用性。但一旦选举完成,Nacos集群将恢复正常运行,并确保数据的一致性和高可用性。

五、如何选举新的主节点:

当Nacos集群的三个节点之中有一个节点挂掉后,剩下的两个节点会继续参与选举新的主节点。以下是选举过程的简要描述:

  • 挂掉节点检测:剩下的两个节点会定时发送心跳包给其他节点,以检测其他节点的存活状态。如果其中一个节点长时间没有收到心跳包,则它会认为该节点挂掉。

  • 新的选举过程开始:当一个节点检测到其他节点挂掉后,它会立即进入候选人状态,并开始新的选举过程。它会向其他节点发送投票请求,并更新自己的任期。

  • 投票阶段:其他节点接收到投票请求后,检查自己的当前任期,如果比候选人的任期小,则投票给候选人,并将自己的状态更改为追随者状态。

  • 必要条件:在获得超过一半的选票之后,候选人将成为新的领导者。

需要注意以下几点:
  • 1.网络稳定性:确保集群中剩余的两个节点之间的网络稳定性,以便它们能够正常通信。否则,选举过程可能会受到干扰。

  • 2.节点配置:在Nacos配置文件中,需要正确配置节点的集群信息,包括节点的IP地址和端口号。确保配置正确无误,以便节点能够正确地发现和通信。

  • 3.选举超时时间:Nacos提供了选举超时时间的配置选项。如果选举超时时间较长,会增加选举过程的时间和整体的不可用性。您可以根据实际需求来配置合适的选举超时时间。

  • 4.节点恢复:当挂掉的节点重新启动后,它将以追随者的身份加入集群,参与选举新的主节点。节点重新加入集群后,数据将会进行同步,保持集群的一致性。

通过以上步骤和注意事项,Nacos集群中的两个节点能够进行选举,选择出新的主节点,并保持集群的正常运行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容