首页 > 其他分享 >euaka zookeeper nacos 的原理区别

euaka zookeeper nacos 的原理区别

时间:2022-08-25 18:00:11浏览次数:80  
标签:term zookeeper nacos leader follower euaka raft 节点

1.SpringCloud Alibaba 微服务架构(十四)- Nacos集群部署原理解析

https://thinkingcao.blog.csdn.net/article/details/109776410

2. raft算法以及nacos中的实现

   学习资料:https://blog.csdn.net/microGP/article/details/114261089

nacos是基于raft算法是实现的,raft算法是分布式系统一致性算法, Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,Raft增强了可理解性,在性能、可靠性、可用性方面是不输于Paxos的。建议大家拜读下作者的论文Raft论文

一.选取主节点

raft协议中,一个节点任一时刻处于以下三个状态之一:

leader:主节点

follower:从节点

candidate:候选节点

        可以看出所有节点启动时都是follower状态;在一段时间内如果没有收到来自leader的心跳,从follower切换到candidate,发起选举;如果收到N/2+1的赞成票(含自己的一票)则切换到leader状态;如果发现其他节点已经是leader,则主动切换到follower。

 

term:

关于term,网上没有什么特别好的解释,这里暂且认为是一个逻辑计数,用来证明谁是最新的,越大就说明节点数据越新,越应该成为leader。

以nacos选举为例,具体讲下选举过程:

1.三个节点刚启动的时候,此时都是follower,nacos先从缓存中加载数据,默认term是0

masterTask 是follower长时间没收到心跳就选举的定时任务,设置的是500ms一次

heartbeatTask 是心跳定时任务 500ms秒一次

 

MasterElection实现了Runnable方法,满足条件下,进行sendVote

 

sendVote

超过半数,设置成leader

   

2.与其他节点比较的代码

判断本地的term值和远程的term值,谁大则选谁

 

3.如果第一次没有N/2+1个以上的ip选举成功,0.5s后发起另外一次请求,前面说过,每个节点发起投票的时候是不一样的,所以term增加的值是不一样的,所以总是会出现某个term较大,选举成功。一直不成功的概念极小。

 

二.数据同步 日志同步

当系统有了leader后,系统就进入对外工作期了。客户端的一切请求来发送到leader,leader来调度这些并发请求的顺序,并且保证leader与followers状态的一致性。在 raft 集群中,所有日志都必须首先提交至 leader 节点。leader 在每个 heartbeat 向 follower 同步日志。

 

在nacos中的实现:

raft算法首先要把信息同步给leader,由leader分发给所有follower

 

具体流程可见 https://www.processon.com/view/5e25b762e4b04579e409e81f

    https://blog.csdn.net/liyanan21/article/details/89320872

三.safety:安全实现的保障机制

上面讲的都是正常情况下,对于异常情况,也需要有对应的处理策略。

好像并没有,通过客户端的心跳检测机制,自动恢复数据

标签:term,zookeeper,nacos,leader,follower,euaka,raft,节点
From: https://www.cnblogs.com/kelelipeng/p/16625183.html

相关文章

  • windows 安装Nacos步骤
    一、Nacos中文文档网址    1、Nacos官网地址:https://nacos.io/en-us/Nacos中文文档网址:Nacos快速开始https://nacos.io/zh-cn/docs/quick-start.html  ......
  • Dubbo/Zookeeper笔记
    分布式基础:Doubbo/Zookeeper分布式理论一、什么是分布式系统?分布式系统是若干个独立计算机的集合,这些计算机对于用户来说就像单个相关系统分布式系统是一组通过......
  • 二、Spring Cloud Alibaba,Nacos
    1、下载nacos官网:https://nacos.io/zh-cn/index.html下载地址:https://github.com/alibaba/nacos/releases选择对应版本:2.1.0https://github.com/alibaba/nacos/releas......
  • Nacos服务注册为指定IP和端口
    如果选择固定Ip注册可以配置spring.cloud.nacos.discovery.ip=192.168.0.118spring.cloud.nacos.discovery.port=9000如果选择固定网卡配置项spring.cloud.nacos.d......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    简介: 注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理客户,MSE......
  • hadoop -day4 安装zookeeper和HA高可用
    安装zookeeper1、上传安装包到master并解压(在/usr/local/soft/目录下) tar-zxvfzookeeper-3.4.6.tar.gz2、配置环境变量 vim/etc/profile ZOOKEEPER_HOME=/usr/local/......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    作者:子葵背景注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理......
  • nacos安装
    背景:搞完Apollo配置中心。来探寻一下nacos的乐趣。先本地整起。。。。没发现,这东西这么费劲呢,最新版本Nacos2.1.0。全网没资源,有资源的是官网,下载不下来。费了......
  • Sentinel Dashboard-Nacos动态数据源配置
    SentinelDashboard源码中支持push到SentinelClient(SpringBoot)或动态数据源(Nacos,Zookeeper,Apollo),但目前默认是push到SentinelClient,推到动态数据源需要稍微改造一下......
  • nacos指定jdk版本启动
    问题描述:nacos运行的官方jdk环境为jdk1.8+,而我们有两台服务器的jdk是1.7,因为发布着其他应用,不好升级jdk,故需要在启动nacos时指定jdk为1.8解决方案:修改nacos启动脚本,指定......