微服务在业界正获得越来越多的关注,理解微服务架构模式,对现有企业应用转型升级大有帮助。如何快速学习微服务中复杂的概念,掌握其实践,成为众多学习者关注的问题。 DaoCloud 首席架构师王天青 Grissom 为大家带来「 3 分钟学习微服务」系列,为微服务学习 划 重 点 !上期我们推出了「事务及分布式事务」,今天的重点:CAP 定理和数据一致性。
2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想。
2 年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 CAP 。之后, CAP 理论正式成为分布式计算领域的公认定理。
CAP 定理:一个分布式系统最多只能同时满足一致性( Consistency )、可用性( Availability )和分区容错性( Partition tolerance )这三项中的两项。
一致性指更新操作成功后,所有节点在同一时间的数据完全一致。常见的一致性类别:
Weak (弱一致性):当你写入一个新值后,读操作在数据副本上可能读出来,也可能读不出来。比如:某些 cache 系统。
Eventually (最终一致性):当你写入一个新值后,有可能读不出来,但在某个时间窗口之后保证最终能读出来。比如: DNS ,电子邮件、 Amazon S3 , Google 搜索引擎这样的系统。
Strong (强一致性):新的数据一旦写入,在任意副本任意时刻都能读到新值。比如:文件系统, RDBMS , Azure Table 都是强一致性的。
Paxos 算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。
在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。 Paxos 算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。
Raft 是斯坦福的 Diego Ongaro 、 John Ousterhout 两个人以易懂( Understandability )为目标设计的一致性算法,在 2013 年发布了论文: In Search of an Understandable Consensus Algorithm
从 2013 年发布到现在不过只有两年,到现在已经有了十多种语言的 Raft 算法实现框架