內容簡介
超大流量系統解決方案:大型網站架構師的經驗分享
內容簡介
這是一本難得一見不藏私、經驗分享的書籍,讓你一窺大流量電商網站的秘密。
作為一位工程師,你可以捫心自問,對於短時間活動的超熱商品,你有辦法做到不塞車到掛、不超賣嗎?
你以為光是靠雲端加硬體就能解決嗎?這樣會不會太浪費?
台灣本土的應用規模有限,你可以想像淘寶在1111活動前及活動當下,工程師們做了什麼準備以及承受多大的壓力嗎?
當維運團隊透過各種技術的配合順利完成了1111活動,你能想像這會有多大的成就感嗎?
本書作者待過眾多大型電商平台,並提出過去他們是怎麼克服大流量的挑戰,方法不只一招,是眾多招數串接而成。
本書包含了許許多多扎扎實實的程式設計與架構設計的技巧,你就算沒辦法全看懂也沒關係,光是其中一兩招應該就能解決你現在面臨的問題了。
作者的話
目前市面上歌頌架構理論的讀物居多,真正講解大型網站架構解決方案的書籍卻寥寥無幾。對於這塊領域的空白,我想嘗試著去創作,把我這些年的經歷和經驗寫出來,讓更多人受益-------高翔龍
本書共5章,每章的內容幾乎都是獨立的,大家完全可以有選擇性地閱讀。
第1章
主要介紹分散式系統架構的演變過程,以及在大規模服務呼叫場景下,如何實施服務治理。
第2章
主要介紹在促銷活動前,如何在線上測試系統的穩定性,以及有規劃的進行容量和效能最佳化,讓系統能穩定的運作。
第3章
主要介紹如何有效地對流量進行管制,若採用合理且有效的方式控制住巔峰流量,使其井然有序地對系統進行存取,則在任何情況下,系統就都能穩定運行。
第4章
主要介紹在促銷活動搶購的網路流量下,該如何解決高併發讀取和寫入等核心技術難題。
第5章
詳細地介紹關聯式資料庫的架構演變過程,還重點介紹在實際的訂單業務場景下,如何確保資料最終的一致性。
本書使用大量的真實案例,詮釋如何解決實務中遇到的問題,並且能直接應用在實際工作中。
內容簡介
這是一本難得一見不藏私、經驗分享的書籍,讓你一窺大流量電商網站的秘密。
作為一位工程師,你可以捫心自問,對於短時間活動的超熱商品,你有辦法做到不塞車到掛、不超賣嗎?
你以為光是靠雲端加硬體就能解決嗎?這樣會不會太浪費?
台灣本土的應用規模有限,你可以想像淘寶在1111活動前及活動當下,工程師們做了什麼準備以及承受多大的壓力嗎?
當維運團隊透過各種技術的配合順利完成了1111活動,你能想像這會有多大的成就感嗎?
本書作者待過眾多大型電商平台,並提出過去他們是怎麼克服大流量的挑戰,方法不只一招,是眾多招數串接而成。
本書包含了許許多多扎扎實實的程式設計與架構設計的技巧,你就算沒辦法全看懂也沒關係,光是其中一兩招應該就能解決你現在面臨的問題了。
作者的話
目前市面上歌頌架構理論的讀物居多,真正講解大型網站架構解決方案的書籍卻寥寥無幾。對於這塊領域的空白,我想嘗試著去創作,把我這些年的經歷和經驗寫出來,讓更多人受益-------高翔龍
本書共5章,每章的內容幾乎都是獨立的,大家完全可以有選擇性地閱讀。
第1章
主要介紹分散式系統架構的演變過程,以及在大規模服務呼叫場景下,如何實施服務治理。
第2章
主要介紹在促銷活動前,如何在線上測試系統的穩定性,以及有規劃的進行容量和效能最佳化,讓系統能穩定的運作。
第3章
主要介紹如何有效地對流量進行管制,若採用合理且有效的方式控制住巔峰流量,使其井然有序地對系統進行存取,則在任何情況下,系統就都能穩定運行。
第4章
主要介紹在促銷活動搶購的網路流量下,該如何解決高併發讀取和寫入等核心技術難題。
第5章
詳細地介紹關聯式資料庫的架構演變過程,還重點介紹在實際的訂單業務場景下,如何確保資料最終的一致性。
本書使用大量的真實案例,詮釋如何解決實務中遇到的問題,並且能直接應用在實際工作中。
作者簡介
作者簡介
高翔龍
雲集基礎架構負責人,技術委員會委員,經歷了雲集架構從0到1的蜕變,驗證了雲集業務的噴發式成長,擁有大量高併發、大流量,以及巨量資料處理德實戰經驗,負責雲集基礎技術平台架構設計和中介軟體研發等工作,熱衷於開源技術,常年遊走在GitHub上。
高翔龍
雲集基礎架構負責人,技術委員會委員,經歷了雲集架構從0到1的蜕變,驗證了雲集業務的噴發式成長,擁有大量高併發、大流量,以及巨量資料處理德實戰經驗,負責雲集基礎技術平台架構設計和中介軟體研發等工作,熱衷於開源技術,常年遊走在GitHub上。
內容目錄
目錄
01 巨體而微——大規模服務化架構
1.1 分散式系統的架構演變過程
1.1.1 單機架構
1.1.2 叢集架構
1.1.3 垂直劃分業務子系統
1.1.4 服務化架構演進
1.1.5 服務化與微服務架構的區別
1.1.6 叢集與分散式的區別
1.1.7 前後端分離架構演進
1.1.8 API 閘道服務
1.1.9 分散式多活資料中心架構演進
1.2 服務治理需求
1.2.1 服務化與RPC 協定
1.2.2 基於服務治理框架Dubbo 實現服務化
1.2.3 避免因逾時和重試引起的系統故障
1.2.4 為什麼需要實施服務治理
1.2.5 關於服務化後的分散式交易問題
1.2.6 註冊中心效能瓶頸方案
1.2.7 分散式多活架構下的服務就近呼叫方案
1.3 服務治理之呼叫鏈
1.3.1 Google 的Dapper 論文簡介
1.3.2 呼叫鏈的實作方案
1.3.3 基於非修改式運行期AOP 方案實作資料蒐集回傳
1.3.4 調配取樣速率
1.4 本章小結
02 大型促銷備戰核彈——全鏈路壓測
2.1 為什麼要在線上實施全鏈路壓測
2.2 業務系統如何區分壓測流量
2.2.1 壓測流量標記方案
2.2.2 在鏈路上下文資訊中傳遞壓測標記
2.2.3 外部協力廠商介面經由Mock
2.2.4 壓測數據的隔離方案
2.3 如何發起大規模的壓測流量
2.3.1 數據建構平臺
2.3.2 自行研發全鏈路壓測軍演系統的一些經驗分享
2.4 本章小結
03 尖峰負載移轉——流量控制方案
3.1 為什麼需要限流
3.2 限流方案
3.2.1 常見的限流演算法
3.2.2 基於Guava 實作平均速率限流
3.2.3 存取層限流方案
3.2.4 應用層限流——限時搶購限流方案
3.3 基於時間分片的削峰方案
3.3.1 活動分時段進行實現削
3.3.2 透過答題驗證實現削峰
3.4 基於訊息佇列的解耦、削峰、最終一致性方案
3.4.1 基於訊息佇列實現解耦
3.4.2 常見訊息中介軟體的使用
3.4.3 訊息佇列的一些典型案例
3.5 本章小結
04 促銷搶購核心技術難題——讀/ 寫最佳化方案
4.1 快取技術簡介
4.1.1 本機快取
4.1.2 本機快取的問題
4.1.3 神秘的off-heap 技術
4.2 高效能分散式快取Redis
4.2.1 基於Jedis 使用者端操作Redis
4.2.2 根據RedisCluster 模式實作Sharding
4.3 同一熱賣商品高併發讀取的難題
4.3.1 多級快取方案
4.3.2 快取穿透思考
4.3.3 RedisCluster 模式下的讀/ 寫分離方案
4.4 同一熱賣商品高併發寫入難題
4.4.1 InnoDB 引擎的列鎖問題
4.4.2 根據Redis 樂觀鎖定的扣減庫存方案
4.4.3 嵌入Lua 腳本的扣庫存方案
4.4.4 AliSQL 資料庫提升併發寫入效能
4.5 本章小結
05 星羅棋佈——分庫分表方案
5.1 關聯式資料庫的架構演變
5.1.1 資料庫讀/ 寫分離
5.1.2 資料庫垂直分庫
5.1.3 資料庫水平分庫與水平分表
5.1.4 MySQL Sharding 與MySQL Cluster 的區別
5.2 Sharding 中介軟體
5.2.1 常見的 Sharding 中介軟體對比
5.2.2 Shark 簡介
5.2.3 Shark 的架構模型
5.2.4 使用Shark 實作分庫分表後的資料路由任務
5.2.5 分庫分表後所帶來的影響
5.2.6 全域唯一SequenceID 解決方案
5.2.7 基於Solr 滿足多維度的複雜條件查詢
5.2.8 關於分散式事務
5.3 資料庫的HA 方案
5.3.1 根據配置中心實現主從切換
5.3.2 根據Keepalived 實現主從切換
5.3.3 保障主從切換過程中的資料一致性
5.4 訂單業務冗餘表需求
5.4.1 冗餘表的實作方案
5.4.2 資料最終一致性方案
5.5 本章小結
A 附錄
大型促銷備戰事項分享
定位線上問題的一些手段分享
JVM-Sandbox 核心源碼剖析
B 後記
01 巨體而微——大規模服務化架構
1.1 分散式系統的架構演變過程
1.1.1 單機架構
1.1.2 叢集架構
1.1.3 垂直劃分業務子系統
1.1.4 服務化架構演進
1.1.5 服務化與微服務架構的區別
1.1.6 叢集與分散式的區別
1.1.7 前後端分離架構演進
1.1.8 API 閘道服務
1.1.9 分散式多活資料中心架構演進
1.2 服務治理需求
1.2.1 服務化與RPC 協定
1.2.2 基於服務治理框架Dubbo 實現服務化
1.2.3 避免因逾時和重試引起的系統故障
1.2.4 為什麼需要實施服務治理
1.2.5 關於服務化後的分散式交易問題
1.2.6 註冊中心效能瓶頸方案
1.2.7 分散式多活架構下的服務就近呼叫方案
1.3 服務治理之呼叫鏈
1.3.1 Google 的Dapper 論文簡介
1.3.2 呼叫鏈的實作方案
1.3.3 基於非修改式運行期AOP 方案實作資料蒐集回傳
1.3.4 調配取樣速率
1.4 本章小結
02 大型促銷備戰核彈——全鏈路壓測
2.1 為什麼要在線上實施全鏈路壓測
2.2 業務系統如何區分壓測流量
2.2.1 壓測流量標記方案
2.2.2 在鏈路上下文資訊中傳遞壓測標記
2.2.3 外部協力廠商介面經由Mock
2.2.4 壓測數據的隔離方案
2.3 如何發起大規模的壓測流量
2.3.1 數據建構平臺
2.3.2 自行研發全鏈路壓測軍演系統的一些經驗分享
2.4 本章小結
03 尖峰負載移轉——流量控制方案
3.1 為什麼需要限流
3.2 限流方案
3.2.1 常見的限流演算法
3.2.2 基於Guava 實作平均速率限流
3.2.3 存取層限流方案
3.2.4 應用層限流——限時搶購限流方案
3.3 基於時間分片的削峰方案
3.3.1 活動分時段進行實現削
3.3.2 透過答題驗證實現削峰
3.4 基於訊息佇列的解耦、削峰、最終一致性方案
3.4.1 基於訊息佇列實現解耦
3.4.2 常見訊息中介軟體的使用
3.4.3 訊息佇列的一些典型案例
3.5 本章小結
04 促銷搶購核心技術難題——讀/ 寫最佳化方案
4.1 快取技術簡介
4.1.1 本機快取
4.1.2 本機快取的問題
4.1.3 神秘的off-heap 技術
4.2 高效能分散式快取Redis
4.2.1 基於Jedis 使用者端操作Redis
4.2.2 根據RedisCluster 模式實作Sharding
4.3 同一熱賣商品高併發讀取的難題
4.3.1 多級快取方案
4.3.2 快取穿透思考
4.3.3 RedisCluster 模式下的讀/ 寫分離方案
4.4 同一熱賣商品高併發寫入難題
4.4.1 InnoDB 引擎的列鎖問題
4.4.2 根據Redis 樂觀鎖定的扣減庫存方案
4.4.3 嵌入Lua 腳本的扣庫存方案
4.4.4 AliSQL 資料庫提升併發寫入效能
4.5 本章小結
05 星羅棋佈——分庫分表方案
5.1 關聯式資料庫的架構演變
5.1.1 資料庫讀/ 寫分離
5.1.2 資料庫垂直分庫
5.1.3 資料庫水平分庫與水平分表
5.1.4 MySQL Sharding 與MySQL Cluster 的區別
5.2 Sharding 中介軟體
5.2.1 常見的 Sharding 中介軟體對比
5.2.2 Shark 簡介
5.2.3 Shark 的架構模型
5.2.4 使用Shark 實作分庫分表後的資料路由任務
5.2.5 分庫分表後所帶來的影響
5.2.6 全域唯一SequenceID 解決方案
5.2.7 基於Solr 滿足多維度的複雜條件查詢
5.2.8 關於分散式事務
5.3 資料庫的HA 方案
5.3.1 根據配置中心實現主從切換
5.3.2 根據Keepalived 實現主從切換
5.3.3 保障主從切換過程中的資料一致性
5.4 訂單業務冗餘表需求
5.4.1 冗餘表的實作方案
5.4.2 資料最終一致性方案
5.5 本章小結
A 附錄
大型促銷備戰事項分享
定位線上問題的一些手段分享
JVM-Sandbox 核心源碼剖析
B 後記
ISBN: 9789864347957