序言
关于分布式系统的知识,可以从大学教科书上找到,许多人还知道Andrew S.Tanenbaum等人在2002年出版的“分布式系统原理与范型”(Distributed Systems:Principles and Paradigms)这本书。其实分布式系统的理论出现于上个世纪70年代,"Symposium on Principles of Distributed Computing(PODC)"和"International Symposium on Distributed Computing(DISC)"这两个分布式领域的学术会议分别创立于1982年和1985年。然而,分布式系统的广泛应用却是最近十多年的事情,其中的一个原因就是人类活动创造出的数据量远远超出了单个计算机的存储和处理能力。比如,2008年全球互联网的网页超过了1万亿,按平均单个网页10KB计算,就是10PB;又如,一个2亿用户的电信运营商,如果平均每个用户每天拨打接听总共10个电话,每个电话400字节,5年的话费记录总量即为0.2G×10×0.4K×365×5=1.46PB。除了分布式系统,人们还很难有其他高效的手段来存储和处理这些PB级甚至更多的数据。另外一个原因,其实是一个可悲的事实,那就是分布式环境下的编程十分困难。
与单机环境下的编程相比,分布式环境下的编程有两个明显的不同:首先,分布式环境下会出现一部分计算机工作正常,另一部分计算机工作不正常的情况,程序需要在这种情况下尽可能地正常工作,这个挑战非常大。其次,单机环境下的函数调用常常可以在微秒级内返回,所以除了少数访问外部设备(例如磁盘、网卡等)的函数采用异步方式调用外,大部分函数采用同步调用的方式,编译器和操作系统在调用前后自动保存与恢复程序的上下文;在分布式环境下,计算机之间的函数调用(远程调用,即RPC)的返回时间通常是毫秒或亚毫秒(0.1~1.0毫秒)级,差不多是单机环境的100倍,使用同步方式远远不能发挥现代CPU处理器的性能,所以分布式环境下的RPC通常采用异步调用方式,程序需要自己保存和恢复调用前后的上下文,并需要处理更多的异常。
基于上述原因,很多从事分布式系统相关的开发、测试、维护的朋友十分渴望了解和学习其他分布式系统的实践,可是,这些信息分散在浩瀚的知识海洋中,获取感兴趣的内容相当困难。因此,传辉的“大规模分布式存储系统”一书出现得恰如其时,这是我见过的讲解分布式系统实践最全面的一本书。它不仅介绍了当前业界最常见的分布式系统,还结合了作者自己六年多来的分布式系统开发实践。虽然这本书没有、也不可能包含分布式系统实践的所有内容,但阅读这本书的人一定会深受启发,并且还能够知道去何处获取更深层次的信息和知识。
阳振坤
阿里巴巴高级研究员,基础数据部负责人
