大規模Web服務開發技術

2021-05-27 12:25:21 字數 3054 閱讀 3731

大規模web服務開發技術

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

李劍 譯

isbn 978-7-121-13884-3

2023年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服務開發技術

大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內 容 簡 介 hatena是日本最大的web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要...

大規模Web服務開發技術

大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內容簡介 hatena 是日本最大的 web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要來...

《大規模web服務開發技術》筆記

2012 02 02 15 06 by teloon,716 visits,收藏,編輯 前段時間趁空把 大規模 web服務開發技術 這本書看完了,今天用一下午時間重新翻了一遍,把其中的要點記了下來,權當複習和備忘。由於自己對資料壓縮 全文檢索等還算比較熟,所以筆記內容主要涉及前5章內容,後面的零星記...