-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

互聯網創業核心技術:構建可伸縮的web應用

( 簡體 字)
作者:李智慧,何坤類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社互聯網創業核心技術:構建可伸縮的web應用 3dWoo書號: 45505
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:10/1/2016
頁數:324
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121301124
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推薦序
這是一個最好的時代,我們趕上了互聯網的大潮;這也是一個最壞的時代,我們習慣的舊秩序被互聯網打破了;這是一個創新的時代,任何奇思妙想都有被廣大人民接受成為現實的可能;這還是一個變革的時代,在“互聯網+”的春風中,線下的思維轉換為線上的思維。
這一切的推手,就是互聯網。互聯網催生了一種新型的生活方式,也催生了適應于互聯網的一種新的人群。連接人群和線上生活的紐帶就是一個一個的互聯網及移動互聯網的應用。作為應用的典型IT 形態,互聯網應用經歷了獨占型應用,SOA 應用,在云時代就是云原生(Cloud Native)的應用。構建一個良好的可伸縮的應用,不僅僅是一個優秀工程師的職責,同時也代表了對一種生活方式的認可。在這種應用里,我們看到了電商應用的身影:任何一個電商購物狂歡節,背后是工程師制作的良好的彈性應用面對使用量波峰波谷的挑戰。
除了電商應用,任何一個To C 的APP 都會面臨同樣的挑戰,要承載捉摸不定的業務量及快速推進版本的演進。作為引來的昂貴的流量,需要良好的后臺承接并及時處理,推動良好的客戶體驗及帶來真實的業務發展,從而幫助C 端的創業者快速驗證自己的商業模式并快速迭代。
本書就是這樣一本很好的最佳實踐。本書作者將自己的成功經驗總結歸納出來,對彈性架構的概念,軟件設計的原則,以及如何構建一個優質的互聯網應用,進行了深入講解。
作為一位互聯網電商的資深從業者,書中很多概念與電商行業的最佳實踐不謀而合,有些觀點對電商網站的構建是非常好的建設性意見。
本書的譯者李智慧作為互聯網老兵,對互聯網應用網站的架構設計有豐富的經驗;同時作為大數據行業的資深從業者,對數據運營的觀念理解得精準到位,結合互聯網網站設計及數據運營的思路,推動了本書翻譯的成稿,不僅對原著內容的理解到位,同時對原著細節的拔高有神來之筆。
本書適合互聯網技術從業人員閱讀,是電商行業、移動互聯網行業中不可多得的好書。
楊海明
京東云平臺事業部總經理

譯者序
每個互聯網創業者的心中都有一個獨角獸或者納斯達克的夢想,不過不論夢想有多么遠大,都需要從第一行代碼開始,一步一步地構建系統。那么,第一行代碼和最后服務數億用戶的系統之間是什么關系呢?一個最初由兩三個工程師開發的產品雛形,如何經過逐漸地重構、演化、迭代、伸縮,最終成為一個巨無霸的系統?
本書面向互聯網創業公司工程師,講述構建可伸縮Web 系統的核心概念、關鍵原則和主要方法。本書第1~5 章和第9 章由李智慧翻譯,第6~8 章由何坤翻譯。第1 章和第2章講述可伸縮系統的核心概念與軟件基本設計原則。我強烈建議你認真閱讀這兩章,這部分內容包含了開發一個可伸縮的Web 系統甚至開發一個良好軟件的基本原理和設計原則,是其他一切技巧和方法的元規則。第3~8 章講述了構建可伸縮Web 應用的主要方法和工具,這幾章的內容相對比較獨立,你可以挑選自己感興趣的章節閱讀,也可以在工作中遇到問題時快速瀏覽,尋找方法和靈感。第9 章講述可伸縮的系統運維及可伸縮的個人和團隊,如果你正處在一個高速發展的創業團隊中,如果你對從技術走向管理感興趣,我相信你可以從本章的內容中收獲多多。
誠如書中一再強調,可伸縮系統的設計是一種權衡的藝術,必須對每一種方案的優缺點都了如指掌,才能在面對實際問題時做出最合適的選擇。高并發可伸縮系統的設計看似紛繁復雜龐大無比,實際上關鍵的核心技術也就那么幾樣,如果深入掌握了這些關鍵技術,就抓住了可伸縮系統設計的核心。這幾樣關鍵技術,可能需要在不同場景,從不同視角反復思考琢磨,才能真正掌握。我曾經在《大型網站技術架構:核心原理與案例分析》一書中表達過這個觀點,如果讀過《大型網站技術架構:核心原理與案例分析》,那么推薦你閱讀本書,從創業公司工程師的視角再次審視分布式網站設計的方方面面,掌握可伸縮Web 應用設計權衡的藝術。
雖然羅馬不是一天建成的,但是一名優秀的工程師,在放下建設羅馬的第一塊磚的時候,心中就已經有了整個羅馬建成后輝煌的場景,以及整個建造歷程。他運籌帷幄、胸有成竹,每一次的快速發展他都已經提前做好準備,每一次的劇烈變化他都有應對的方案。因為對艱難困苦了然于心,所以倍加從容。
本書就是這樣一本書,它描述了一個愿景,當你的公司成為獨角獸公司的時候,你的系統會長什么樣子;它展現了一個歷程,你該如何一步一步地將你的系統伸縮成一個巨無霸系統;它提供了一組工具和方法,你如何利用這些工具方法改造你的系統實現你的夢想。
星空就在你的頭頂,路就在你的腳下,夢想就在你的前方,帶上這本書,我們出發吧!
李智慧

