Data is Everything!

Database, Data Management, Data Analysis!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在看分布式系统方面的内容时,会遇到两个概念:Consistency Model和Consensus Protocol。前者叫做“一致性模型”,后者则为“一致性协议”。两者都在讲述“一致性”相关的内容,那么这两个概念之间有什么联系和区别吗?

     首先,看看consistency 和 consensus的字面意思。下面是来自google 和iciba的翻译:

     Consistency: 一致性;连贯;      

     Consensus: 共识;一致;    

     从字面意思看:前者侧重的是内容在时间顺序上的一致和统一;而后者则是指由许多参与者对某项内容达成共识。所以可以初步断定,consistency model和consensus protocol两者关于一致性的描述角度是不一致的。

     下面从术语的角度分析:

     Consistency model主要是对存储器上的数据更新和读取规定了一系列规则,使得在这些规则限制下操作数据一定能得到正确的数据。简单理解为,consistency model规定了何时(when)能读取数据的更新,它是程序和数据存储器之间的一个契约;也可以理解为对数据的一致性的程度进行了限定。

     consensus protocol则描述了在分布式环境中,多个进程或实例通过一定的原则或规则,对某项内容达成一致的意见。它为了达成一致意见,各进程或实例有一个通信和协商的过程。也可理解为consensus protocol是在实现某个consistency model时采用的技术手段。

     举一个形象的例子:假如有一个立法委员会,要决议通过一个法律,并向全国人民发布法律,最后在一定时刻法律生效。

     上述过程涉及法律的生成法律生效两个子过程。其中在法律生成子过程中需要利用consensus protocol,各议员相互协商最终达成一致的意见,生成法律;在法律生效过程中,Consistency model描述了为了在法律颁布后能在有效时间内使得全国各地法律按照一定的顺序生效,而需要遵守的相关规则和规定。

     对于上述的理解,我认为可以把consistency model翻译为“一致性模型”,consensus protocol翻译为“共识协议”,这样能避免一定的混淆。

posted on 2012-05-08 15:13  simon0227  阅读(2691)  评论(0编辑  收藏  举报