2.4 数据一致性实现技术
分布式存储在不同的节点的数据采取什么技术保证一致性,取决于应用对于系统一致性的需求,在关系型数据管理系统中一般会采用悲观的方法(如加锁),这些方法代价比较高,对系统性能也有较大影响,而在一些强调性能的系统中则会采用乐观的方法。
2.4.1 Quorum系统NRW策略
对于数据不同副本中的一致性,采用类似于 Quorum 系统的一致性协议实现。这个协议有三个关键值N、R和W。
N表示数据所具有的副本数。
R表示完成读操作所需要读取的最小副本数,即一次读操作所需参与的最小节点数目。
W表示完成写操作所需要写入的最小副本数,即一次写操作所需要参与的最小节点数目。
该策略中,只需要保证R + W>N,就可以保证强一致性。
例如:N=3,W=2,R=2,那么表示系统中数据有3个不同的副本,当进行写操作时,需要等待至少有2个副本完成了该写操作系统才会返回执行成功的状态,对于读操作,系统有同样的特性。由于R + W > N,因此该系统是可以保证强一致性的。
R + W > N会产生类似Quorum的效果。该模型中的读(写)延迟由最慢的R(W)副本决定,有时为了获得较高的性能和较小的延迟,R和W的和可能小于N,这时系统不能保证读操作能获取最新的数据。
如果R + W > N,那么分布式系统就会提供强一致性的保证,因为读取数据的节点和被同步写入的节点是有重叠的。在关系型数据管理系统中,如果N=2,可以设置为W=2,R=1,这是比较强的一致性约束,写操作的性能比较低,因为系统需要2个节点上的数据都完成更新后才将确认结果返回给用户。
如果R + W ≤ N,这时读取和写入操作是不重叠的,系统只能保证最终一致性,而副本达到一致的时间则依赖于系统异步更新的实现方式,不一致性的时间段也就等于从更新开始到所有的节点都异步完成更新之间的时间。
R和W的设置直接影响系统的性能、扩展性与一致性。如果W设置为1,则一个副本完成更改就可以返回给用户,然后通过异步的机制更新剩余的N W的副本;如果R设置为1,只要有一个副本被读取就可以完成读操作,R和W的值如较小会影响一致性,较大则会影响性能,因此对这两个值的设置需要权衡。
下面为不同设置的几种特殊情况。
当W = 1,R = N时,系统对写操作有较高的要求,但读操作会比较慢,若N个节点中有节点发生故障,那么读操作将不能完成。
当R = 1,W = N时,系统要求读操作高性能、高可用,但写操作性能较低,用于需要大量读操作的系统,若N个节点中有节点发生故障,那么写操作将无法完成。
当R = Q,R = Q(Q = N / 2 + 1)时,系统在读写性能之间取得了平衡,兼顾了性能和可用性,Dynamo系统的默认设置就是这种,即N=3,W=2,R=2。
相关推荐
为解决现有的quorum系统节点没有差异、数据读取延迟较大、存储利用率低等缺陷,提出了一种新的基于特权分级的quorum系统。该系统借助代理动态调整各quorum,并按数据存储时段将各节点划分为不同的等级,此外还设计了...
#资源达人分享计划#
quorum联盟链运行流程图
为解决现有的quorum系统节点没有差异、数据读取延迟较大、存储利用率低等缺陷,提出了一种新的基于特权分级的quorum系统。该系统借助代理动态调整各quorum,并按数据存储时段将各节点划分为不同的等级,此外还设计了...
为了在无线传感器网络中增强节点通信时间分配的公平性,设计了一种局部的按需异步时间分配算法(SATA).SATA算法的设计基于Quorum系统(Quorum system, QS).首先构造出一个QS,然后节点根据自身的通信量在QS中选择合适...
quorum, 支持数据隐私的Ethereum的permissioned实现 仲裁 仲裁是基于ethereum的分布式分布式分类帐协议,具有事务/协定保密性和新的一致性机制。仲裁是 go fork,并与 go-ethereum发布 releases 。go-ethereum的关键...
quorum.js:Quorum 的 JavaScript API quorum.js是延期增加了对API的特定支持。 :warning: 项目弃用通知 :warning: quorum.js 库将于 2021 年 12 月 31 日弃用,从我们停止支持该项目之日起。 quorum.js 库已弃...
NULL 博文链接:https://kabike.iteye.com/blog/2224252
华为存储双活仲裁软件
肺炎克雷伯氏菌Ⅱ型群体感应系统对环境变化的响应研究,朱虎,刘慧君,本研究运用哈氏弧菌BB170报告检测和定量反转录聚合酶链式反应(qRT-PCR)技术分析了肺炎克雷伯氏菌Ⅱ型群体感应系统对环境变化(碳源
quorum-cloud:在选定的云提供商中部署Quorum网络
法定人数示例该存储库包含Quorum Platform的安装示例。 当前的示例包括: :启动由7个独立节点组成的功能齐全的Quorum环境。 从这个例子中可以测试以太坊平台的共识,隐私和所有预期功能。 存在其他示例来突出显示...
npx quorum-wizard 您还可以使用npm全局安装向导: npm install -g quorum-wizard # Once the global module is installed, run: quorum-wizard 注意:许多npm安装没有安装全局模块的权限,并且会引发EACCES错误...
web3j-quorum:JP Morgan Quorum的web3j集成层
这将测试设置以将Quorum(基于go-ethereum)和Constellation构建在docker中并在单独的docker实例中运行,但是要成对运行,以便每个geth docker实例通过IPC而不是TCP与对应的星座节点docker实例进行通信。 前提条件 ...
它基于示例,并提供了一个简单的Quorum网络设置,带有或不带有Tx Manager的Quorum隐私功能,以及以下三种受支持的共识算法: 筏集团伊斯坦堡通过此示例,可以启动一个由8个独立Quorum节点组成的功能齐全的Quorum ...
手段篇 一致性哈希 亚马逊的现状 算法的选择 Quorum NRW Vector clock Virtual node gossip Gossip (State Transfer Model) Gossip (Operation Transfer Model) Merkle tree Paxos 背景 DHT Map Reduce Execution ...
python库。 资源全名:quorum-0.1.5.zip
该存储库与Quorum Weblate-Quorum团队同步该存储库实际上驱动仲裁应用程序的翻译。如何翻译? 在主项目中,您有两个文件夹。 我们将专注于./initial-locales/文件夹。 然后,您有两个文件夹: mobile :专注于...
Gorums一个框架,用于简化容错基于quorum协议的设计和实现