专栏首页企鹅号快讯虾说区块链-44-分布式系统CAP原理

虾说区块链-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)内容支持计划赞助。

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

本文来自企鹅号 - 投河自尽的虾媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用 SVCCA 解释深度神经网络

    文 / Google Brain 团队 Maithra Raghu 深度神经网络 (DNN) 推动视觉、语言理解和语音识别等领域取得了前所未有的进步。但是,这些...

    企鹅号小编
  • 工业相机 效用几何

    文/李智勇,堡盟电子 如今,人工智能被称为经济发展的新引擎,而做为人工智能核心技术之一的视觉技术也的确火了,火到凡是和工业自动化相关的企业,如果不搞点视觉技术或...

    企鹅号小编
  • 智能升级——之机器人拣选技术

    随着互联网、电子商务、第三方物流的发展,以及人们消费水平的不断提高,使得物流仓储行业走上了高速发展的快车道。据相关资料显示,我国物流仓储固定资产投资额从2010...

    企鹅号小编
  • 浅谈分布式系统的一致性协议(一)

    我们在Mysql系列文章中已经介绍过,我们常用的InnoDB存储引擎是支持事务的。这里所说的事务由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑...

    搬砖俱乐部
  • 可能是讲分布式系统最到位的一篇文章

      如果现在让你阐述一下什么是“分布式系统”,你脑子里第一下跳出来的是什么?我想,此时可以用苏东坡先生的一句诗,来形象地描述大家对分布式系统的认识:

    数据星河
  • 到底什么才是分布式系统?

    如果现在让你阐述一下什么是“分布式系统”,你脑子里第一下跳出来的是什么?我想,此时可以用苏东坡先生的一句诗,来形象地描述大家对分布式系统的认识:

    架构师修行之路
  • 分布式系统的一个简单的学习框架

    最近在看 Martin Fowler 网站上的Patterns of Distributed Systems系列文章,突然想到,是不是也写一篇文章简单梳理一些分...

    哒呵呵
  • 用大白话聊聊分布式系统

    一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布...

    码云Gitee
  • 阿里P7架构师总结分布式系统的经典基础理论

    Java架构
  • 什么是分布式系统

    分布式系统是其组件分布在连网的计算机上" 组件之间通过传递消息进行通信和动作协调的系统。该定义引出了分布式系统的下列重要特征:

    看、未来

扫码关注云+社区

领取腾讯云代金券