Google在后面看着呢….
2008-08-01
大规模服务设计部署经验谈[上] [转]
摘自程序员杂志第五期,文章所有权属于程序员杂志,如果内容对任何人有影响,请让我知道,谢谢!
===================================================
这是近期我看到过最好的一篇论文,与之类似的是介绍flickr经验的一本书,flickr的服务器比ms肯定是少
一个数量级的,所以这篇论文的价值就更大了,每个架构师和运维工程师都应该好好读一下,尤其是运维
工程师,要从运营系统的角度去看待里面的经验,和自己能做的事情。
===================================================
引言
本文就设计和开发运营友好的服务的话题进行总结,得出一系列最佳实践。设计和部署大规模服务是一个高速发展的领域,因而随着时间的流逝,任何最佳实践集合都可能成熟并完善。我们的目的是为了帮助人们:
◆快速交付运营友好的服务;
◆避免清早电话铃声的骚扰,帮助备受运营不友好的服务侵扰的客户尽量摆脱窘境。
这篇论文是我们在过去的20年中在大规模以数据为中心的软件系统和互联网级大规模服务的智慧结晶,包括Exchagnge Hosted Services团队、Microsoft GIobal Foundation Services Operations团队以及Windows Live!平台多个团队的经验。这些贡献经验的服务中,有不少规模已经增长到拥有超过二亿五千万名用户。同时,本论文也大量吸取了加州大学伯克利分校在面向恢复计算(Recovery Oriented Computing)方面取得的成果和斯坦福大学在只崩溃软件(Crash一Only Software)方面的研究经验。 Bill Hofffman为本论文贡献许多最佳实践。此外,他还提出三条简单原则,值得大家在进入正题之前进行考量:
1. 做好发生故障的心理准备。
2. 保持简单化。
3. 将所有的工作自动化。
2008-07-27
搜索爬虫
周末看了几个爬虫(Arachnid、arale、heritrix)的原理,感觉heritrix的架构是其中比较合理和有弹性的,就是太复杂了,除了core framework外,还有写了一个web server,及在此之上搭建了一个控制台,按它自己的说法,heritrix是一个完整的crawler,可以通过配置就让它为实际业务服务。其中core framework里面,还有很多东西可能为了追求性能而自己DIY的,看的头晕…
参考heritrix的架构,写了一个简单的爬虫,性能还行,并发5个链接,在一分钟内爬了上千个链接下来,如果不做频率限制,怕把对方网站拖死了,呵呵。

btw: 发现写java代码确实快,API多,开源库也多,总共用了2个库(commons-httpclient-3.0.1.jar, jericho-html-2.3.jar),总共不到500行,就实现了页面url和用户名抽取两个功能,并能根据url和设定的深度进行递归爬。
2008-07-15
Federation at Flickr: Doing Billions of Queries Per Day
近期highscalability上有一篇文章,介绍了由flickr的数据库高人撰写的flicker的数据库设计,作者说,如果你想知道自己的sharding是否做对,一定要拜读该文。(ppt的title中赫然见到”Federation”一词,难道又会创造一个Federation热吗?) (另,这个ppt里其实没有很多有用的内容,可能更多是通过口头表达的)
flickr架构就不多说了,可以参见highscalability.com的文章 或 dbanotes上的介绍
ppt主要介绍flickr 遇到的几个问题,以及是如何解决的:
1. mysql master-slave 拓扑问题
将数据sharding分布
建立master-master ring来解决写入的问题
— 据作者说是为了解决写入点的问题,但是master-master ring可能会使得数据库的写请求量过大,影响读请求的服务
分区 vs 联邦 vs shard
from: http://lethargy.org/~jesus/archives/95-Partitioning-vs.-Federation-vs.-Sharding.html
A partition is a structure that divides a space into two parts.
分区是指将一个数据结构在空间上存储为多个部分;
A federation is a set of things (usually states or regions) that together compose a
centralized unit but each individually maintains some aspect of autonomy.
联邦指的是若干个数据库各自根据需要保存不同的信息,并组成统一的对外平台。每个存储单位
是独立的。
Federation 顾名思义,更多的是不同类型数据的部署方案,比如付费用户和非付费用户的存储
集群;
(more…)