- 作者一直奮戰在阿裏巴巴及淘寶網一綫,書中所講是其親身經驗的總結,顯得更加實戰和珍貴。
- 全麵介紹大型分布式網站架構所涉及的技術細節,通過很多實踐案例盡量讓每一個關鍵的技術點都落到實處。
- 深入講述大型分布式網站架構設計的核心原理,分享大型分布式網站設計的一些常見場景及遇到的問題。
海報:
《大型分布式網站架構設計與實踐》主要介紹瞭大型分布式網站架構所涉及的一些技術細節,包括SOA架構的實現、互聯網安全架構、構建分布式網站所依賴的基礎設施、係統穩定性保障和海量數據分析等內容;深入地講述瞭大型分布式網站架構設計的核心原理,並通過一些架構設計的典型案例,幫助讀者瞭解大型分布式網站設計的一些常見場景及遇到的問題。
作者結閤自己在阿裏巴巴及淘寶網的實際工作經曆展開論述。本書既可供初學者學習,幫助讀者瞭解大型分布式網站的架構,以及解決問題的思路和方法,也可供業界同行參考,給日常工作帶來啓發。
陳康賢,淘寶網工程師,大學畢業後一直在阿裏巴巴集團從事軟件研發工作,擅長javaweb程序設計,長期在淘寶分布式環境下耳濡目染,目前關注於Java高性能程序設計及性能優化。
——聚劃算技術部高級技術專傢 劉國華(索尼)
★當下有規模的網站,都采用分布式的架構實現。那麼網站如何做到分布式,以及有哪些基礎的分布式係統,都是我們的架構師和開發人員想去瞭解的,而相關的安全問題,以及穩定性、性能、應用的綫上問題定位分析等方麵的問題也很重要,本書能夠比較全麵地給讀者帶來這些相關知識的一個全貌,能夠讓從業人員對於這些知識有一個比較全麵的瞭解。而康賢也是一個一直奮戰在一綫的技術人員,親身經曆的總結會顯得更加實戰和珍貴。
——淘寶技術部總監 曾憲傑(華黎)
第1章 麵嚮服務的體係架構(SOA)
本章主要介紹和解決以下問題,這些也是全書的基礎:
HTTP協議的工作方式與HTTP網絡協議棧的結構。
如何實現基於HTTP協議和TCP協議的RPC調用,它們之間有何差彆,分彆適應何種場景。
如何實現服務的動態注冊和路由,以及軟負載均衡的實現。
1.1 基於TCP協議的RPC
1.1.1 RPC名詞解釋
1.1.2 對象的序列化
1.1.3 基於TCP協議實現RPC
1.2 基於HTTP協議的RPC
1.2.1 HTTP協議棧
1.2.2 HTTP請求與響應
1.2.3 通過HttpClient發送HTTP請求
1.2.4 使用HTTP協議的優勢
1.2.5 JSON和XML
1.2.6 RESTful和RPC
1.2.7 基於HTTP協議的RPC的實現
1.3 服務的路由和負載均衡
1.3.1 服務化的演變
1.3.2 負載均衡算法
1.3.3 動態配置規則
1.3.4 ZooKeeper介紹與環境搭建
1.3.5 ZooKeeper API使用簡介
1.3.6 zkClient的使用
1.3.7 路由和負載均衡的實現
1.4 HTTP服務網關
第2章 分布式係統基礎設施
本章主要介紹和解決如下問題:
分布式緩存memcache的使用及分布式策略,包括Hash算法的選擇。
常見的分布式係統存儲解決方案,包括MySQL的分布式擴展、HBase的API及使用場景、Redis的使用等。
如何使用分布式消息係統ActiveMQ來降低係統之間的耦閤度,以及進行應用間的通信。
垂直化的搜索引擎在分布式係統中的使用,包括搜索引擎的基本原理、Lucene詳細的使用介紹,以及基於Lucene的開源搜索引擎工具Solr的使用。
2.1 分布式緩存
2.1.1 memcache簡介及安裝
2.1.2 memcache API與分布式
2.1.3 分布式session
2.2 持久化存儲
2.2.1 MySQL擴展
2.2.2 HBase
2.2.3 Redis
2.3 消息係統
2.3.1 ActiveMQ & JMS
2.4 垂直化搜索引擎
2.4.1 Lucene簡介
2.4.2 Lucene的使用
2.4.3 Solr
2.5 其他基礎設施
第3章 互聯網安全架構
本章主要介紹和解決如下問題:
常見的Web攻擊手段和防禦方法,如XSS、CRSF、SQL注入等。
常見的一些安全算法,如數字摘要、對稱加密、非對稱加密、數字簽名、數字證書等。
如何采用摘要認證方式防止信息篡改、通過數字簽名驗證通信雙方的閤法性,以及通過HTTPS協議保障通信過程中數據不被第三方監聽和截獲。
在開放平颱體係下,OAuth協議如何保障ISV對數據的訪問是經過授權的閤法行為。
3.1 常見的Web攻擊手段
3.1.1 XSS攻擊
3.1.2 CRSF攻擊
3.1.3 SQL注入攻擊
3.1.4 文件上傳漏洞
3.1.5 DDoS攻擊
3.1.6 其他攻擊手段
3.2 常用的安全算法
3.2.1 數字摘要
3.2.2 對稱加密算法
3.2.3 非對稱加密算法
3.2.4 數字簽名
3.2.5 數字證書
3.3 摘要認證
3.3.1 為什麼需要認證
3.3.2 摘要認證的原理
3.3.3 摘要認證的實現
3.4 簽名認證
3.4.1 簽名認證的原理
3.4.2 簽名認證的實現
3.5 HTTPS協議
3.5.1 HTTPS協議原理
3.5.2 SSL/TLS
3.5.3 部署HTTPS Web
3.6 OAuth協議
3.6.1 OAuth的介紹
3.6.2 OAuth授權過程
第4章 係統穩定性
本章主要介紹和解決如下問題:
常用的在綫日誌分析命令的使用和日誌分析腳本的編寫,如cat、grep、wc、less等命令的使用,以及awk、shell腳本的編寫。
如何進行集群的監控,包括監控指標的定義、心跳檢測、容量評估等。
如何保障高並發係統的穩定運行,如采用流量控製、依賴管理、服務分級、開關等策略,以及介紹如何設計高並發係統。
如何優化應用的性能,包括前端優化、Java程序優化、數據庫查詢優化等。
如何進行Java應用故障的在綫排查,包括一係列排查工具的使用,以及一些實際案例的介紹等。
4.1 在綫日誌分析
4.1.1 日誌分析常用命令
4.1.2 日誌分析腳本
4.2 集群監控
4.2.1 監控指標
4.2.2 心跳檢測
4.2.3 容量評估及應用水位
4.3 流量控製
4.3.1 流量控製實施
4.3.2 服務穩定性
4.3.3 高並發係統設計
4.4 性能優化
4.4.1 如何尋找性能瓶頸
4.4.2 性能測試工具
4.4.3 性能優化措施
4.5 Java應用故障的排查
4.5.1 常用的工具
4.5.2 典型案例分析
第5章 數據分析
本章主要介紹和解決如下問題:
分布式係統中日誌收集係統的架構。
如何通過Storm進行實時的流式數據分析。
如何通過Hadoop進行離綫數據分析,通過Hive建立數據倉庫。
如何將關係型數據庫中存儲的數據導入HDFS,以及從HDFS中將數據導入關係型數據庫。
如何將分析好的數據通過圖形展示給用戶。
5.1 日誌收集
5.1.1 inotify機製
5.1.2 ActiveMQ-CPP
5.1.3 架構和存儲
5.1.4 Chukwa
5.2 離綫數據分析
5.2.1 Hadoop項目簡介
5.2.2 Hadoop環境搭建
5.2.3 MapReduce編寫
5.2.4 Hive使用
5.3 流式數據分析
5.3.1 Storm的介紹
5.3.2 安裝部署Storm
5.3.3 Storm的使用
5.4 數據同步
5.4.1 離綫數據同步
5.4.2 實時數據同步
5.5 數據報錶
5.5.1 數據報錶能提供什麼
5.5.2 報錶工具Highcharts
參考文獻
2.1.3 分布式session
傳統的應用服務器,如tomcat、jboss等,其自身所實現的session管理大部分都是基於單機的。對於大型分布式網站來說,支撐其業務的遠遠不止一颱服務器,而是一個分布式集群,請求在不同服務器之間跳轉。那麼,如何保持服務器之間的session同步呢?傳統網站一般通過將一部分數據存儲在cookie中,來規避分布式環境下session的操作。這樣做的弊端很多,一方麵cookie的安全性一直廣為詬病,另一方麵cookie存儲數據的大小是有限製的。隨著移動互聯網的發展,很多情況下還得兼顧移動端的session需求,使得采用cookie來進行session同步的方式的弊端更為凸顯。分布式session正是在這種情況下應運而生的。
對於係統可靠性要求較高的用戶,可以將session持久化到DB中,這樣可以保證宕機時會話不易丟失,但缺點也是顯而易見的,係統的整體吞吐將受到很大的影響。另一種解決方案便是將session統一存儲在緩存集群上,如memcache,這樣可以保證較高的讀、寫性能,這一點對於並發量大的係統來說非常重要;並且從安全性考慮,session畢竟是有有效期的,使用緩存存儲,也便於利用緩存的失效機製。使用緩存的缺點是,一旦緩存重啓,裏麵保存的會話也就丟失瞭,需要用戶重新建立會話。
前端用戶請求經過隨機分發之後,可能會命中後端任意的Web Server,並且Web Server也可能會因為各種不確定的原因宕機。在這種情況下,session是很難在集群間同步的,而通過將session以sessionid作為key,保存到後端的緩存集群中,使得不管請求如何分配,即便是Web Server宕機,也不會影響其他Web Server通過sessionid從Cache Server中獲得session,這樣既實現瞭集群間的session同步,又提高瞭Web Server的容錯性。
這裏以Tomcat作為Web Server來舉例,通過一個簡單的工具memcached-session- manager ,實現基於memcache的分布式session。
memcached-session-manager是一個開源的高可用的Tomcat session共享解決方案,它支持Sticky模式和Non-Sticky模式。Sticky模式錶示每次請求都會被映射到同一颱後端Web Server,直到該Web Server宕機,這樣session可先存放在服務器本地,等到請求處理完成再同步到後端memcache服務器;而當Web Server宕機時,請求被映射到其他Web Server,這時候,其他Web Server可以從後端memcache中恢復session。對於Non-Sticky模式來說,請求每次映射的後端Web Server是不確定的,當請求到來時,從memcache中加載session;當請求處理完成時,將session再寫迴到memcache。
以Non-Sticky模式為例它需要給Tomcat的$CATALINA_HOME/conf/context.xml文件配置SessionManager,具體配置如下:
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
其中:memcachedNodes指定瞭memcache的節點;sticky錶示是否采用Sticky模式;sessionBackupAsync錶示是否采用異步方式備份session;lockingMode錶示session的鎖定模式;auto錶示對於隻讀請求,session將不會被鎖定,如果包含寫入請求,則session會被鎖定;requestUriIgnorePattern錶示忽略的url;transcoderFactoryClass用來指定序列化的方式,這裏采用的是Kryo序列化,也是memcached-session-manager比較推薦的一種序列化方式。
memcached-session-manager依賴於memcached-session-manager-${version}.jar,如果使用的是tomcat6,則還需要下載memcached-session-manager-tc6-${version}.jar,並且它還依賴memcached- ${version}.jar進行memcache的訪問。在啓動Tomcat之前,需要將這些jar放在$CATALINA_ HOME/lib/目錄下。如果使用第三方序列化方式,如Kryo,還需要在Web工程中引入相關的第三方庫,Kryo序列化所依賴的庫,包括kryo-${version}-all.jar、kryo-serializers-${version}.jar和msm-kryo-serializer. ${version}.jar。
……
這本著作在某些章節中,對“負載均衡的策略”進行瞭詳細的闡述,包括輪詢、加權輪詢、最少連接等,並且還提及瞭一些更高級的算法,如基於響應時間的動態調整。然而,我發現書中在描述這些策略時,更多的是一種“技術指南”式的陳述,缺乏對實際應用場景的深入分析。比如,對於一個高並發的API網關,應該優先考慮哪種負載均衡策略?如果某個服務節點響應緩慢,如何快速將其剔除齣負載均衡池?書中雖然提到瞭這些策略,但並沒有充分展示這些策略在不同場景下的實際效果,以及可能齣現的性能問題和優化方嚮。我更希望看到的是,在實際的業務壓力下,作者是如何選擇和調整這些負載均衡策略的,以及在遇到問題時,是如何進行調試和優化的。
評分這本書的封麵設計簡潔大氣,但內容似乎更多地聚焦於底層技術細節,而非宏觀的架構理念。我原以為它會深入探討在不同業務場景下,如何權衡各種技術選型,例如在用戶量爆炸性增長初期,是應該優先選擇快速上綫還是構建可擴展的基礎?書中對於微服務拆分策略的闡述,感覺更像是在描述“怎麼做”,而不是“為什麼這樣做”,缺乏對不同拆分模式(如按業務域、按技術棧)的優劣勢分析,以及在實際應用中可能遇到的陷阱。例如,書中提到瞭一種通用的服務劃分方法,但並沒有詳細說明如何在實際項目評審中,說服業務方接受技術上可能帶來的短期影響。對於一些初創團隊來說,如何平衡資源和技術債務,如何在早期設計中預留擴展性,這些更為實際的問題,書中提及的篇幅較少,更多的是在介紹成熟平颱的技術實現。我期待能看到更多關於架構演進、遺留係統改造的案例,以及在資源有限的情況下,如何做齣最優的架構決策。
評分我閱讀這本書時,有一個明顯的感受是,它在“係統監控與日誌分析”的部分,給予瞭相當多的篇幅,詳細介紹瞭各種監控工具(如Prometheus、Grafana)的使用方法,以及日誌收集和處理的流程。這無疑為構建一個可視化的運維體係提供瞭技術參考。然而,我感到有些遺憾的是,書中對於“如何從海量日誌中挖掘齣關鍵信息,從而快速定位到問題的根源”,這方麵的內容著墨不多。在實際的故障排查中,日誌的價值不僅僅在於收集和存儲,更在於其分析的深度和效率。書中對於異常檢測、模式識彆、日誌關聯分析等高級話題,並沒有展開深入的探討,這使得我在麵對復雜的分布式係統故障時,仍可能感到無從下手。我期待的是,這本書能更多地分享一些在日誌分析方麵,獨到的方法論或實用的技巧,而不僅僅是工具的使用介紹。
評分這本書的文字風格非常嚴謹,每一句話都充滿瞭技術術語,對於非資深技術人員來說,閱讀起來會有些吃力。我嘗試著去理解書中關於“一緻性哈希算法在分布式緩存中的應用”部分,但缺乏直觀的圖示和生活化的比喻,使得抽象的概念難以在腦海中形成清晰的圖像。此外,書中對“CAP理論”的闡述,更多的是將其作為一個已有的定理來介紹,而未能深入剖析其在實際分布式係統設計中,不同場景下的權衡取捨。例如,在金融支付領域,強調一緻性可能是首要任務,而在社交媒體的“點贊”功能中,可用性可能更為重要。書中對於這些具體業務場景的考量,以及由此引發的架構設計差異,描述得不夠詳盡,更多的是一種理論上的堆砌。我希望能看到更多將理論與實踐相結閤的案例,讓讀者能夠更清晰地理解這些理論如何在真實的係統中落地,並解決實際問題。
評分這本書的結構安排,給人的感覺像是對現有成熟分布式係統的技術手冊,缺乏對“為什麼”的深度挖掘。例如,在討論“分布式事務的解決方案”時,書中詳細介紹瞭XA、TCC、Saga等模式,並列舉瞭各自的優缺點,但對於在什麼情況下選擇哪種模式,以及每種模式的實現細節中可能遇到的性能瓶頸和復雜性,著重筆墨不夠。在我的理解中,選擇分布式事務的方案,往往與業務場景的對數據一緻性要求、並發量、允許的延遲等因素息息相關。書中更側重於技術的“實現”,而非“決策”。對於一個初涉分布式架構的開發者來說,瞭解這些模式是基礎,但更關鍵的是如何根據實際情況做齣最佳選擇,並有效地應對其帶來的挑戰。本書在這方麵的指導性相對較弱,更多地停留在對現有技術的羅列和介紹。
評分紙質不錯,應該是正版,相當劃算。看瞭再來追評
評分很受歡迎的一本書,很經典,很多大牛的推薦,已經是第十四次印刷,品質值得擁有。看瞭幾天看瞭一半,內容很容易理解,給人提供思路和方嚮,擴展知識麵。內容的介紹由淺入深,更容易理解和接受(下麵那個復雜的圖就是通過一個簡圖演化的,不用擔心看不懂)。個人感覺這本書更適閤最少兩年實際工作經驗的,要有一定的基礎纔能更容易理解。如果你說我剛工作,但是我知識麵很廣,或者我能看懂,那也沒辦法。總之是一本值得推薦的好書。
評分很棒很棒很棒很棒很棒很棒很棒很棒
評分書中自有顔如玉,書中自有黃金屋”:讀書考取功名是當時人生的一
評分√ 本書作者團隊從Angular早期版本問世以來即投入生産實踐,積纍豐富實戰經驗。
評分這本書內容不錯,還很實用,師傅送貨也快,下次還來買,搞活動時候買的,比較值。
評分君不見,高堂明鏡悲白發,朝如青絲暮成雪。
評分書籍很好,每年618都必須屯一波圖書,很劃算
評分送到傢瞭,具體怎麼樣我還不知道
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有