引言
近些年來,伴隨著技術的進步,越來越多的Web 應用系統需要存儲、轉化、處理越來越多的數據,而這必將要求工程師們掌握構建可伸縮的Web 系統的能力。
當我了解到大多數工程師都缺乏這種構建可伸縮Web 系統的能力時,我覺得有必要寫一本與此有關的書。一方面,目前市面上缺乏相關的著作;另一方面,那些在小公司工作的工程師們也缺乏必要的環境去學習可伸縮架構的設計方法。因此,本書致力于講解軟件架構與基礎設施如何協同工作,并最終實現系統的可伸縮性。
希望本書可以成為開啟讀者可伸縮架構設計之旅的一個里程碑。書中既給出了可伸縮架構設計的整體概覽視圖,同時也深入探討了一些重要的技術點并給出了一些最佳實踐建議。然而,書中并沒有對每一個技術細節都深入闡述,而是盡可能地為讀者呈現那些必要的概念、基本的規則,以及有意義的實例。
第1 章:核心概念
作為本書第1 章,本章主要介紹可伸縮性架構的一些核心概念及關于本書的一個概覽性描述。本章通過描述可伸縮Web 系統演化的不同階段介紹相關的概念,同時,也會涉及一些基礎設施與可伸縮Web 系統架構方面的整體描述。
第2 章:軟件設計原則
本章主要探討一些構建彈性可伸縮系統的設計原則。首先是那些最基礎的概念,比如簡化與解耦;其次是一些面向對象的設計原則,比如單一職責原則和依賴注入原則;最后是那些與可伸縮性直接相關的設計概念,比如功能分割、數據分區,以及自我恢復。
第3 章:構建前端層
本章內容主要集中在直接與客戶端軟件(比如Web 瀏覽器及移動APP)交互的那部分基礎設施上。本章會深入解釋前端管理狀態的幾種方式,以及構建可伸縮前端的幾種重要組件,比如負載均衡、代理、內容分發網絡(CDN);之后會探討自動化伸縮及幾種部署場景。
第4 章:Web 服務
本章主要探討幾種不同的Web 服務架構的優缺點。解釋Web 服務設計原則并深入細節講解基于REST-ful API 的伸縮性技術。
第5 章:數據存儲層
本章會解釋數據層伸縮性技術的若干核心要點。除了涉及MySQL 這一類關系數據庫相關的技術外,還會花大量篇幅探討Cassandra 這類NoSQL 數據存儲技術。本章會穿插講解一些技術細節,比如數據分區(也常稱作分片技術)、數據復制,以及最終一致性。比較幾種不同的數據存儲層拓撲結構及與此有關的技術挑戰。
第6 章:緩存
本章內容主要著眼于緩存,緩存是一種改善Web 系統伸縮性和性能的關鍵性手段。主要講解基于HTTP 的幾種不同的緩存技術,以及HTTP 緩存的伸縮性技術。此外,還會闡述對象緩存技術及其常用的伸縮性技術。最后,花一些篇幅探討緩存最佳實踐,以幫助讀者在使用緩存時做出更好的決策。
第7 章:異步處理
本章會講解有關消息與事件驅動架構方面的主題。首先,探討異步處理的概念與優點及如何利用消息代理改善Web 應用的可伸縮性;其次,重點論述異步系統的挑戰與使用中可能出現的陷阱;最后,簡要比較幾種主流的消息平臺以幫助讀者在具體工作中做出最佳選擇。
第8 章:數據搜索
本章主要討論數據搜索方面的有關問題。數據搜索與數據存儲密切相關,隨著數據集的快速增長,優化數據搜索與訪問方面的技術變得越來越重要。首先,會講解不同類型的索引是如何工作的;其次,會花一些篇幅描述數據建模如何有助于改善伸縮性,以及如何在諸如Cassandra 之類的NoSQL 數據存儲系統中考慮數據建模。最后,做一些搜索引擎方面的介紹及講述相關技術如何應用于Web 應用系統。
第9 章:伸縮性的其他維度
這是本書的最后一章,闡述一些擴展讀者自身工作效率的有關概念,以方便讀者更好地實現自我管理與團隊成長。首先,強調自動化作為一項關鍵技術在提高工程效率方面的重要作用,探討有關自動化測試、部署、監控與報警方面的話題。其次,分享一些項目管理方面的個人經驗與觀察,這些技能將幫助讀者在創業中更好地生存下來。最后,對成長中的敏捷團隊可能遇到的挑戰做一些反思。
目標讀者
本書的主要目標讀者是軟件工程師、技術經理、DevOps,以及系統工程師。對于在校學生而言也許會有一定難度,不過對于中等水平甚至是初級工程師而言,絕大多數內容都是比較容易理解的。
本書假設讀者對于如何利用相關技術構建一個Web 應用系統有一個基本的了解。不過閱讀本書不需要擁有任何特定的編程技能,諸如Java、PHP、JavaScript、C#或者Ruby,因為伸縮性是Web 應用開發中一個通用的挑戰,與具體語言無關。另外,本書也假設讀者了解HTTP 協議是如何工作的,以及對IP 網絡、HTML、C/S(客戶端/服務器)軟件開發等有一個基本的概念。
內容簡介:

