但,分布式系统被部署在不同网络环境
不同节点
,
分区
-
的系统,通过网络进行互联互通,
通过数据的冗余来达到高可用(主备机切换)、高吞吐(备机分担读压力)的能力;而网
络传输不可信、不稳定是一共识,网络问题是分布式系统不可避免的问题,并且是一定会
发生的问题。
如果要保证分布式系统各节点间的强一致性,整体系统的可用性就会降低,(举例:数据
库通过网络进行主从库之间的数据拷贝,要等到所有的变更落盘在从库,系统才能对外提
供一致性的数据服务;但当其中一个从库不可达,或者网络异常不能传输同步数据时,这
个情况下系统的数据服务就变得不可用)。
而,可用性在系统中又是基本性能指标,因此在设计分布式系统时会根据其业务特性在一
致性和可用性之间进行权衡。因此在设计分布式系统时会根据其业务特性在一致性和可用
性之间进行权衡。
这时候,著名的
理论就别提出来了,其指分布式系统在一致性
%"%)
、可用
性
*++)
、分区容错性
% +"%"
只能同时满足其中两种。通过一些显式
处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。
但,
理论一定是对的吗?
这个问题多少问的有点欠揍,毕竟前面吹了
理论这么多彩虹屁。
以下转一篇
理论提出者
!""
教授在
.' /0
的一篇文章
《
1"+*" '" 2" 3 " 45+"4 3*" %6"
》点击链接
%78+"9"+*"9)"9+"99"95+"9*"9
%6"
译文如下:
《
理论十二年回顾:
4
规则
4
变了》
%78%+"9"+*"9)"9+"99"95+"9*"9
%6"
以下文章版权属
$%7:
社区。
理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容
忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一
致性和可用性,进而取得三者之间的平衡。
自打引入
理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新
颖的分布式系统,甚至到了滥用的程度。
;<:2
运动也将
理论当作对抗传统关系型
数据库的依据。
理论主张任何基于网络的数据共享系统,都最多只能拥有以下三条中的两条:
-
数据一致性(
),等同于所有节点访问同一份最新的数据副本;
-
对数据更新具备高可用性(
);
/-
能容忍网络分区(
)。
评论