闲话Google集群 [5] 同步的诀窍
标签:
googllecluster集群gfsit |
分类: 技术评论 |
闲话Google集群 [5] 同步的诀窍
[5] 同步的诀窍
上 一节中,我们说到,把每个Chunk-server备份小组当作一个单元,每当Crawler向这些小组存放文件时,必须保证每个备份机器中存放的文件同 步。同步的最高境界是不仅内容,还有存放位置都必须一模一样。换句话说,每个Chunk-server备份小组中的任何一台机器,都像是小组中其它机器的 克隆复制一样。
如何保证同步?
这 几天笔者忙着装修房子,想去买几幅画,附庸风雅。北京南四环大红门地区有个集美装修城,这个mall里面有一个外观是西洋新古典主义风格的大楼,名曰“北 京卢浮宫”,主营卖画,尤其是油画。那里面西洋古典油画,如“蒙娜丽莎”之类,价格令人吃惊得便宜,几乎可以论斤卖。谁画的呢?
据 说货源之一是深圳郊外的“大芬村”。大芬村的特产是复制西洋古典油画,在短短十年间,大芬村从一个名不见经传的小山村,一跃占据了全世界60%的油画市 场,年生产销售油画100多万张,加上附加服务,这个小山村一年创汇3000多万美元。譬如“蒙娜丽莎”,在大芬村的出厂价是每张人民币200元,运到欧 美市场,每张卖美金2000元,迄今为止,单单“蒙娜丽莎”就累计买了20万张。
想从一堆“蒙娜丽莎”中,挑一张质量比较好的。但是反复比较,发现每张“蒙娜丽莎”彼此极为相似,不仔细看,几乎没有差别。拿我们计算机的术语讲,各个“蒙娜丽莎”备份的同步工作,做得非常好。大芬村在保持同步方面的诀窍是什么?
在 开始复制一幅画以前,大芬村画廊的高手们,先研究决定如何制定工序,譬如画风景画,先打底色,然后拿大刷子画背景天空和地面远景,接下来画云朵,以及地面 中景,最后是近景等等点睛之笔。通常前几个步骤都让画工们处理。只有关键的地方,才留给高手操刀捉笔。每道工序,都由专人负责,既责任明确,又避免相互干 扰。
或许读者会问,这不是与Ford流水线很相似吗?说得对极了。Ford流水线的意义,不仅在于提高生产效率,而且在于保障产品质量的稳定。
闲话说完,现在回头谈Google集群如何处理同步问题。其实,GFS同步的思想方法,与大芬村复制油画,与Ford流水线生产汽车,可以说大同小异。人类的精华思想,或许就那么为数不多的几条,应用到不同领域,做一些缝缝补补,就演变成了汗牛充栋的各种技术。
当Crawler向某个Chunk-server备份小组存放文件时,GFS规定的工序是这样的。
1. Crawler问Master,“这个chunk-server备份小组中,有哪些机器?他们的IP地址分别是什么?谁是这个小组的值班组长?”
2. Master回复Crawler,“你要找的chunk-server小组,包括以下几台机器,它们的IP地址如下。其中,xx是小组长”。
3. Crawler把要存放的文件传到各个chunk-server的内存中去。工序细节如下,
4. 当小组中所有chunk-server机器都收到了完整的文件数据,它们分别向Crawler汇报说,“文件数据已经完整收到”。
5. 小组长把这个请求序列发给小组中各个chunk-server,说,“我知道在你们的内存中,缓存着以下这些文件。我给它们编了一个序列,你们按这个序列,逐个把文件写进硬盘中”。
6. 当小组中所有chunk-server机器都把内存中缓存的文件,逐个按小组长指定的顺序,写进硬盘以后,它们分别向小组长汇报说,“文件数据已经完整写入硬盘”。
7. 小组长回复crawler,“你请求把文件存入我们小组的chunk-server,恭喜,已经完成,没有发生故障”。或者,回复出现了什么什么故障。
整个工序如下图所示,
https://docs.google.com/File?id=drfcsw8_80fm9x3zhf_b[5] 同步的诀窍" TITLE="闲话Google集群 [5] 同步的诀窍" />
这个工序,有很多优点,譬如稳妥,回避瓶颈,降低成本等等。但是缺陷也很明显,譬如给client,如crawler的权力过大,效率低等等。下一篇,我 们先分析缺陷,然后再谈优点。GFS之所以这么设计,无非是在看重优点的同时,尽可能降低缺点。理想不能圆满实现的时候,只好退而求其次。

加载中…