《大型網站技術架構:核心原理與案例分析》作者李智慧的翻譯力作!讀透一本好書,少走十年彎路。對于創業人來說,在瞬息萬變的移動互聯網世界求生存,寸秒就是寸金!如何在創業之初,就構建好適合業務長遠發展的技術架構:以不變應萬變、以可伸縮性對抗變化莫測的業務需求,為自己的發展贏得時間、為產品創造優秀的用戶體驗?本書針對此痛點,給出了適切中肯的建議。作者深入闡述了設計原則、前端層、Web服務、數據存儲層、緩存、異步處理等核心概念與技術,針對可能發生的問題一一剖析,為讀者勾勒出了簡明清晰的技術框架圖。相信《互聯網創業核心技術:構建可伸縮的Web應用》 可以成為開啟讀者可伸縮架構設計之旅的一個里程碑。閱讀本書并不需要擁有任何特定的編程技能,諸如Java、PHP、JavaScript、C#或者Ruby,因為伸縮性是Web應用開發中一個通用的挑戰,與具體語言無關。

目錄:

1 核心概念 1
什么是伸縮性 ............ 2
從單一服務器到全球用戶的Web 架構演化 ....... 4
單一服務器 ............ 5
使用更強的服務器:垂直伸縮 ........ 6
服務分離 ............ 10
內容分發網絡:靜態內容的伸縮性 ...... 12
分散訪問流量:水平伸縮 ........ 13
服務全球用戶的伸縮性架構 ........ 16
數據中心基礎設施架構概覽 ........ 18
前端 ............ 19
Web 應用層 .......... 20
Web 服務層 .......... 20
附加組件 ............ 21
數據持久層 .......... 21
數據中心基礎架構 .......... 22
應用架構概覽 ............ 23
前端 ............ 24
Web 服務 ............ 25
支撐技術 ............ 29
小結 .............. 30
2 軟件設計原則 31
簡單 .............. 31
隱藏復雜與構建抽象 .......... 32
避免過度設計 .......... 33
嘗試測試驅動開發 .......... 34
從軟件設計的簡化范例中學習 ........ 35
低耦合 ............ 36
促進低耦合 .......... 37
避免不必要的耦合 .......... 39
低耦合范式 .......... 40
不要重復自己(DRY) .......... 41
復制粘貼代碼 .......... 42
基于約定編程 ............ 43
畫架構圖 ............ 46
用例圖 ............ 49
類圖 ............ 50
模塊圖 ............ 51
單一職責 ............ 52
改善單一職責 .......... 52
單一職責的例子 .......... 53
開閉原則 ............ 53
依賴注入 ............ 55
控制反轉(IOC) ........... 57
為伸縮而設計 ............ 59
增加副本 ............ 60
功能分割 ............ 62
數據分片 ............ 63
自愈設計 ............ 65
小結 .............. 67
3 構建前端層 69
狀態管理 ............ 70
管理HTTP 會話 .......... 73
管理文件 ............ 77
管理其他類型的狀態 .......... 80
可伸縮的前端組件 .......... 83
DNS ............ 84
負載均衡器 .......... 85
Web 服務器 .......... 92
緩存 ............ 93
自動伸縮 ............ 94
部署案例 ............ 96
AWS 場景 ............ 97
私有數據中心 .......... 98
小結 ............ 101
4 Web 服務 102
Web 服務設計............ 102
Web 服務作為一種備用表示層 ........ 103
API 優先方式 .......... 105
務實的方式 .......... 107
Web 服務類型............ 108
以功能為中心的服務 ........ 109
以資源為中心的服務 ........ 111
伸縮REST Web 服務 .......... 115
保持服務無狀態 .......... 115
緩存服務響應 .......... 121
功能分割 ............ 124
小結 ............ 127
5 數據存儲層 129
MySQL 伸縮性 .......... 130
復制 ............ 130
數據分區(分片) .......... 142
NoSQL 伸縮性 .......... 157
最終一致性 .......... 160
快速恢復增加可用性 ........ 164
Cassandra 拓撲結構 .......... 166
小結 ............ 170
6 緩存 171
緩存命中率 ............ 171
基于HTTP 的緩存 .......... 173
HTTP 緩存頭 ........... 174
HTTP 緩存技術類型 ......... 179
伸縮HTTP 緩存 .......... 185
緩存應用對象 ............ 188
對象緩存的一般類型 ........ 189
伸縮對象緩存 .......... 194
緩存的經驗法則 .......... 198
緩存整個調用棧 .......... 198
用戶間緩存重用 .......... 199
從哪兒開始使用緩存? ........ 201
緩存失效的困難 .......... 201
小結 ............ 203
7 異步處理 204
核心概念 ............ 204
同步處理的例子 .......... 205
異步處理的例子 .......... 208
購物類比 ............ 211
消息隊列 ............ 213
消息生產者 .......... 214
消息代理 ............ 215
消息消費者 .......... 216
消息協議 ............ 220
消息基礎設施 .......... 221
消息隊列的好處 .......... 224
實現異步處理 .......... 225
更好的伸縮性 .......... 226
平衡流量峰值 .......... 227
失敗隔離和自我修復 ........ 228
解耦 ............ 229
消息隊列相關的挑戰 .......... 230
消息無序 ............ 230
消息重新入隊列 .......... 233
競態條件可能性增大 ........ 233
復雜度風險 .......... 234
消息隊列有關的反模式 .......... 235
將消息隊列當作TCP 套接字 ....... 235
將消息隊列當作數據庫 ........ 235
耦合消息生產者和消費者 ........ 235
缺少壞消息處理 .......... 236
消息平臺快速比較與選擇 ........ 237
亞馬遜簡單隊列服務 ........ 237
RabbitMQ ........... 240
ActiveMQ ........... 242
最后的比較說明 .......... 243
事件驅動架構介紹 .......... 245
請求/響應交互 ........... 246
直接隊列交互 .......... 247
事件驅動交互 .......... 247
小結 ............ 250
8 數據搜索 252
索引介紹 ............ 252
數據建模 ............ 260
NoSQL 數據建模 .......... 260
寬列數據存儲的例子 ........ 264
搜索引擎 ............ 271
搜索引擎介紹 .......... 272
使用專用搜索引擎 .......... 274
小結 ............ 275
9 伸縮性的其他維度 277
自動化實現生產力可伸縮 ........ 278
測試 ............ 278
構建與部署 .......... 280
監控與報警 .......... 285
日志聚合 ............ 289
個人可伸縮 ............ 291
加班不是一種伸縮性方案 ........ 291
自我管理 ............ 293
伸縮敏捷團隊 ............ 300
增加人手 ............ 300
流程與創新 .......... 301
團結的文化 .......... 302
小結 ............ 303
A 推薦閱讀 304
序: