發表於2024-12-23
大型分布式網站架構設計與實踐 pdf epub mobi txt 電子書 下載
- 作者一直奮戰在阿裏巴巴及淘寶網一綫,書中所講是其親身經驗的總結,顯得更加實戰和珍貴。
- 全麵介紹大型分布式網站架構所涉及的技術細節,通過很多實踐案例盡量讓每一個關鍵的技術點都落到實處。
- 深入講述大型分布式網站架構設計的核心原理,分享大型分布式網站設計的一些常見場景及遇到的問題。
海報:
《大型分布式網站架構設計與實踐》主要介紹瞭大型分布式網站架構所涉及的一些技術細節,包括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。
……
沒事讀一讀,感覺還不錯
評分他卻依然 對現實放肆 等著美麗的故事被腐蝕
評分618活動力度大,先買著再說,日後必有用
評分好久就想買瞭,趁著京東100-50的活動入手瞭
評分書籍挺好 希望堅持讀下去。。。。。。。。。。。。。。。。。。。。。。。。。。。
評分應該是正版的,非常不錯,價格很劃算,很開心,哈哈哈
評分還沒看,但是知識總是那麼深奧啊,哈哈哈哈哈哈哈哈哈哈
評分紙質不錯,應該是正版,相當劃算。看瞭再來追評
評分他的幼稚 我的固執 都成為曆史
大型分布式網站架構設計與實踐 pdf epub mobi txt 電子書 下載