17. 一致性相关技术和策略—NWR策略
• NWR模型 [Werner Vogels]
•
•
•
•
N:数据复制的份数
W:数据更新完成前需要到达的节点数
R:为了读取正确数据需要读取的节点数
为保证不同副本中的数据一致性采用类似Quorum系
统的一致性协议
• 若满足W+R > N,那么读写节点有重叠,读总是能够得到最
新的数据,系统可保证强一致性
• 若满足R + W ≤ N,这时读取和写入操作是不重叠的,系统只
能保证最终一致性
• R和W的设置直接影响系统的性能、扩展性与一致性
• R和W的值如较小会影响一致性,较大则会影响性能,这两个值的设置需
要权衡
Eventually Consistent - Revisited, By Werner Vogels on Decembe
18. 一致性相关技术和策略—Paxos算法
Google Chubby 的作者Mike Burrows:“There is only one consensus protocol, and
that's Paxos”-all other approaches are just broken versions of Paxos
• Lamport提出的Paxos是一种基于消息传递的一致性算法
,主要解决分布式环境下的“一致性”问题
• 在不同的上下文中“一致性”有不同的解读
① 数据库领域:强调系统中所有的数据的状态一致
② NoSQL领域:强调读写一致性(能读到最后写入的数据)
③ 状态机:强调在初始状态一致的状态机上执行相同的序列操作
后,每个状态机的状态须保持一致,即顺序一致性
• Paxos算法中的“一致性”对应第③种含义
Lamport, The part-time parliament,1998、Paxos made simple, 2001.
23. CAP原理与一致性
• 关系数据库领域 -ACID
•
•
•
•
• 分布式领域 -CAP
原子性(Atomicity )
一致性(Consistency )
隔离性(Isolation)
持久性(Durability)
• 一致性 (Consistency)
• 高可用性 (Availability )
• 分区容忍性 (Tolerance of
network Partition )
前提:对于分布式系统,P
是必须满足的限制条件
“ CAP theorem, which
states that of three
properties one can only
achieve two at any given
time. ”
CP:提供一致性保证
AP:提供可用性保证
Consistency Safty
Availability Liveness
注:单点运行的RDBMS是
典型的CA系统
三选二:实现原子性读写服务的存在分区倾向的系统不能同时保证系统的安全性和活性
Ref: Nancy Lynch and Seth Gilbert, “Brewer's conjecture and the
feasibility of consistent, available, partition-tolerant web services”
25. CAP原理的反思
• 不同的声音1
• Errors in Database Systems, Eventual Consistency,
and the CAP Theorem. Michael Stonebraker.
• CAP/BASE理论中牺牲C来换取AP是不可取的,原
因在于导致P问题发生的场景并不常见
• 且在某些情况下,牺牲C也还是很难保证AP
•
•
•
•
1. Repeatable DBMS errors
2. hardware failure
3. Disaster
etc.
注:
1和3会导致系统始终处于错误状态,系统必然不可用
3会导致节点失效并可以视为产生分区的特例
26. CAP原理的反思
• 不同的声音2
• Consistency Tradeoffs in Modern Distributed
Database System Design: CAP is Only Part of the
Story. [IEEE Computer] Daniel Abadi.
• CAP没有将Latency考虑进来
• 换个角度,P可以视为对通信的时限( Latency )
要求,即系统如果不能在时限内达成数据一致性,
就意味着产生了分区
• 新的推论
• 分区并不是整个系统的一种例外(仅部分节点检测到了分区)
• 检测到分区的节点可进入分区模式,其他节点保持可用与一致
• 因此,除了在C和A之间权衡,还须在
Consistency 和 Latency 之间权衡(PACELC)
27. CAP原理的反思—PACELC
It is not merely the partition tolerance that necessitates a tradeoff
between consistency and availability; rather, it is the combination of
· partition tolerance and
· the existence of a network partition itself
As soon as a DDBS replicates data, a tradeoff between consistency and
latency arises.
Ignoring the consistency/latency tradeoff of replicated systems is a
major oversight, as it is present at all times during system operation.
From: Consistency Tradeoffs in Modern Distributed Database System Design: CAP is Only Part of the Story
PA/EL
Dynamo, SimpleDB,
Cassandra,CouchDB
PC/EC
ACID compliant
database systems
PA/EC
GenieDB
others
…
系统设计的时候需要进
行各式各样的权衡,这
并不是一个简单的CAP
或者PACELC就能够解
决的,需要按需决策。
28. 有关于“P”的新观点和策略
• 新观点
• 大规模集群中P是常态;中小规模集群中P发生概率很小
• 不发生或者发生P概率很小的集群可视为CA cluster(理想环境,
视分区出现的可能性要比其他的系统性错误(如自然灾难、并发
故障)还要低),但构建CA cluster并不是一件容易的事情
• 更好的策略
• 当分区很少出现时:系统允许完美的C和A
• 当分区存在或可感知其影响的情况下:预备一种策略去探知分区
并显式处理其影响(典型处理步骤如下)
• 步骤1:探知分区发生
• 步骤2:进入显式的分区模式以限制某些操作
• 步骤3:启动恢复过程以恢复数据一致性并补偿分区期间发生的错误
Ref. cap twelve years later:
how the rules have changed
30. 系统设计时的一致性权衡
• CAP在12年前被提出,大数据背景下各种环境发生了极大
的变化,系统设计的权衡因素也越发复杂
• 一致性与可用性
高可扩展性
一致性
高可用性
• 一致性与扩展性
高度容错性
...
• 一致性与延迟
• 一致性与持久化
• 一致性与故障转移、恶意攻击、…
We believe it is better to have application programmers
deal with performance problems due to overuse of
transactions as bottlenecks arise, rather than always coding
around the lack of transactions.
--from: http://www.infoq.com/news/2012/10/google-spanner
31. 设计策略概览
• Best-effort availability
• 保持一致性
• 典型技术:分布式锁(chubby)
• Best-effort consistency
• 保持高可用性
• 典型技术: Web caches
• Balancing consistency and availability
• 动态的平衡系统的一致性与可用性
• 典型技术: TACT( Tunable Availability and Consistency Tradeoffs )
• Segmenting consistency and availability
• 系统没有单个统一的需求,不同组件使用不同的可用性和一致性,策略与给定应
用和分区方式有关
• Data partitioning:不同数据有不同的需求(如购物车数据、账单数据)
• Operational partitioning:不同操作有不同需求(如浏览、购买)
• Functional partitioning:不同功能有不同需求(如结算、DNS、内容分发)
• User partitioning:不同区域的用户有不同需求(如大众点评、 Craigslist )
• Hierarchical partitioning:不同层级有不同需求(如root, leaves)
40. Consistency or not:is up to you
• 数据处理系统对一致性的需求始终存在
• 多样化的需求,多样化的选择
• 大数据背景下一致性存在多种选择,不同的应用场景
适用不同的一致性,没有最好只有最适合
• 企业级应用对于强一致性的需要将长期存在
• 未来甚至可以会出现混合一致性(多种一致性共存,
甚至存在于一个应用中)
William Shakespeare:People‘s controllable and own
destiny,if our under the yoke of person, that doesn't in the
destiny is wrong and is at ourselves
Consistency
Is
Key