大规模Web服务开发技术 

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

李剑 译

ISBN 978-7-121-13884-3  

2011年7月出版

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

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

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

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

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

2010 年6月

Hatena 株式会CTO伊藤直也

大规模Web服务开发技术相关推荐

  1. 《大规模Web服务开发技术》

    Web 服务开发的心灵鸡汤 周末去上海陪妹子的两天在路途上看完了这本<大规模 Web 服务开发技术>. <大规模 Web 服务开发技术>是日本的 Hetena 团队以夏天举办的 ...

  2. 《大规模web服务开发技术》阅读笔记

    第5课 大规模数据处理的难点 -- 内存和磁盘 单台Linux服务器瓶颈分析 1.查看平均负载 用top.uptime命令查看平均负载: 1.平均负载很低,系统吞吐量无法提升 ---------> ...

  3. 大规模web服务开发技能

    2019独角兽企业重金招聘Python工程师标准>>> 第5课 大规模数据处理的难点 -- 内存和磁盘 单台Linux服务器瓶颈分析 1.查看平均负载 用top.uptime命令查看 ...

  4. html表单实验结论,web前端开发技术实验报告-实验五

    1.长 春 大 学 20 15 2016学年第 二 学期Web前端开发技术 课程实 验 报 告学 院: 计算机科学技术专 业: 软件工程 班 级: 软件14402 学 号: 姓 名: 王 悦 任课教师 ...

  5. Web应用开发技术笔记

    Web应用开发技术笔记 第一章 1.1 WEB技术概述 Web的三要素 静态网页 动态网页(Applet) 动态网页 动态Web的发展 静态网页动态网页的比较 1.2 Web应用程序的工作原理 C/S ...

  6. 山东大学服务开发技术期末复习

    山东大学服务开发技术期末复习 课后习题 section 1 1.1 请简要论述为什么引入软件服务?1.2 简述 W3C 定义的 Web 服务技术栈主要组成.1.3 简述面向服务架构的三个角色和三个操作 ...

  7. 《Web前端开发技术(HTML+CSS+JavaScript)》题库附答案

    什么是Web技术? 答:Web即全球广域网(World Wide Web),也称为万维网,它是一种基于超文本和HTTP的.全球性的.动态交互的.跨平台的分布式图形信息系统.它是建立在Internet上 ...

  8. 2021年web前端开发视频教程,自学web前端开发技术,全套web前端学习路线笔记

    2021年web前端开发视频教程,自学web前端开发技术,全套web前端学习路线笔记 [导读]:初学web前端的小伙伴经常会遇到的问题,1.没方法 2.没资源 3.没经验,不知道从何开始 ,代码哥(D ...

  9. Web第五讲:Web前端开发技术概述

    开发环境设置 安装vs-code,并安装前端开发工程师常用的插件. vscode-icon:文件图标 Class autocomplete for HTML:自动补全html代码 beautify:格 ...

  10. Web应用开发技术-CSS

    Web应用开发技术 HTML元素属性分类: 特有属性 全局属性(所有HTML都可以使用的属性,如id等) 事件属性 CSS Cascading Style Sheet,层叠样式表,一种样式表语言,其作 ...

最新文章

  1. 红包规则_“科普闯关100%夺红包”游戏规则升级了!速速来看!
  2. 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...
  3. 周休2.5天是一种奢望?互联网人自愿加班成常态?
  4. linux内核管理pagecache的一丢丢知识整理
  5. axios (get post请求、头部参数添加)傻瓜式入门axios
  6. 重命名myclipse中web项目名称的过程
  7. 遍历repeater中的控件的几种方式
  8. Hibernate多对多映射 - 连接表
  9. 人只会看到他想看的,不想看的视而不见
  10. 移动平均法,滑动平均模型法(Moving average,MA)
  11. Eclipse hibernate Tools下载
  12. linux 小度 驱动_小度 WiFi 与 Windows 和 Linux
  13. 上海市第三届上海市青少年算法竞赛(小学组)线上同步赛 数洞洞
  14. ACL20 - Don‘t stop pretraining: adapt language models to domains and tasks
  15. 牛顿法与拟牛顿法求解比较
  16. openlayer+虚线、实线
  17. MISRA-C 2019
  18. Qt探索之旅(五)简单实现Mynotepad
  19. abaqus Tie python脚本报错 原因令人震惊
  20. (荐)电子方面不错的论坛 推荐几个电子方面不错的论坛

热门文章

  1. 转载--页面间大量数据参数传递
  2. 9.2NOIP模拟题
  3. 两款工控控件对比评测:Iocomp和ProEssentials
  4. hdoj--5620--KK's Steel(斐波那契数)
  5. B/S----验证方式及练习
  6. 个人隐私保护2:用BitLocker创建一块需要密码才能进入的区域
  7. Linux和Win文件互传及vim的使用
  8. JS数据结构第五篇 --- 二叉树和二叉查找树
  9. 正反向数据库及生成设计报告
  10. robotframework--登录接口,post传递多个参数、及获取content中指定属性的值(5)