分布式系统之Quorum机制
在了解Quorum机制之前,先回顾一下数据一致性
强一致性:在任意时刻,从任意不同副本取出的值都是一样的。
弱一致性:有时泛指最终一致性,是指在任意时刻,可能由于网络延迟或者设备异常等原因,不同副本中的值可能会不一样,但经过一段时间后,最终会变成一样。
WARO协议
WARO (Write All Read One)是一种简单的副本控制协议,当 Client 请求向某副本写数据时(更新数据),只有当所有的副本都更新成功之后,这次写操作才算成功,否则视为失败。这样的话,只需要读任何一个副本上的数据即可。但是WARO带来的影响是写服务的可用性较低,因为只要有一个副本更新失败,此次写操作就视为失败了。
Quorum 机制
Quorum 的定义如下:假设有 N 个副本,更新操作 wi 在 W 个副本中更新成功之后,才认为此次更新操作 wi 成功,把这次成功提交的更新操作对应的数据叫做:“成功提交的数据”。对于读操作而言,至少需要读 R 个副本才能读到此次更新的数据,其中,W+R>N ,即 W 和 R 有重叠,一般,W+R=N+1。
N = 存储数据副本的数量
W = 更新成功所需的副本
R = 一次数据对象读取要访问的副本的数量
Quorum就是限定了一次需要读取至少N+1-w的副本数据,听起来有些抽象,举个例子,我们维护了10个副本,一次成功更新了6个,那么至少需要读取5个副本的数据,可以保证我们读到了最新的数据。
Quorum 的应用
Quorum 机制无法保证强一致性,也就是无法实现任何时刻任何用户或节点都可以读到最近一次成功提交的副本数据。
Quorum 机制的使用需要配合一个获取最新成功提交的版本号的 metadata 服务,这样可以确定最新已经成功提交的版本号,然后从已经读到的数据中就可以确认最新写入的数据。
Quorum 是分布式系统中常用的一种机制,用来保证数据冗余和最终一致性的投票算法,在 Paxos、Raft 和 ZooKeeper 的 Zab 等算法中,都可以看到 Quorum 机制的应用。
分布式系统之Quorum机制相关推荐
- 分布式系统原理 之4 Quorum 机制
分布式系统原理 Quorum 机制 Quorum 机制是一种简单有效的副本管理机制.本节首先讨论一种最简单的副本控制规则write-all-read-one,在此基础上,放松约束,讨论 quorum ...
- 分布式系统Quorum机制
Write-all-read-one Write-all-read-one(简称 WARO)是一种最简单的副本控制规则,顾名思义即在更新时写所有的副本,只有在所有的副本上更新成功,才认为更新成功,从而 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- Hadoop2.6.0学习笔记(九)SPOF解决方案Quorum机制
鲁春利的工作笔记,谁说程序员不能有文艺范? 以下内容转载自:Eric雪菲的Quorum机制漫谈和junhua3344的Quorum机制 Quorum这个词的念作"科瑞姆",字面意思 ...
- Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)
在使用zookeeper的过程中,我们经常会看到这样一些说法: 1.zookeeper cluster的节点数目必须是奇数. 2.zookeeper 集群中必须超过半数节点(Majority)可用,整 ...
- 分布式系统中间件整理
文章目录 Redis 集群架构(主从模式+哨兵) 选主算法 集群架构(Redis-Cluster) 选主算法 负载均衡 其他 Kafka 集群架构 选主算法 负载均衡 RabbitMQ 集群架构 Fe ...
- Quorum (分布式系统)
Quorum (分布式系统) Quorum 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理. 基于Quorum投票的冗余控制算法 在有冗余数据的分 ...
- 分布式系统原理 之3 Lease机制
分布式系统原理 Lease机制 Lease 机制是最重要的分布式协议,广泛应用于各种实际的分布式系统中.即使在某些系统中相似的设计不被称为 lease,但我们可以分析发现其本质就是一种 lease 的 ...
- 基于CAP:深入剖析分布式一致性机制
点击关注公众号,Java干货及时送达 - 前言 - 分布式中一致性是非常重要的,分为弱一致性和强一致性.现在主流的一致性协议一般都选择的是弱一致性的特殊版本:最终一致性.下面就从分布式系 ...
- 深度介绍分布式系统原理与设计
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1 概念 1.1 模型 1.2 副本 1.3 衡量分布式系 ...
最新文章
- Delphi - 新语法介绍之For In
- asp.net Session丢失问题
- 台式电脑键盘字母乱了_电脑键盘上的一个不起眼的按键,特别实用却被粗心的人忽略...
- Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)
- Linux内核学习笔记五——中断推后处理机制
- pytorch 中的数据类型,tensor的创建
- python工具用什么语言_Python中一些自然语言工具的使用的入门教程
- 多线程编程进阶——Java类库中的锁
- C语言primcount素数计数,C语言与汇编的嵌入式编程:求100以内素数
- python数据结构与算法分析 第2版_题库 | 百度数据结构 / 算法面试题型介绍及解析 第 2 期...
- 基于quartz的云调度中心实现
- keeplive发生脑裂问题处理过程
- MD5 文件校验之 java 实现
- matlab R2013a 生成exe 脱离matlab开发环境运行
- Spring Boot多模块项目打包
- 用Remix部署Solidity合约
- 关于三个不同摄像头及数据采集
- GetLastError 返回值意义
- 爱思服务器shsh文件类型,爱思助手SHSH怎么备份 爱思助手SHSH备份教程
- 中控考勤机FACE702 JAVA调试,可能会持续更新
热门文章
- 2020 Bioinformatics | GraphDTA: predicting drug target binding affinity with graph neural networks
- AopAutoConfiguration matched的异常
- 定时器 java qua_spring项目中使用定时任务
- 量化——【01】你不得不知道的金融量化基础知识
- 拼音搜索 -- 自动解析拼音汉子组合(包含多音字,拼音缩写)
- 使用 Ctrl + R 命令反向查找/搜索历史【笔记】
- 百钱买百鸡 假设公鸡5文钱一只 母鸡三文钱一只 小鸡1文钱三只,要求用100文钱 , 如何买到100只鸡
- 如何在 Excel 图表中添加或删除次坐标轴?
- 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程监督与控制篇
- 【毕业设计】酒店评价情感倾向分析系统 - python 深度学习