虾说区块链-44-分布式系统CAP原理

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-分布式系统-CAP原理:

区块链技术中,除了各种加密的算法还有一个重要的概念:分布式系统,分布式系统实现了区块链的去中心化(多中心、弱中心化的概念)架构。

之前有大致写过一点关于分布式系统简单说明,这里再对分布式系统的概念做个说明。

分布式系统概念

分布式系统的概念,根据通用的分布式系统的定义:分布式系统(distributed system)建立在网络的基础上的软件系统,或者理解为:分布式系统是若干独立计算机的集合,这些计算机对于用户来说类似一个个单独的但又相互关联的系统-来自《分布式系统原理和范例》。分布式系统概念上世纪70年代就开始被提及和发展,但是真正被关注和重视是在90年代后互联网公司的发展,发现传统的中心化服务节点应付互联网海量数据和大量业务处理上出现了巨大的挑战,故适应新型互联网系统的分布式模型被重视并逐渐应用于实际场景。

CAP原理

CAP原理是分布式领域著名的一个原理,在区块链概念简介中一般都会提及,这是一个理论上的概念。CAP原理:

Consistency(一致性):数据更新保证一致,所有数据的任意改动在整个分布式环境中同步,保证数据和操作的一致。

Availability(可用性、也称可行性):保证系统的运行,正常对外提供服务。

Partitiontolerance(分区的容错性):简单理解为系统的可靠性。

CAP原理是一个理论上的定理,解释为:任何的分布式系统最多只能满足以上的两点,无法同时满足以上三点,在实现一套分布式系统的时候需要对三者适当作取舍。CAP原理是理论上的,真正应用上工程实践中,一般都有所取舍,这也是理论和工程的区别。

ACID模型

ACID是现在常用的关系数据库的模型:它保证了高一致性和可用性。

Atomicity(原子性):一个事务中所有操作都必须全部完成,要么全部不完成。

Consistency(一致性). 在事务开始或结束时,数据库应该在一致状态。

Isolation(隔离层):事务将假定只有它自己在操作数据库。

Durability:一旦事务完成,不能返回。

BASE模型

BASE模型和ACID模型相关,通过牺牲高一致性来保证可用性和可靠性。

asicallyAvailable基本可用。

Softstate软状态 状态可以有一段时间不同步,异步。

Eventuallyconsistent最终一致,最终数据是一致的就可以了,而不是时时高一致性。

例:关系型数据库设计选择了C(一致性)与A(可用性),NoSQL数据库设计则不同。其中,HBase选择了C(一致性)与P(分区可容忍性),Cassandra选择了A(可用性)与P(分区可容忍性)

CAP分析

分布式系统中数据的一致性一般通过多分冗余存储来解决,保证数据的不丢失。毕竟对一套系统来说,数据的尤为关键。那么多份冗余在解决方案中,通过在分布式系统的网络中的每一个独立的节点上或者在其余节点不保证每一个节点中(拜占庭问题,之前文章有过描述)保留一份甚至多份的数据副本来实现。

那么首先来说强一致性:分布式系统中网络中有众多节点,强一致性要求所有节点的数据完全一致后再对应用进行一个返回操作。这样所有的网络节点中的读取的数据是一样的,但是一旦出现有一个节点出现的故障,或者恶意行为,那么就不能正常返回给前台应用,很明显这种前提下,网络中节点越多故障的可能性就越大,整个系统的扩展性也会被限制。

那么保证可用性,通过对网络中的部分节点验证数据的写入完成校验,通常少量节点验证那么返回的速度也会相应快,整个系统的响应状态良好,但是数据的一致性就无法保证,A节点和B节点给的返回数据会发生不一致,那么前台如何判定那一份才是正确,后台如何保证数据的完整性。

结合关系型数据库和nosql数据库来说明,两者有各自的模型,但是笔者认为,在一套分布式系统中,数据的一致性尤为关键,通常在设计系统中,会首先考虑数据的完整一致性,一旦一个系统出现了数据不一致,即使它的运行效率很快,但是后期对于数据的问题的处理甚至故障将会是很大的一块工作。CAP原理中Consistency(一致性)结合关系型数据库,那么就是关系型数据库ACID中的C,数据库中有一个事务的概念,在分布式系统中对于事务一般通过两个阶段的递交,多次通讯确认不可避免会比较耗时,在关系型数据库中一笔更新或者插入,都会要求满足ACID,那么简单理解整体系统的可用性就会被不可避免的降低。那么nosql数据库中,在设计nosql类数据库中弱化了多表关联的概念,简单理解为保证了A和P,牺牲了Consistency(一致性)。CAP原理就被很好的理解了。

CAP原理理解为一个理想世界中的一个一致性模型,用于设计分布式系统,多路系统提供一个技术理论基础,分布式系统是目前系统设计的趋势,在区块链技术中它良好使用到了这个技术,分布式系统的内容深入挖掘是很大的一块理念,实际应用中综合考虑各种因素,实现多样化。

本文由币乎社区(bihu.com)内容支持计划赞助。

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171211B0AWOO00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区