分布式系统的经典理论
分布式系统从诞生到现在已经有几十个年头了,其中伴随着一些很重要的基础理论,正是这些影响深远的基础理论,奠定了分布式系统的坚实基础,造就了分布式领域的一座座宏伟大厦。为了练就一身武功,让我们从这些经典的分布式理论开始学起吧。
从分布式系统的设计理念说起
分布式系统的首要目标是提升系统的整体性能和吞吐量。如果最终设计出来的分布式系统占用了10台机器才勉强达到单机系统的两倍性能,那么这个分布式系统还有存在的价值吗?另外,即使采用了分布式架构,也仍然需要尽力提升单机上的程序性能,使得整体性能达到最高。所以,我们仍然需要掌握高性能单机程序的设计和编程技巧,例如多线程并发编程、多进程高性能IPC通信、高性能的网络框架等。
另外,任何分布式系统都存在让人无法回避的风险和严重问题,即系统发生故障的概率大大增加:小到一台服务器的硬盘发生故障或宕机、一根网线坏掉,大到一台交换机甚至几十台服务器一起停机。分布式系统下故障概率的增加,除了受到网络通信天生的不可靠性及物理上分布部署的影响,还受到X86服务器品质等的影响。
所以,分布式系统设计的两大关键目标是性能与容错性,而这两个目标的实现恰恰是很棘手的,而且相互羁绊!举个例子,我们要设计一个分布式存储系统,出于对性能的考虑,在写文件时要先写一个副本到某台机器上并立即返回,然后异步发起多副本的复制过程,这种设计的性能最好,但存在“容错性”的风险,即在文件写完后,目标机器立即发生故障&#