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