目 录
1 概要
本文主要对大规模分布式系统的发展进行梳理,以加深理解。
2 分布式计算
随着计算机技术的发展和信息爆炸时代的来临,人们对数据计算的需求越来越高,特别是海量数据的科学计算。传统的单机受到计算速度、容量的限制已经无法满足需求。在“网络+计算机”的基本思想下,分布式计算应运而生。
2.1.1 分布式计算定义
分布式系统由两台或两台以上机器组成的系统,具有物理上分布的物理资源和逻辑资源。这些资源高度自治和相互合作的工作。每台计算机都具有数据存储功能和数据处理能力。在分布式计算中,数据处理不是由单机完成而是由多台机器协作完成。比如一项工作P,由两部分组成 p1和p2。我们把p1放在机器A上完成,p2放在机器B上完成,这些就形成一个分布式计算。
2.1.2 主流分布式技术
现在分布式计算问题基本可以采用google的三个技术解决,分别为:GFS,MapReduce,Bigtable,这三个技术被称为“google三驾马车”,google只公开了论文而未开源代码,开源界对此非常有兴趣,仿照这三篇论文实现了一系列软件,如:Hadoop、HBase、HDFS、Cassandra等。
在google这些技术还未出现之前,企业界在设计大规模分布式系统时,采用的架构往往是database+sharding+cache。
该架构解释如下:前端cache是为了提高响应速度,后端数据库则用于数据永久存储,防止数据丢失,而sharding是为了在多台机器间分摊负载。最前端由大块大块的cache组成,要保证至少99%(的访问数据落在cache中,这样可以保证用户访问速度,减少后端数据库的压力,此外,为了保证前端cache中数据与后端数据库中数据一致,需要有一个中间件异步更新(为啥异步?理由简单:同步代价太高。异步有缺定,如何弥补?)数据,这个有些人可能比较清楚,新浪有个开源软件叫memcachedb(整合了Berkeley DB和Memcached),正是完成此功能。另外,为了分摊负载压力和海量数据,会将数据经过分片后存放到不同节点上(称为“sharding”)。
这种架构优点非常明显:简单,在数据量和用户量较小的时候完全可以胜任。但缺定早晚一天暴露出来,即:扩展性和容错性太差,维护成本非常高,尤其是数据量和用户量暴增之后,系统不能通过简单的增加机器解决问题。
而上述所有问题都可以用google引导的分布式计算策略解决大型的、分布式的、对大量数据的访问。
参考文献:http://dongxicheng.org/search-engine/system-designing-in-finging-jobs/
本文探讨了分布式系统的发展,从概要出发,深入讲解分布式计算的概念与主流技术,对比传统架构与分布式计算策略的优势,并提供了相关参考资料。

被折叠的 条评论
为什么被折叠?



