人人都是架構(gòu)師:分布式系統(tǒng)架構(gòu)落地與瓶頸突破是一本貨真價實的互聯(lián)網(wǎng)場景下大型網(wǎng)站架構(gòu)演變過程中核心技術(shù)難題的解決方案,由高翔龍編著。本書全部來源于作者真實經(jīng)歷的生產(chǎn)案例,大型網(wǎng)站應(yīng)對高并發(fā)、大流量的應(yīng)急寶典,全書毫無保留地闡述了作者多年在互聯(lián)網(wǎng)企業(yè)的架構(gòu)設(shè)計經(jīng)驗,具體內(nèi)容包括分布式服務(wù)案例全面剖析、大流量限流/消峰案例全面剖析、從接入層到存儲系統(tǒng)、數(shù)據(jù)庫分庫分表案例全面剖析等等,作者不吹牛、不夸張,腳踏實地為你剖析架構(gòu)如何落地,歡迎免費下載閱讀。
內(nèi)容介紹
《人人都是架構(gòu)師:分布式系統(tǒng)架構(gòu)落地與瓶頸突破》并沒有過多渲染系統(tǒng)架構(gòu)的理論知識,而是切切實實站在開發(fā)一線角度,為各位讀者詮釋了大型網(wǎng)站在架構(gòu)演變過程中出現(xiàn)一系列技術(shù)難題時的解決方案。本書首先從分布式服務(wù)案例開始介紹,重點為大家講解了大規(guī)模服務(wù)化場景下企業(yè)應(yīng)該如何實施服務(wù)治理;然后在大流量限流/消峰案例中,筆者為大家講解了應(yīng)該如何有效地對流量實施管制,避免大流量對系統(tǒng)產(chǎn)生較大沖擊,確保核心業(yè)務(wù)的穩(wěn)定運行;接著筆者為大家講解了分布式配置管理服務(wù);之后的幾章,筆者不僅為大家講解了秒殺、限時搶購場景下熱點數(shù)據(jù)的讀/寫優(yōu)化案例,還為大家講解了數(shù)據(jù)庫實施分庫分表改造后所帶來的一系列影響的解決方案。《人人都是架構(gòu)師:分布式系統(tǒng)架構(gòu)落地與瓶頸突破》非常適用于任何對分布式系統(tǒng)架構(gòu)感興趣的架構(gòu)師、開發(fā)人員以及運維人員。相信閱讀本書你將會有知其然和知其所以然的暢快感。
人人都是架構(gòu)師內(nèi)容重點
本書每一章的內(nèi)容幾乎都是獨立的,大家完全可以挑選自己感興趣或者有需要的部分進行閱讀。本書一共包含5章,筆者首先從分布式服務(wù)案例開始講起,將大家?guī)нM分布式系統(tǒng)的殿堂。在第1章中,筆者講解了大型網(wǎng)站的架構(gòu)演變過程,讓大家對分布式系統(tǒng)建立一個基本的認識。當然,本章的重點是講解企業(yè)在大規(guī)模服務(wù)化后應(yīng)該如何實施服務(wù)治理,以及應(yīng)該如何構(gòu)建一個分布式調(diào)用跟蹤系統(tǒng),以一種可視化的方式來展現(xiàn)跟蹤到的每一個請求的完整調(diào)用鏈,并收集調(diào)用鏈上每個服務(wù)的執(zhí)行耗時,整合孤立日志等。為了避免大促場景下峰值流量過大,對系統(tǒng)造成較大負載導致產(chǎn)生雪崩現(xiàn)象,筆者在本書的第2章為大家講解了大流量限流/消峰案例,讓系統(tǒng)的負載壓力始終處于一個比較均衡的水位,從而保護系統(tǒng)的穩(wěn)定運行。筆者首先從限流算法開始講起,然后分享了業(yè)務(wù)層面和技術(shù)層面等兩個維度的流量管制方案。當然,本章的重點是為大家演示如何通過MQ來實現(xiàn)大流量場景下的流量消峰。
人人都是架構(gòu)師的第3章為大家講解了分布式配置管理服務(wù)案例(配置中心)。盡管目前一些中小型互聯(lián)網(wǎng)企業(yè)仍然將本地配置作為首選,但是當網(wǎng)站發(fā)展到一定規(guī)模后,繼續(xù)采用本地配置所暴露的問題將會越來越多。大型網(wǎng)站使用分布式配置管理平臺不僅能夠?qū)崿F(xiàn)配置信息的集中式管理、降低維護成本和配置出錯率,還能夠動態(tài)獲取/更新配置信息。本章的重點是為大家演示如何基于ZooKeeper構(gòu)建一個分布式配置管理平臺,以及使用淘寶Diamond和百度Disconf系統(tǒng)來實現(xiàn)分布式配置管理服務(wù)。
熱點數(shù)據(jù)的讀/寫操作其實是秒殺、限時搶購場景下最核心的技術(shù)難題。在大促場景下,由于峰值流量較大,大量針對同一熱賣商品的并發(fā)讀/寫操作一定會導致后端的存儲系統(tǒng)產(chǎn)生性能瓶頸,因此第4章為大家講解了大促場景下熱點數(shù)據(jù)的讀/寫優(yōu)化案例。盡管商品信息可以緩存在分布式緩存中,通過集群技術(shù),可以在理論上認為其容量是無限的,但是對于大促場景下的熱賣商品來說,由于單價比平時更給力、更具吸引力,因而自然會比平時吸引更大的流量進來;這時同一個Key必然會落到同一個緩存節(jié)點上,而分布式緩存在這種情況下一定會出現(xiàn)單點瓶頸,因此筆者為大家演示了如何實施多級Cache方案來防止分布式緩存系統(tǒng)出現(xiàn)單點瓶頸。由于寫操作無法直接在緩存中完成,因此大量的并發(fā)更新熱點數(shù)據(jù)(庫存扣減)都是針對數(shù)據(jù)庫中同一行的——本書以MySQL為例,而這必然會引起大量的線程來相互競爭InnoDB的行鎖;并發(fā)越大時,等待的線程就越多,這會嚴重影響數(shù)據(jù)庫的TPS,導致RT線性上升,最終可能引發(fā)系統(tǒng)出現(xiàn)雪崩。為了避免數(shù)據(jù)庫淪為瓶頸,筆者為大家演示了如何通過分布式鎖、樂觀鎖在分布式緩存系統(tǒng)中扣減庫存、通過搶購限流控制單機并發(fā)寫流量,以及如何使用阿里開源的AliSQL數(shù)據(jù)庫提升“秒殺”場景性能。
在本書的最后一章,筆者為大家講解了數(shù)據(jù)庫分庫分表案例。本章演示了如何通過分庫分表中間件Shark來幫助企業(yè)實施分庫分表改造,以及分庫分表后所帶來一系列影響的解決方案,并重點分享了筆者在實際工作中訂單業(yè)務(wù)實施分庫分表改造后,應(yīng)該如何同時滿足Buyer和Seller的多維度查詢需求。
章節(jié)目錄
第1章 分布式服務(wù)案例 1
1.1 分布式系統(tǒng)的架構(gòu)演變過程 2
1.1.1 單機系統(tǒng) 3
1.1.2 集群架構(gòu) 4
1.1.3 拆系統(tǒng)之業(yè)務(wù)垂直化 6
1.1.4 為什么需要實現(xiàn)服務(wù)化架構(gòu) 8
1.1.5 服務(wù)拆分粒度之微服務(wù) 10
1.2 系統(tǒng)服務(wù)化需求 11
1.2.1 服務(wù)化與RPC協(xié)議 11
1.2.2 使用阿里分布式服務(wù)框架Dubbo實現(xiàn)服務(wù)化 12
1.2.3 警惕Dubbo因超時和重試引起的系統(tǒng)雪崩 16
1.2.4 服務(wù)治理方案 18
1.2.5 關(guān)于服務(wù)化后的分布式事務(wù)問題 20
1.3 分布式調(diào)用跟蹤系統(tǒng)需求 21
1.3.1 Google的Dapper論文簡介 22
1.3.2 基于Dubbo實現(xiàn)分布式調(diào)用跟蹤系統(tǒng)方案 25
1.3.3 采樣率方案 35
1.4 本章小結(jié) 37
第2章 大流量限流/消峰案例 38
2.1 分布式系統(tǒng)為什么需要進行流量管制 39
2.2 限流的具體方案 42
2.2.1 常見的限流算法 43
2.2.2 使用Google的Guava實現(xiàn)平均速率限流 45
2.2.3 使用Nginx實現(xiàn)接入層限流 48
2.2.4 使用計數(shù)器算法實現(xiàn)商品搶購限流 49
2.3 基于時間分片的消峰方案 51
2.3.1 活動分時段進行實現(xiàn)消峰 52
2.3.2 通過答題驗證實現(xiàn)消峰 52
2.4 異步調(diào)用需求 53
2.4.1 使用MQ實現(xiàn)系統(tǒng)之間的解耦 54
2.4.2 使用Apache開源的ActiveMQ實現(xiàn)異步調(diào)用 55
2.4.3 使用阿里開源的RocketMQ實現(xiàn)互聯(lián)網(wǎng)場景下的流量消峰 61
2.4.4 基于MQ方案實現(xiàn)流量消峰的一些典型案例 72
2.5 本章小結(jié) 75
第3章 分布式配置管理服務(wù)案例 76
3.1 本地配置 77
3.1.1 將配置信息耦合在業(yè)務(wù)代碼中 77
3.1.2 將配置信息配置在配置文件中 79
3.2 集中式資源配置需求 82
3.2.1 分布式一致性協(xié)調(diào)服務(wù)ZooKeeper簡介 83
3.2.2 ZooKeeper的下載與集群安裝 84
3.2.3 ZooKeeper的基本使用技巧 86
3.2.4 基于ZooKeeper實現(xiàn)分布式配置管理平臺方案 87
3.2.5 從配置中心獲取Spring的Bean定義實現(xiàn)Bean動態(tài)注冊 93
3.2.6 容災(zāi)方案 95
3.2.7 使用淘寶Diamond實現(xiàn)分布式配置管理服務(wù) 96
3.2.8 Diamond與ZooKeeper的細節(jié)差異 101
3.2.9 使用百度Disconf實現(xiàn)分布式配置管理服務(wù) 102
3.3 本章小結(jié) 110
第4章 大促場景下熱點數(shù)據(jù)的讀/寫優(yōu)化案例 111
4.1 緩存技術(shù)簡介 112
4.1.1 使用Ehcache實現(xiàn)數(shù)據(jù)緩存 114
4.1.2 LocalCache存在的弊端 116
4.1.3 神秘的off-heap技術(shù) 117
4.2 高性能分布式緩存Redis簡介 120
4.2.1 使用Jedis客戶端操作Redis 121
4.2.2 使用Redis集群實現(xiàn)數(shù)據(jù)水平化存儲 122
4.3 同一熱賣商品高并發(fā)讀需求 124
4.3.1 Redis集群多寫多讀方案 125
4.3.2 保障多寫時的數(shù)據(jù)一致性 126
4.3.3 LocalCache結(jié)合Redis集群的多級Cache方案 128
4.3.4 實時熱點自動發(fā)現(xiàn)方案 130
4.4 同一熱賣商品高并發(fā)寫需求 132
4.4.1 InnoDB行鎖引起數(shù)據(jù)庫TPS下降 132
4.4.2 在Redis中扣減熱賣商品庫存方案 134
4.4.3 熱賣商品庫存扣減優(yōu)化方案 138
4.4.4 控制單機并發(fā)寫流量方案 141
4.4.5 使用阿里開源的AliSQL數(shù)據(jù)庫提升秒殺場景性能 142
4.5 本章小結(jié) 148
第5章 數(shù)據(jù)庫分庫分表案例 149
5.1 關(guān)系型數(shù)據(jù)庫的架構(gòu)演變 150
5.1.1 數(shù)據(jù)庫讀寫分離 150
5.1.2 數(shù)據(jù)庫垂直分庫 151
5.1.3 數(shù)據(jù)庫水平分庫與水平分表 152
5.1.4 MySQL Sharding與MySQL Cluster的區(qū)別 153
5.2 Sharding中間件 154
5.2.1 常見的 Sharding中間件對比 155
5.2.2 Shark簡介 156
5.2.3 Shark的架構(gòu)模型 157
5.2.4 使用Shark實現(xiàn)分庫分表后的數(shù)據(jù)路由任務(wù) 159
5.2.5 分庫分表后所帶來的影響 166
5.2.6 多機SequenceID解決方案 167
5.2.7 使用Solr滿足多維度的復雜條件查詢 170
5.2.8 關(guān)于分布式事務(wù) 172
5.3 數(shù)據(jù)庫的HA方案 173
5.3.1 基于配置中心實現(xiàn)主從切換 174
5.3.2 基于Keepalived實現(xiàn)主從切換 176
5.3.3 保障主從切換過程中的數(shù)據(jù)一致性 179
5.4 訂單業(yè)務(wù)冗余表需求 180
5.4.1 冗余表的實現(xiàn)方案 181
5.4.2 保障冗余表的數(shù)據(jù)一致性 183
5.5 本章小結(jié) 186
后記 187
使用說明
1、下載并解壓,得出pdf文件
2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進行閱讀試讀
- 下載地址
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
有問題? 點此報錯
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 南方Plus電腦版 v11.9.026.47M / 簡體中文
- 網(wǎng)易新聞電腦版 v113.197.68M / 簡體中文
- 開源閱讀電腦版 v3.2517.96M / 簡體中文
- 京東讀書電腦版 v1.13.4官方版1.98M / 簡體中文
- 瀟湘書院電腦版 v2.3.11.888官方版49.65M / 簡體中文
- 數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- linux常用命令大全 chm版1.48M / 簡體中文
- 本草綱目 5.34M / 簡體中文
- Scala程序設(shè)計第二版 pdf高清完整版15.83M / 簡體中文