分布式之Quorum NWR算法
写在前面
假设现在我们实现了AP 系统,但是公司突然要对某些业务进行实时的数据计算,并且要求按照强一致性的方式来读取数据,此时作为系统设计这的我们该怎么办呢?单独为这部分业务实时抽出最新数据?还是修改原有系统?看起来都不是很靠谱,为了一个单独临时的业务而做出这么大的动作,显然是不适合的。此时我们就可以考虑在系统中引入Quorum NWR算法,从而实现数据的强一致性(注意这里实现的强一致性是建立在系统正常的前提下,如果是系统异常将还只是保证AP)
。下面我们就来一起看下吧!
1:Quorum NWR
在Quorum NWR算法中包含N
,W
,R
三个元素,当W + R > N
时就能实现我们文章开始提到的强一致性了,分别来看下。
1.1:N
N,表示的副本数,即一个分片的复制因子,如下图data-1的N就是2,data-2的N就是3,data-3的N就是1:
注意N不要超过节点数,因为将会导致某节点上存在超过>1个的副本,当该节点故障时,分片的多个副本将会同时不可用。
1.2:W
W,代表一次更新操作,数据需要写入到多少个副本才算成功,比如设置data-2分片W设置为2,则必须更新2个副本才算成功,如下图:
1.3:R
R,代表一次读取多少个副本,并从中选择一个最新的数据,之后返回给客户端,如下data-2设置R=2,则会从data-2的3个副本中的2个副本读取数据,然后获取最新的一个版本返回给客户端,如下图:
到这里我们再看下为什么W + R > N
就能实现强一致性,因为当满足该条件时,进行数据读取的R个副本中必定有一个是拥有最新数据,所以就实现了数据强一致性。
写在后面
小结
本文分析了一个AP系统如何实现数据一致性(再次强调这里指的是系统正常情况下的数据强一致性,所以CAP不能三角依然是成立的)
参考文章列表
分布式之CAP理论分析 。
分布式之Quorum NWR算法相关推荐
- 太白金星:我很关心分布式 Quorum NWR
来源 | 悟空聊架构 责编 | 寇雪芹 头图 | 下载于视觉中国 先来看一段神秘的对话: 太白金星:听闻老君最近在练神丹妙药,可否与我一讲? 太上老君:老白啊,我最近在练六颗丹药:两颗延年丹.两颗健步 ...
- 分布式技术与实战第一课 分布式理论与一致性算法
开篇词:搭建分布式知识体系,挑战高薪 Offer 你好,我是邴越,在一线互联网公司从事分布式开发工作多年,一直关注分布式理论和新技术的发展. 互联网发展到今天,用户数量越来越多,产生的数据规模也越来越 ...
- 基于Redis的分布式锁和Redlock算法
来自:后端技术指南针 1 前言 今天开始来和大家一起学习一下Redis实际应用篇,会写几个Redis的常见应用. 在我看来Redis最为典型的应用就是作为分布式缓存系统,其他的一些应用本质上并不是杀手 ...
- 分布式一致性与共识算法
区块链技术是近几年逐渐变得非常热门的技术,以比特币为首的密码货币其实已经被无数人所知晓,但是却很少有人会去研究它们的底层技术,也就是作为一个分布式网络比特币等加密货币是如何工作的. 无论是 Bitco ...
- Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版
在分布式系统中,需要生成全局UID的场合还是比较多的,twitter的snowflake解决了这种需求,实现也还是很简单的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12 ...
- UUID实现之一twitter的分布式自增IDsnowflake算法
Twitter的分布式自增ID算法snowflake (Java版) 概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首 ...
- Twitter的分布式自增ID算法snowflake
全局ID 要做到幂等性的交易接口,需要有一个唯一的标识,来标志交易是同一笔交易.而这个交易ID由谁来分配是一件比较头疼的事.因为这个标识要能做到全局唯一. 如果由一个中心系统来分配,那么每一次交易都需 ...
- 分布式理论(六)—— Raft 算法
分布式理论(六)-- Raft 算法 前言 我们之前讲述了 Paxos 一致性算法,虽然楼主尝试用最简单的算法来阐述,但仍然还是有点绕.楼主最初怀疑自己太笨,后来才直到,该算法的晦涩难懂不是只有我一个 ...
- 分布式理论(五)—— 一致性算法 Paxos
分布式理论(五)-- 一致性算法 Paxos 前言 Paxos 算法如同我们标题大图:世界上只有一种一致性算法,就是 Paxos.出自一位 google 大神之口. 同时,Paxos 也是出名的晦涩难 ...
最新文章
- python电子时钟包装盒_python 电子时钟
- Web开发者需养成的好习惯
- 陈一舟:雷军马云在通讯领域也做不过马化腾 为何我就该挨骂
- 2020华为推迟发布鸿蒙战略,早新闻:华为5nm麒麟芯片延期,确认新版鸿蒙将发...
- Powershell AWS 自动化管理 (6) - IAM
- boost::has_range_iterator相关的测试程序
- vue-cli+webpack项目,修改项目名称
- Mybatis 框架源码解读(详细流程图+时序图)
- 配置环境变量OpenJDK和OracleJDK区别
- asp.net 从客户端中检测到有潜在危险的Request.Form值
- 内容超过7行显示查看全文
- 内核和用户空间异步通信
- SUFFER软件测试工程师,Ubuntu9.0.4下FreeSurfer的安装(转)
- 谈谈优化JDBC数据库编程(转)
- Thinkphp 模板/包含文件
- js正则表达式之match函数
- 在线考试系统软件测试总结,在线考试系统软件测试用例报告.doc
- 数学符号的英文表达(持续更新中)
- Redis - 哨兵机制与主从切换
- 死的时候究竟是怎么一个过程
热门文章
- 稀疏编码器(Sparse Encoder)
- 1rem、1em、1vh(vw)、1px各自代表的含义
- 2021年中国BI商业智能应用实践白皮书
- 四个步骤教你写好一款产品的运营数据分析报告(转)
- Android自定义睡眠下表统计图,Android 进阶自定义View(5)图表统计PieChartView圆饼图的实现...
- DC Motors – Voltage Vs. Output Speed Vs. Torque
- 12306查询车票(爬虫小练_1)
- SISO/MIMO信道估计(channel estimation)原理详细图解
- (4)AES分组加密算法(原理详解)
- MySQL——使用mysqldump命令备份