[3] 布局
系统架构设计,以我个人体会,可以分为几个方面,机器和网络布局,数据流组织,控制流组织,负载均衡,线程规划,数据同步,数据恢复,系统安全和系统健康状态诊断等等。成为架构设计高手很难,但是入门并不那么困难。
我 们不妨以Google File System(GFS)作为一个案例,逐一解剖这个系统的架构设计的各个方面。在分析完GFS以后,再解剖分析Google的分布式数据 库,Bigtable的架构设计。如此分析多个系统的架构后,或许大家对系统架构设计就会有一个比较清晰的了解,我们的讨论也就会更深入,更有趣。
为 什么要实现Google File System?最根本的原因,是因为要存放的数据的规模太大,以至于任何一台PC放不下,所以需要一个集群的PC来完成这个任务。数据的规模太大,也许是 因为数据文件的数目很多,也有可能是因为单个文件的尺寸太大,也有可能是不仅单个文件的尺寸大,而且大尺寸的文件数目多。
设想一下,如果要存放的数据的规模是5000G,而一台PC的硬盘空间是500G,那么我们可以把数据分成十份,分别存放在不同的PC上。但是问题是如果我们要读取某个文件时,我们怎么知道这个文件在哪个PC里呢?有两个办法,
1. 逐个访问每个PC。但是这样的效率会比较差。
2. 另外再设一个PC,这个PC里存放着一个目录,专门记录哪些PC存放了哪些文件。这样的做法,好处是效率高,缺点是额外占用更多PC。
图一显示了这个布局。作为文件系统,主要功能无非是,1. 存放文件,2. 读取文件。
![闲话Google集群 <wbr>[3] <wbr>布局 闲话Google集群 <wbr>[3] <wbr>布局](https://docs.google.com/File?id=drfcsw8_748kpfjfgh_b)
存放:网络爬虫(Crawler)下载了形形色色的网页后,把这些网页发给存放目录的PC,简称目录服务器(master)。目录服务器决定用哪个PC来存放这些网页,简称数据存储器(ChunkServer)。
读取:等到有人想读取某个文件的时候,他可以向目录服务器发出
系统架构设计,以我个人体会,可以分为几个方面,机器和网络布局,数据流组织,控制流组织,负载均衡,线程规划,数据同步,数据恢复,系统安全和系统健康状态诊断等等。成为架构设计高手很难,但是入门并不那么困难。
我 们不妨以Google File System(GFS)作为一个案例,逐一解剖这个系统的架构设计的各个方面。在分析完GFS以后,再解剖分析Google的分布式数据 库,Bigtable的架构设计。如此分析多个系统的架构后,或许大家对系统架构设计就会有一个比较清晰的了解,我们的讨论也就会更深入,更有趣。
为 什么要实现Google File System?最根本的原因,是因为要存放的数据的规模太大,以至于任何一台PC放不下,所以需要一个集群的PC来完成这个任务。数据的规模太大,也许是 因为数据文件的数目很多,也有可能是因为单个文件的尺寸太大,也有可能是不仅单个文件的尺寸大,而且大尺寸的文件数目多。
设想一下,如果要存放的数据的规模是5000G,而一台PC的硬盘空间是500G,那么我们可以把数据分成十份,分别存放在不同的PC上。但是问题是如果我们要读取某个文件时,我们怎么知道这个文件在哪个PC里呢?有两个办法,
1. 逐个访问每个PC。但是这样的效率会比较差。
2. 另外再设一个PC,这个PC里存放着一个目录,专门记录哪些PC存放了哪些文件。这样的做法,好处是效率高,缺点是额外占用更多PC。
图一显示了这个布局。作为文件系统,主要功能无非是,1. 存放文件,2. 读取文件。
存放:网络爬虫(Crawler)下载了形形色色的网页后,把这些网页发给存放目录的PC,简称目录服务器(master)。目录服务器决定用哪个PC来存放这些网页,简称数据存储器(ChunkServer)。
读取:等到有人想读取某个文件的时候,他可以向目录服务器发出
