分布式系统是什么
今天的计算机系统和信息系统在本质上都是分布式的。越来越多的公司进入全球化时代,他们拥有部署在不同大陆上的成千上万的计算机。数据存储在不同的数据中心,而计算任务则运行在多台计算机上。
另一方面,我们的智能手机也是一个分布式系统。这不仅因为它可能将你的数据存储在云端,也因为它本身就包含多个处理和存储单元。
此外,计算机的发展已经经历了一个很长的过程。在20世纪70年代早期,微型集成电路芯片的时钟频率只有1MHz。10年之后,在20世纪80年代早期,个人电脑的主频已达到10MHz。到了1990年,时钟频率已达到了100MHz。
到了2000年,消费者已经用上了1GHz的处理器。仅仅几年之后的2005年,家用电脑的主频已经在3GHz和4GHz之间。
然后今天我们在市场上见到的个人电脑时钟频率依旧徘徊在3GHz到4GHz,因为CPU时钟频率已经在2004年前后基本停止了增长。如果不能解决一些物理上的问题,比如过热,时钟频率将无法显著提升。
简而言之,今天几乎所有的计算机系统都是分布式的,原因如下:
地理因素:大的公司和组织必然分布在多个地方。
并行化:我们需要使用多核处理器或计算机集群来加速运算。
可靠性:数据需要备份在不同的机器上,以免丢失。
可用性:数据需要复制到不同的机器上以利于快速获取,避免可能的瓶颈,并减少延迟。
虽然分布式系统带来了很多好处,比如扩大存储容量和计算能力,甚至有可能连接地理空间上分离的区域,然而它也带来了一个很麻烦的协调问题。
协调问题非常普遍,具备不同的特点,也有着不同的称谓,诸如:区块链、一致性、协定、共识、账单、事件溯源等。
在分布式系统中,协调问题是很常见的。即便是一个分布式系统中的每个节点几年才发生一次故障,但如果系统包含数百万个节点,那么每分钟都将发生一次故障。
从好的方面讲,人们期待一个多节点的分布式系统可以容忍一些错误并且持续正常工作。
状态复制
如果一个分布式系统中的所有节点,在一个命令序列上取得共识(即同样一组命令按同样的顺序执行),那么我们就可以得到状态复制。
在金融技术领域,状态复制常常等同于区块链。状态复制可以通过不同的算法来获得,具体取决于系统能容忍的错误类型。