-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號
詳細書籍分類

大型分布式網站架構設計與實踐

( 簡體 字)
作者:陳康賢類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社大型分布式網站架構設計與實踐 3dWoo書號: 39363
詢問書籍請說出此書號!

缺書
NT售價: 395

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

譯者序:

前言:


大型分布式網站技術全貌

2008年,淘寶網隨著訪問量/數據量的巨增,以及開發人員的增長,原有的架構體系已經無法支撐,于是在那一年淘寶網將系統改造為了一個大型分布式的網站。作者目前就職于阿里集團,清晰地看到了目前淘寶這個大型分布式網站的架構體系,這個架構體系其實是非常多方面的技術的融合,要掌握好最重要的首先是看清全貌,但這也是最難的。本書向大家展示了一個大型分布式網站需要的技術的全貌。
翻看各大型網站的架構演變過程,會發現其中有一個顯著的共同點是在某個階段網站的架構體系改造為服務化的體系,也就是常說的SOA,SOA系統之間以服務的方式來進行交互,這樣就保證了交互的標準性,對于一個龐大的多人開發的網站而言這至關重要,所以在實現SOA時重要的第一點是實現基本的服務方式的請求/響應,除了這點外,對于訪問量巨大的網站而言,主要都是采用可水平伸縮的集群方式來支撐巨大的訪問量,這會涉及在服務交互時需要做負載均衡的處理,較為簡單的一種方式是采用硬件負載均衡設備,這種方式一方面會增加不少成本,另一方面會導致單點的巨大風險,因此目前各大網站多數采用軟件負載的方式來實現服務的交互,如何去實現SOA是大型分布式網站的必備基礎技能。
基于服務化主要是為了解決網站多元化、開發人員增加及訪問量增加帶來的水平伸縮問題,但數據量增長會帶來更多復雜的問題,大型網站都是嚴重依賴緩存來提升性能的,數據量增長帶來的效應就是單機會無法緩存所有的數據,需要引入分布式的緩存;數據量增長對于持久型的存儲而言就更為復雜,通常會需要采用分庫分表、引入NoSQL等方式來解決,對于帶來的模糊查詢等需求就更加復雜了,而現在的大型網站多數都有很多用戶產生的數據,這也就導致了隨著訪問量的增長,多數情況下用戶產生的數據量也會暴漲,因此數據量增長帶來的這些問題也是必須學會如何去解決的。
近幾年以來網站的安全形勢越來越嚴峻,這里有一個關鍵的原因是多數開發在安全方面了解的知識比較少,導致開發的系統在安全上會非常欠缺考慮,但其實對于一個網站而言,安全是基本,尤其是電子商務類網站,一旦出現安全問題,很容易喪失難得建立起來的信任,因此在開發一個大型網站的時候安全的意識非常重要。
網站的穩定性是衡量一個網站的重要指標,對于一個大型網站而言,網站一兩個小時不可用會引起嚴重的公眾事件,如何去保障一個龐大的網站的穩定性,涉及不少技術知識。要保障網站的穩定性,首先最重要的是監控,要清楚地知道網站目前的運行狀況、有問題的點的狀況等,沒有監控的網站就像是一輛沒有油表的車;監控主要是幫助發現問題,在出現問題后最重要的不是去找到bug并修復,而是如何有效快速地恢復,例如最典型的有效手段是優雅降級(也就是James Hamilton那篇著名的《On Designing and Deploying Internet-Scale Services》中的Gracefully Degrade);在快速恢復了后,則需要定位出造成問題的根本原因,這需要很多經驗、扎實的基本功和對各類排查工具的掌握。
對于一個大型網站而言,最寶貴的部分通常是積累下來的數據,怎樣用上這些數據來提升幫助業務,除了對商業玩法的掌握外,技術上的難度也非常高,大數據技術也是近幾年的熱門話題,離線計算、實時流式計算等,都是現在的火熱話題,涉及的技術點也非常多,對于一個大型網站的技術掌控者而言,這也是需要了解的知識點。
對于一個大型網站的架構師而言,最重要的是掌控一個網站的技術發展過程,很好地去控制每個階段需要做什么,并確保每個階段需要的技術布局是完善的,避免有空白點,相信本書涵蓋的方方面面的知識點會給讀者提供有效的幫助。


