大规模Web服务开发技术


--
大规模Web服务开发技术

大规模Web服务开发技术 

[]伊藤直也, 田中慎司编著

李剑 

ISBN 978-7-121-13884-3  

20117月出版

定价:59.00

16

356

Hatena 是日本最大的Web 服务提供商之一,它提供的服务包括关键字(类似于维基百科)、博客、相册等。本书的内容主要来自Hatena 为学生们举行的暑期实习的课程,内容涵盖广泛,介绍了性能优化、分布式、算法、系统架构等各个方面,甚至还介绍了硬件的经济成本,是运维工程师们必不可少的参考书。书中还包括几个算法实习课题,介绍了压缩算法、全文搜索等算法的实现方法,对于打算靠Web 创业的人不失为一本很不错的参考书。

译者序

去年 8 月份,fcicq 向我推荐了《大规模Web 服务开发技术》这本书。当时这本书刚刚出版,在日本着实火了一段时间。后来到网上一查,发现我以前在日本的同事也写了一篇博客推荐这本书,看样子这本书已成为Web 技术人员人手必备的参考读物了。

后来博文视点的策划编辑张春雨找到我,希望我翻译这本书。我在日本工作期间,就对日本的IT 技术十分佩服,尤其是Web 相关技术,很多知名的技术大牛,如伊藤直也、小饲弹等

都写过许多深入研究技术的文章,见解也相当独到。而在日本的书店里,Web 技术的书籍也是琳琅满目,其中不乏珍品。因此我很想找个机会把日本的技术书籍带到中国来。于是,与张编辑一拍即合,当即接下了这本书的翻译任务。

正如这本书的前言里所说,这本书的内容主要来自Hatena株式会为学生们举行的暑期实习课程,因此其形式也是以讲义为主,风格和一般的技术读物略有不同。其内容涵盖范围也很广,从性能优化、分布式,到算法、系统架构,甚至还介绍了硬件的经济成本。最吸引人的就是书中的几个实习课题,介绍了压缩算法、全文搜索等算法的实现方法。

在翻译该书时,我想到了以前做网站开发时的几件事。

第一件就是性能优化的重要性。当时我们开发了一个类似于RSS 阅读器的网站,其中有个推荐功能,可以根据访问量、收藏人数等对文章进行社会化推荐。由于计算量很大,因此只能写成批处理放到夜间执行,但执行效率实在不堪忍受——40 万的数据量,计算一次就要3 个小时。后来我们对SQL 语句进行了优化,使得计算时间从3 小时一下子减少到了20 分钟。

第二件就是维护工作的辛苦程度。网站对 Web 服务器采用了分布式,将请求分散到32 台服务器上。每次版本更新,都要制定严密的更新计划,先改变负载均衡器设置,然后停掉一半服务器,更新代码,再然后逐台测试;之后再切换负载均衡器以更新另一半服务器并测试。更新都是在深夜进行的,每次更新都会持续到凌晨3 点多才能下班。

第三件就是不可知事件的应对策略。这本书里提到了Yahoo!攻击,这正是我们当年亲身经历过的。当时晚上9 点多,我们突然收到了大量报警邮件,报告相册服务的负载过高。一看服务器已经几乎无法访问了。调查之后发现,一名博主引用了相册中的图片,而这篇文章又被Yahoo!上的一篇新闻引用。于是来自Yahoo!的巨大流量涌入我们的相册服务器,导致服务中止。后来,我们改变了相册服务的架构,并增加了缓存机制,以避免这类事件再次发生。

对于运维高手来说,解决这些问题应该是轻车熟路了,但当时我们的团队没有类似的经验,只能自己慢慢摸索解决方法。而Hatena 株式会的技术专家们将他们的运维经验写成了书,使我们有幸分享这些宝贵的经验和知识。如果当时我们有这样一本书,这几个问题也就迎刃而解了。愿这本书能对广大网站运维人员(特别是初涉该领域的新手们)有所帮助。

2011 2 27

自己开发的 Web 服务,以后规模增大时系统能否承受得起?从事Web 开发的诸位中很多人都有这个顾虑吧,或者是系统每天都会陷入困境,如何才能打破这种状况?面对成长起来的Web 服务,整日愁眉苦脸的人一定存在吧。

我也有过完全相同的经历。

Hatena 网站,月访问人次1500 万,而我们参与了规模如此庞大的系统的开发和运营。1000 台服务器分担负载,100 多万用户不停地发表博客或收藏社会化书签,数据量每天都在激增,服务器资源频频告急。技术人员为了上GB、上TB 的数据量绞尽脑汁。即便如此,流量的波涛也从未平息过。

曾几何时,Hatena 的团队尚未成熟,面对规模日益增大的系统束手无策。庞大的数据和巨大的流量涌来,服务器宕机、服务停止。赶紧深夜跑过去重启服务器,觉得总算能稳定了,清晨回家之后,发现服务器又宕机了,这种事情也曾面对过。

怎样才能制服大规模服务这头野兽?本书凝聚了 Hatena 的技术人员在反复试验中得到的技术和诀窍——即大规模服务技术的地图和指南。

本书是开发、运营大规模服务的技术者的入门书。Web 服务在不断成长,当它的数据规模变大,处理起来也就不再易如反掌了,此时,怎样做才是正确的?为了避免系统宕机,写代码时应该注意什么?设计高可扩展性(scalability)的系统时应该记住哪些要点?这些都是本书的内容。

Hatena 每年夏天都举办面向学生的、以就业体验为目的的实习活动(Hatena Summer Intern)。这些实习活动会让学生参与到Hatena 的系统开发中。我们把开发经验很少的学生们与正式员工同样看待,让他们获得大规模系统开发的成功经验,这就是Hatena 之道。那么,我们希望学生们在开发之前知道什么呢?正是我们历经坎坷学到的大规模服务的开发和运维的知识。

通过实习计划,Hatena 的大规模服务技术的培训方法也有了体系。本书就是以实习课程为基础,试图来说明大规模服务技术。

本书的内容从操作系统和计算机的原理开始,介绍数据库的分布式方法、实用算法在系统中的应用、能支撑海量数据的搜索引擎的原理,以及统观系统全局的基础设施设计的知识等多个方面。

这是拥有 1500 万用户的Hatena 才能传达的真实的、实践性的技术和现场感。缺乏经验的学生们在短短几天的培训中学到大规模服务开发所需的知识,在本书中得以系统化。本书融汇了这些知识,努力做到妙趣横生、百读不厌,并让读者学到真正的知识。

希望本书能成为从事 Web 服务开发的所有工程师们的得力助手和工具。

2010 6

Hatena 株式会CTO 伊藤直也

你可能感兴趣的:(Web)