首页 > 其他分享 >Quorum NWR

Quorum NWR

时间:2023-01-18 13:00:48浏览次数:37  
标签:副本 Quorum NWR 数据 一致性 从库 DATA 节点

1.强一致性与最终一致性

1.1强一致性

强一致性能保证写操作完成后,任何后续访问都能读到更新后的值;强一致性可以保证从库有与主库一致的数据。如果主库突然宕机,我们仍可以保证数据完整。但如果从库宕机或网络阻塞,主库就无法完成写入操作。

1.2最终一致性

最终一致性只能保证如果对某个对象没有新的写操作了,最终所有后续访问都能读到相同的最近更新的值。开篇提到,容忍节点故障只是需要复制的一个原因。另两个原因是可扩展性和降低延迟。
单领导者的主从复制算法要求所有写入都由单个节点处理,但只读查询可以由任何节点处理。对于读多写少的场景,我们往往创建很多从库,并将读请求分散到所有的从库上去。这样能减小主库的负载,并允许向最近的节点发送读请求。当然这只适用于异步复制——如果尝试同步复制,则单个节点故障将使整个系统无法写入。
当用户从异步从库读取时,如果此异步从库落后,他可能会看到过时的信息。这种不一致只是一个暂时的状态——如果等待一段时间,从库最终会赶上并与主库保持一致。这称为最终一致性。
最终两个字用得很微妙,因为从写入主库到反映至从库之间的延迟,可能仅仅是几分之一秒,也可能是几个小时。

2.Quorum NWR 的三要素

2.1副本数

N 表示副本数,又叫做复制因子(Replication Factor)。也就是说,N 表示集群中同一份数据有多少个副本,就像下图的样子:
image.png
从图中你可以看到,在这个三节点的集群中,DATA-1 有 2 个副本,DATA-2 有 3 个副本,DATA-3 有 1 个副本。也就是说,副本数可以不等于节点数,不同的数据可以有不同的副本数。
在实现 Quorum NWR 的时候,你需要实现自定义副本的功能。也就是说,用户可以自定义指定数据的副本数,比如,用户可以指定 DATA-1 具有 2 个副本,DATA-2 具有 3 个副本,就像图中的样子。

2.2写一致性级别

W,又称写一致性级别(Write Consistency Level),表示成功完成 W 个副本更新,才完成写操作:
image.png
从图中你可以看到,DATA-2 的写副本数为 2,也就说,对 DATA-2 执行写操作时,完成了 2 个副本的更新(比如节点 A、C),才完成写操作。
那么有的人会问了,DATA-2 有 3 个数据副本,完成了 2 副本的更新,就完成了写操作,那么如何实现强一致性呢?如果读到了第三个数据副本(比如节点 B),不就可能无法读到更新后的值了吗?先继续看下面的内容。

3.读一致性级别

R,又称读一致性级别(Read Consistency Level),表示读取一个数据对象时需要读 R个副本。你可以这么理解,读取指定数据时,要读 R 副本,然后返回 R 个副本中最新的那份数据:
image.png
从图中你可以看到,DATA-2 的读副本数为 2。也就是说,客户端读取 DATA-2 的数据时,需要读取 2 个副本中的数据,然后返回最新的那份数据。
这里需要你注意的是,无论客户端如何执行读操作,哪怕它访问的是写操作未强制更新副本数据的节点(比如节点 B),但因为 W(2) + R(2) > N(3),也就是说,访问节点 B,执行读操作时,因为要读 2 份数据副本,所以除了节点 B 上的 DATA-2,还会读取节点 A 或节点 C 上的 DATA-2,就像上图的样子(比如节点 C 上的 DATA-2),而节点 A 和节点 C的 DATA-2 数据副本是强制更新成功的。这个时候,返回给客户端肯定是最新的那份数据。
你看,通过设置 R 为 2,即使读到前面问题中的第三份副本数据(比如节点 B),也能返回更新后的那份数据,实现强一致性了。

4.NWR组合

除此之外,关于 NWR 需要你注意的是,N、W、R 值的不同组合,会产生不同的一致性效果,具体来说,有这么两种效果:
当 W + R > N 的时候,对于客户端来讲,整个系统能保证强一致性,一定能返回更新后的那份数据。
当 W + R < N 的时候,对于客户端来讲,整个系统只能保证最终一致性,可能会返回旧数据。

标签:副本,Quorum,NWR,数据,一致性,从库,DATA,节点
From: https://www.cnblogs.com/akai-yuan/p/17059578.html

相关文章

  • openwrt单口旁路由模式开启ipv6
    光猫改桥接硬路由拨号并开启ipv6这些不用说了百度一大堆确保你硬路由拨号那边配置好ipv6并在电脑上测试得到了ipv6地址可以通过test-ipv6.com监测我这边是esir编译......
  • P7060 [NWRRC2014]Alarm Clock
    Alicelikesherdigitalalarmclock.Shesetsthemupeveryevening.LastnightAlicehadadreamaboutherclock.Unfortunately,theonlythingsheisablet......
  • 解决Openwrt默认安装阿里云盘 WebDAV版本过低问题(openwrt安装软件通用方法)
    旧版1.1已经无法使用首先,在界面删除你想删除的软件ssh确认下你自己机器架构opkgprint-architecturex86yyds啦来到官方githubhttps://github.com/messense/aliyun......
  • OpenWRT 修改固件默认显示中文
    固件默认中文基本上网上的多数都是安装之后的处理,少数是编译固件的,但是试过都没起作用,改lua的源码都不行(没仔细研究,试着改了下luci/modules/luci-base/luasrc/i18n.lua下l......
  • 【2023.01.08】NUC9I9安装PVE7.3和OpenWrt,WinServer
    前面的教程可以看:【2022.11.17】N5105安装PVE系统,关联proxmox-Mokou-博客园(cnblogs.com)本文主要做一个备注,方便以后查阅同时改路由器将作为一个旁路由使用,不作为......
  • 如何在PVE(Proxmox)中安装OpenWrt软路由?
    出处:https://www.928wang.cn/archives/1763.htmlhttps://blog.itwk.cc/post/pve_install_openwrt.html工具准备WinSCP或者XFTPOpenWrt镜像(自行寻找)安装好PVE的主......
  • openwrt安装及分区记录
    配置地址为/etc/conf/network重启网络/etc/init.d/networkrestart分区fdisk/dev/sdan创建分区p默认3理论上这时候只有两个看情况加一回车到结束w退出......
  • openwrt 刷机记录
    在进入pbboot页面刷breed(按住reset按钮,插入电源等待8秒后松开reset按钮,电脑网线连接路由器LAN口)拔掉电源后,用签子或取卡针插入reset按钮长按不要松开,然后接上电源等待8......
  • 详解OpenWrt路由器设置Crontab定时检查网络并重启
    目录​​背景​​​​实现​​背景现在一直以来各大高校宿舍实行一号一机政策,每个人必须单独开网,且只限制两台设备入网,说起来是为了更好的管理网络,能追踪到个人。这就很离谱......
  • openwrt的docker镜像助自由上网
    你是否听说过openwrt实现自由上网后又方便又灵活?但是为此通常需要准备专门的软路由需要改造家里的网络,非常麻烦。今天给大家提供一种只需要一台服务器就可以实现的方法。该......