林昊(http://hellojava.info)
阿里巴巴集團資深技術專家
寫于阿里巴巴西溪園區
2014年8月


前  言


在大型網站架構的演變過程中,集中式的架構設計出于對系統的可擴展性、可維護性以及成本等多方面因素的考慮,逐漸被放棄,轉而采用分布式的架構設計。分布式架構的核心思想是采用大量廉價的PC Server,構建一個低成本、高可用、高可擴展、高吞吐的集群系統,以支撐海量的用戶訪問和數據存儲,理論上具備無限的擴展能力。分布式系統的設計,是一門復雜的學問,它涉及到通信協議、遠程調用,服務治理,系統安全、存儲、搜索、監控、穩定性保障、性能優化、數據分析、數據挖掘等各個領域,對任何一個領域的深入挖掘,都能夠編寫一本篇幅不亞于本書的專門書籍。本書結合作者在阿里巴巴及淘寶網的實際工作經歷,重點介紹大型分布式系統的架構設計,同時,為避免過度專注于理論而使得內容顯得空洞,作者穿插介紹了很多實踐的案例,盡量讓每一個關鍵的技術點都落到實處,相信能夠幫助讀者更好地理解本書的內容。
內容大綱
全書共5章,章與章之間幾乎是相互獨立的,沒有必然的前后依賴關系,因此,讀者可以從任何一個感興趣的專題開始閱讀,但是,每一章的各個小節之間的內容是相互關聯的,因此,最好按照原文的先后順序閱讀。
第1章主要介紹企業內部SOA(Service Oriented Architecture,即面向服務的體系結構)架構的實現,包括HTTP協議的工作原理,基于TCP協議和基于HTTP協議的RPC實現,如何實現服務的路由和負載均衡,HTTP服務網關的架構。
第2章主要介紹如何保障互聯網通信的安全性,包括一些常見攻擊手段的介紹;常見的安全算法,如數字摘要、對稱加密、非對稱加密、數字簽名、數字證書的原理和使用;常用通信認證方式,包括摘要認證、簽名認證,以及基于HTTPS協議的安全通信;另外還介紹了通過OAuth協議的授權過程。
第3章介紹一些分布式系統所依賴的基礎設施,包括分布式緩存,持久化存儲。持久化存儲又涵蓋了傳統的關系型數據庫MySQL,以及近年來開始流行NOSQL數據庫如HBase、Redis,消息系統及垂直化搜索引擎等。
第4章介紹如何保障系統運行的穩定性,包括在線日志分析、集群監控、流量控制、性能優化,以及常用的Java應用故障排查工具和典型案例。
第5章介紹如何對海量數據進行分析,包括數據的采集、離線數據分析、流式數據分析、不同數據源間的數據同步和數據報表等。
本書并不假設讀者在Java領域有很深的技術水平,但是,結合作者本人的工作經驗和使用習慣,書中的大部分案例代碼均采用Java來編寫,并且運行在Linux環境之上,因此,讀者最好對Java環境下的編程有一定的了解,并且熟悉Linux環境下的基本操作,以便能夠更加順利地閱讀本書。
致謝
首先,要感謝我的家人,特別是我的妻子,在我占用大量周末、休假的時間進行寫作的時候,能夠給予極大的寬容、支持和理解,并對我悉心照顧且承擔起了全部的家務,讓我能夠全身心地投入到寫作之中,而無須操心一些家庭瑣事,沒有你的支持和鼓勵,這本書是無法完成的。
同時,要感謝阿里巴巴及淘寶網,給我提供了合適的環境和平臺,使自己的技能能夠得以施展,并且,身處在一群業界的技術大牛中間,也得到了很多學習和成長的機會。,另外,還要感謝我的主管飛悅對于寫作開明的態度,以及一直以來的鼓勵與支持,并在日常的工作中給予我的很多幫助。
最后,還要感謝博文視點的編輯們,本書能夠這么快出版,離不開他們的敬業精神和一絲不茍的工作態度。
感悟
一年多以前,在接到編輯約稿即將開始動筆之前,自己曾信心滿滿地認為,應該能夠比較順利地完成這本書,因為寫的內容自己都比較熟悉,而且平時工作當中也有一些筆記積累,不是從零開始的。但當真正開始寫了以后才知道,理解領悟和用文字表達出來完全是兩個層面的事情,日常工作中一些很普遍很常見的設計思路,可能是由一次次失敗和挫折得到的經驗教訓演變而來。很多時候我們只知道how,而忽略了what和why,要解釋清楚what、why、how,甚至是why not,并沒有想象中的那么容易。當然,通過寫作的過程,自己也將這些知識點從頭到尾梳理了一遍,對這些知識的認識和理解也更加深入和全面。每次重新回過頭來審閱書稿時,都會覺得某些知識點講述得還不夠透徹,需要進行補充,抑或是感覺對某些知識點的敘述不夠清晰和有條理,還能夠有更好的表述方式。但是,書不能一直寫下去,在本書完稿之時,自己并沒有想象中那樣的興奮或者放松,寫作時的那種“戰戰兢兢,如履薄冰”的感覺,依然縈繞在心頭,每一次落筆,都擔心會不會因為自己的疏忽或者理解上的偏差,從而誤導讀者。由于時間的因素和寫作水平的限制,書中難免會有錯誤和疏漏之處,懇請讀者批評和指正。如有任何問題或者是建議,也可以通過如下方式與作者聯系:

博客:chenkangxian.iteye.com
微博:http://weibo.com/u/2322720070


陳康賢
2014年5月于杭州
內容簡介:

本書主要介紹了大型分布式網站架構所涉及的一些技術細節,包括SOA架構的實現、互聯網安全架構、構建分布式網站所依賴的基礎設施、系統穩定性保障和海量數據分析等內容;深入地講述了大型分布式網站架構設計的核心原理,并通過一些架構設計的典型案例,幫助讀者了解大型分布式網站設計的一些常見場景及遇到的問題。

目錄:

第1章 面向服務的體系架構(SOA) 1
本章主要介紹和解決以下問題,這些也是全書的基礎:
HTTP協議的工作方式與HTTP網絡協議棧的結構。
如何實現基于HTTP協議和TCP協議的RPC調用,它們之間有何差別,分別適應何種場景。
如何實現服務的動態注冊和路由,以及軟負載均衡的實現。
1.1 基于TCP協議的RPC 3
1.1.1 RPC名詞解釋 3
1.1.2 對象的序列化 4
1.1.3 基于TCP協議實現RPC 6
1.2 基于HTTP協議的RPC 9
1.2.1 HTTP協議棧 9
1.2.2 HTTP請求與響應 15
1.2.3 通過HttpClient發送HTTP請求 16
1.2.4 使用HTTP協議的優勢 17
1.2.5 JSON和XML 18
1.2.6 RESTful和RPC 20
1.2.7 基于HTTP協議的RPC的實現 22
1.3 服務的路由和負載均衡 30
1.3.1 服務化的演變 30
1.3.2 負載均衡算法 33
1.3.3 動態配置規則 39
1.3.4 ZooKeeper介紹與環境搭建 40
1.3.5 ZooKeeper API使用簡介 43
1.3.6 zkClient的使用 47
1.3.7 路由和負載均衡的實現 50
1.4 HTTP服務網關 54
第2章 分布式系統基礎設施 58
本章主要介紹和解決如下問題:
分布式緩存memcache的使用及分布式策略,包括Hash算法的選擇。
常見的分布式系統存儲解決方案,包括MySQL的分布式擴展、HBase的API及使用場景、Redis的使用等。
如何使用分布式消息系統ActiveMQ來降低系統之間的耦合度,以及進行應用間的通信。
垂直化的搜索引擎在分布式系統中的使用,包括搜索引擎的基本原理、Lucene詳細的使用介紹,以及基于Lucene的開源搜索引擎工具Solr的使用。
2.1 分布式緩存 60
2.1.1 memcache簡介及安裝 60
2.1.2 memcache API與分布式 64
2.1.3 分布式session 69
2.2 持久化存儲 71
2.2.1 MySQL擴展 72
2.2.2 HBase 80
2.2.3 Redis 91
2.3 消息系統 95
2.3.1 ActiveMQ & JMS 96
2.4 垂直化搜索引擎 104
2.4.1 Lucene簡介 105
2.4.2 Lucene的使用 108
2.4.3 Solr 119
2.5 其他基礎設施 125
第3章 互聯網安全架構 126
本章主要介紹和解決如下問題:
常見的Web攻擊手段和防御方法,如XSS、CRSF、SQL注入等。
常見的一些安全算法,如數字摘要、對稱加密、非對稱加密、數字簽名、數字證書等。

如何采用摘要認證方式防止信息篡改、通過數字簽名驗證通信雙方的合法性,以及通過HTTPS協議保障通信過程中數據不被第三方監聽和截獲。
在開放平臺體系下,OAuth協議如何保障ISV對數據的訪問是經過授權的合法行為。
3.1 常見的Web攻擊手段 128
3.1.1 XSS攻擊 128
3.1.2 CRSF攻擊 130
3.1.3 SQL注入攻擊 133
3.1.4 文件上傳漏洞 139
3.1.5 DDoS攻擊 146
3.1.6 其他攻擊手段 149
3.2 常用的安全算法 149
3.2.1 數字摘要 149
3.2.2 對稱加密算法 155
3.2.3 非對稱加密算法 158
3.2.4 數字簽名 162
3.2.5 數字證書 166
3.3 摘要認證 185
3.3.1 為什么需要認證 185
3.3.2 摘要認證的原理 187
3.3.3 摘要認證的實現 188
3.4 簽名認證 192
3.4.1 簽名認證的原理 192
3.4.2 簽名認證的實現 193
3.5 HTTPS協議 200
3.5.1 HTTPS協議原理 200
3.5.2 SSL/TLS 201
3.5.3 部署HTTPS Web 208
3.6 OAuth協議 215
3.6.1 OAuth的介紹 215
3.6.2 OAuth授權過程 216
第4章 系統穩定性 218
本章主要介紹和解決如下問題:
常用的在線日志分析命令的使用和日志分析腳本的編寫,如cat、grep、wc、less等命令的使用,以及awk、shell腳本的編寫。
如何進行集群的監控,包括監控指標的定義、心跳檢測、容量評估等。
如何保障高并發系統的穩定運行,如采用流量控制、依賴管理、服務分級、開關等策略,以及介紹如何設計高并發系統。
如何優化應用的性能,包括前端優化、Java程序優化、數據庫查詢優化等。
如何進行Java應用故障的在線排查,包括一系列排查工具的使用,以及一些實際案例的介紹等。
4.1 在線日志分析 220
4.1.1 日志分析常用命令 220
4.1.2 日志分析腳本 230
4.2 集群監控 239
4.2.1 監控指標 239
4.2.2 心跳檢測 247
4.2.3 容量評估及應用水位 252
4.3 流量控制 255
4.3.1 流量控制實施 255
4.3.2 服務穩定性 260
4.3.3 高并發系統設計 265
4.4 性能優化 277
4.4.1 如何尋找性能瓶頸 277
4.4.2 性能測試工具 285
4.4.3 性能優化措施 292
4.5 Java應用故障的排查 314
4.5.1 常用的工具 314
4.5.2 典型案例分析 331
第5章 數據分析 337
本章主要介紹和解決如下問題:
分布式系統中日志收集系統的架構。
如何通過Storm進行實時的流式數據分析。
如何通過Hadoop進行離線數據分析,通過Hive建立數據倉庫。
如何將關系型數據庫中存儲的數據導入HDFS,以及從HDFS中將數據導入關系型數據庫。
如何將分析好的數據通過圖形展示給用戶。
5.1 日志收集 339
5.1.1 inotify機制 339
5.1.2 ActiveMQ-CPP 343
5.1.3 架構和存儲 359
5.1.4 Chukwa 362
5.2 離線數據分析 369
5.2.1 Hadoop項目簡介 370
5.2.2 Hadoop環境搭建 374
5.2.3 MapReduce編寫 384
5.2.4 Hive使用 389
5.3 流式數據分析 403
5.3.1 Storm的介紹 404
5.3.2 安裝部署Storm 407
5.3.3 Storm的使用 418
5.4 數據同步 422
5.4.1 離線數據同步 423
5.4.2 實時數據同步 429
5.5 數據報表 431
5.5.1 數據報表能提供什么 431
5.5.2 報表工具Highcharts 432
參考文獻 445
序: