一、 分布式系统的特点和存在的问题
分布式系统千好万好,它也必然有它的优点缺点。
分布式系统的特点:组件的分布、对等性,并发性,缺乏全局时钟,组件故障的独立性。
主要的问题:通信异常,网络分区,三态(成功、失败和超时,节点故障)。
分布式系统的目的是为了增强处理数据的能力,而数据处理的核心是数据库。分布式系统的数据库也是分布式的,对于不同节点的数据库读取、修改、删除等操作,如何在节点之间达成一致是分布式系统的核心问题。
对于一致性问题的研究还有专门的理论(FLP/CAP理论),都是阐述了在分布式系统中没有一个在任何情况下都能实现的解决一致性问题的方案,只能是在数据一致性、服务可用性和分区容错性之间进行适当权衡。
对于分布式数据库,一致性问题的理解可以举例来看。
一家电影院的A、B两家售票点都卖电影票,A查询系统后看到“余票=16”,卖一张票后“余票=15”;B与A同时查询系统看到“余票=16”,买一张票后“余票=15”。
很显然余票应该是14,两家售票点未达成一致性,所以结论是错的。(这是数据库一致性问题中的“修改丢失”,此外还有“不可重复读数据”、“读取脏数据”)
解决一致性的办法就是,对于一组节点,所有节点都已相同的秩序执行一个命令序列,这些节点就实现了状态复制,状态复制等同于区块链。
FLP不可能原理:在网络可靠,存在节点失败(即使只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。
CAP定理:指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
二、共识问题
一致性问题即共识问题,达成一致性就是达成共识,达成一致性的办法就是共识机制。
既然分布式早就存在,那么以前也有一些解决共识的办法(通常叫一致性算法),有2PC、Raft、Paxos、PBFT(拜占庭容错)。
区块链的解决办法:POW、POS、DPOS、Casper等。
区块链的共识机制优于传统方法的地方在于:在去中心化的思想上解决了节点间互相信任的问题,即使有节点作恶,即使有网络不稳定,一样能达成一致的结果。
三、如何应用区块链
以目前区块链的处理能力来说,还很难适应实际业务需求。所以对区块链的应用目前会倾向于对业务某方面性能的提升。比如,可以运用区块链可追溯不可篡改性能来做关联分析。
区块链越发展,在实际场景中的应用也会越顺畅。
听了张教授的讲座之后,我才理解了区块链不是石头缝里突然蹦出来的,它是计算机技术、网络技术、信息技术、工程技术等等方面发展进化而来的。
尤其对“分布式”的认识更清晰了。刚听完讲座发现记住的不多,回来整理笔记资料的时候发现,很多东西以前没接触过压根就不知道,所以听完了脑子里竟没有一点印象。反复听录音,在网上到处查资料才知道张教授讲的内容、提到的点都是源于哪里。
比如传统的共识算法,在网上输入这几个字查到的内容也只是关于区块链的共识算法。其实它们原本是为解决分布式数据库的一致性问题而生的,所以是一致性算法。我理解张教授在这里以“传统的共识算法”来总结,是为了对比区块链的共识算法,而且从根本上来说一致性算法也是为寻求共识问题的,只是以前没人那么叫而已。
理解了这些来龙去脉才真的听明白了张教授那天分享的内容,也明白了共识机制的进化之路。
网友评论