区块链和比特币是非常流行的概念,但很多人不知道它是什么。从技术角度,从架构角度,我就说说楼主的理解吧。区块链到底是什么?总之,区块链是一个存储系统。更具体地说,区块链是一个没有管理员的分布式存储系统,每个节点都拥有所有数据。您通常看到什么样的存储系统?如上图所示,一块空间存储数据,一块软件管理数据,提供写入数据的接口。这是一个存储系统,比如mysql。普通存储系统的常见问题有哪些?常见的问题有两个:(1)将数据存储在一个地方是很危险的,如果空间被破坏,数据就会丢失。用技术术语来说,“数据不是高度可用的”;(2)写点只有一个,专业术语是“单点控制”;如何保证数据的高可用性?要解决高可用,就需要“冗余”。如上图,如果数据可以冗余到多个地方,高可用,如果一个地方的数据宕机了,另一个地方还有数据。比如mysql主从集群,磁盘RAID,都是基于这个原理。这里需要强调两点:(1)数据冗余往往会导致一致性问题,如mysql主从集群读写延迟;(2)数据冗余往往会降低写入效率,因为同步数据需要消耗额外的资源;可以多写点吗?是的。写可以在多个节点上实现,比如mysql双主集群,或者多机房多活数据中心。这里要强调的是,多节点写入往往会导致写写冲突的一致性问题。多点控件写完之后,多中心控件才真正出现。当数据不一致时,往往需要一种算法来协商如何处理不一致的数据。例如,当有两个中心节点时,可以约定这样的算法来处理不一致:(1)以时间戳最小的数据为准,即先到先得;又例如,当有多个中心节点时,可以采用这样一种算法来处理不一致的算法:(2)投票,以多数票的数据为准;什么是区块链?(1)块是可以存储数据的存储空间;(2)区块链不仅像链表一样把块串起来,约定了一系列的方法来管理这些数据,所以它是一个存储系统;(3)区块链有很多节点,每个节点存储所有的数据,因此具有高可用性;(4)每个中心节点都可以生成块并写入数据,所以每个点都是一个中心节点,或者说区块链是去中心化的。如果要控制整个系统,就必须控制一半以上的节点。为了控制投票,本系统没有管理员;综上所述,区块链实际上是一个没有管理员的分布式存储系统,去中心化的,每个节点都拥有所有的数据。只要你愿意,你随时都可以成为区块链中的一个节点,参与区块的生成和写入。比特币就是基于这种分布式存储的电子货币。由于节点较多,需要同步的数据较多,所以这个系统的存储容量其实并不大。目前全球存储比特币的区块链只有100多G。画外音:嗯,朋友说他们公司的mysql数据库动辄几百G。因为节点多,数据需要保持一致,这个系统的写入效率也很低。存储比特币的区块链每10分钟只产生一个区块,而一个区块只有1M的存储空间,只够写入2000笔比特币交易的数据。画外音:比特币全球交易每10分钟只能处理2000笔交易。有朋友说他们公司自研的存储系统很容易;它每秒可以处理100,000个事务。关于区块链,本文只谈概念。作为存储系统,数据的生成、写入、管理、数据一致性、数据冲突处理方式、数据完整性保证……很多细节都会在以后的《技术科普文》中和大家分享。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文
