電商存儲系統實戰:架構設計與海量數據處理

《電商存儲系統實戰:架構設計與海量數據處理》是2021年機械工業出版社出版的圖書。

基本介紹

  • 中文名:電商存儲系統實戰:架構設計與海量數據處理
  • 作者:李玥 
  • 出版時間:2021年12月1日
  • 出版社:機械工業出版社
  • ISBN:9787111697411
內容簡介,圖書目錄,

內容簡介

電商系統覆蓋面廣,在其他業務中遇到的技術問題,大多數在電商系統中也會遇到。本書以電商套用場景為例,講解實戰過程中常會遇到的各種存儲問題。通過這樣的學習方式,用戶既可以快速地解決實際問題,還能提升技術能力。全書共18章,分為設計篇、高速增長篇、海量數據篇和技術展望四篇。
設計篇,解決電商系統從0到1構建過程中遇到的存儲問題。比如,如何低成本、高質量地快速構建一個小規模的訂單存儲系統。
高速增長篇,關注在快速變化的過程中系統一定會遇到的一些共通問題及其應對方式。比如,如何從單機的存儲系統逐步演進為分散式存儲系統,如何線上平滑地擴容存儲系統。
海量數據篇,重點解決在高並發、海量數據的情況下該如何設計存儲系統的問題。比如,如何存儲海量的埋點數據,如何在各種資料庫之間實時地遷移和同步海量數據,等等。
技術展望篇,帶讀者了解存儲技術未來的發展趨勢,提前了解未來可能會落地的存儲新技術。

圖書目錄

前言 換一種方式學習存儲系統
第一篇 設計
第1章 如何設計電商系統 3
1.1 設計電商系統的核心流程 4
1.2 根據流程劃分功能模組 6
1.3 小結 9
1.4 思考題 10
第2章 訂單系統的設計:確保訂單數據的準確性 11
2.1 訂單系統的核心功能和數據 12
2.2 如何避免重複下單 13
2.3 如何解決ABA問題 16
2.4 小結 18
2.5 思考題 19
第3章 商品系統的存儲架構設計 20
3.1 商品系統需要保存哪些數據 21
3.2 如何存儲商品的基本信息 22
3.3 使用MongoDB保存商品參數 23
3.4 使用對象存儲保存圖片和視頻 24
3.5 將商品介紹靜態化 25
3.6 小結 26
3.7 思考題 28
第4章 購物車系統的存儲架構:前後端混合存儲 29
4.1 設計購物車系統的存儲架構時需要把握什麼原則 30
4.2 如何設計“暫存購物車”的存儲 32
4.3 如何設計“用戶購物車”的存儲 34
4.4 小結 36
4.5 思考題 37
第5章 賬戶系統:用事務解決對賬問題 38
5.1 為什麼總是對不上賬 39
5.2 使用資料庫事務保證數據的一致性 40
5.3 理解事務的隔離級別 42
5.4 小結 49
5.5 思考題 50
第6章 分散式事務:保證多個系統間的數據一致 51
6.1 什麼是分散式事務 52
6.2 2PC:訂單與優惠券的數據一致性問題 53
6.3 本地訊息表:訂單與購物車的數據一致性問題 57
6.4 小結 59
6.5 思考題 59
第7章 用Elasticsearch構建商品搜尋系統 60
7.1 理解倒排索引機制 60
7.2 如何在ES中構建商品的索引 63
7.3 小結 67
7.4 思考題 68
第8章 備份與恢復 69
8.1 如何更安全地實現數據備份和恢復 70
8.2 配置MySQL HA實現高可用性 73
8.3 小結 75
8.4 思考題 76
第二篇 高速增長
第9章 最佳化SQL 79
9.1 每個系統必踩的“坑”:訪問資料庫逾時 79
9.1.1 事故排查過程 79
9.1.2 如何避免悲劇重演 85
9.1.3 小結 87
9.1.4 思考題 88
9.2 如何避免寫出“慢SQL” 88
9.2.1 定量認識MySQL 88
9.2.2 使用索引避免全表掃描 90
9.2.3 分析SQL執行計畫 92
9.2.4 小結 93
9.2.5 思考題 94
9.3 SQL在資料庫中的執行 94
9.3.1 SQL在執行器中是如何執行的 95
9.3.2 SQL在存儲引擎中是如何執行的 98
9.3.3 小結 100
9.3.4 思考題 101
第10章 MySQL應對高並發 102
10.1 使用快取保護MySQL 102
10.1.1 更新快取的最佳方式 103
10.1.2 注意避免快取穿透引起雪崩 105
10.1.3 小結 107
10.1.4 思考題 107
10.2 讀寫分離 107
10.2.1 讀寫分離是提升MySQL並發能力的首選方案 108
10.2.2 注意讀寫分離帶來的數據不一致問題 111
10.2.3 小結 112
10.2.4 思考題 113
10.3 實現MySQL主從資料庫同步 113
10.3.1 如何配置MySQL的主從同步 113
10.3.2 複製狀態機:所有分散式存儲都是這樣複製數據的 116
10.3.3 小結 117
10.3.4 思考題 118
第三篇 海量數據
第11章 MySQL應對海量數據 121
11.1 歸檔歷史數據 121
11.1.1 存檔歷史訂單數據提升查詢性能 122
11.1.2 如何批量刪除大量數據 124
11.1.3 小結 127
11.1.4 思考題 128
11.2 分庫分表 128
11.2.1 如何規劃分庫分表 129
11.2.2 如何選擇分片鍵 130
11.2.3 如何選擇分片算法 131
11.2.4 小結 133
11.2.5 思考題 134
第12章 快取海量數據 135
12.1 用Redis構建快取集群的最佳實踐 135
12.1.1 Redis Cluster如何應對海量數據、高可用和高並發問題 136
12.1.2 為什麼Redis Cluster不適合超大規模集群 138
12.1.3 如何用Redis構建超大規模集群 139
12.1.4 小結 141
12.1.5 思考題 142
12.2 大型企業如何實現MySQL到Redis的同步 142
12.2.1 快取穿透:超大規模系統的不能承受之痛 142
12.2.2 使用Binlog實時更新Redis快取 144
12.2.3 小結 149
12.2.4 思考題 150
12.3 基於Binlog實現跨系統實時數據同步 150
12.3.1 使用Binlog和訊息佇列構建實時數據同步系統 151
12.3.2 如何保證數據同步的實時性 152
12.3.3 小結 154
12.3.4 思考題 154
第13章 更換資料庫 155
13.1 如何實現不停機更換資料庫 155
13.2 如何實現比對和補償程式 158
13.3 小結 160
13.4 思考題 160
第14章 對象存儲:最簡單的分散式存儲系統 161
14.1 對象存儲數據是如何保存大檔案的 162
14.2 如何拆分和保存大檔案對象 163
14.3 小結 166
14.4 思考題 167
第15章 海量數據的存儲與查詢 168
15.1 如何存儲前端埋點之類的海量數據 168
15.1.1 使用Kafka存儲海量原始數據 169
15.1.2 使用HDFS存儲更大規模的數據 171
15.1.3 小結 173
15.1.4 思考題 173
15.2 面對海量數據,如何才能查得更快 173
15.2.1 常用的分析類系統應該如何選擇存儲 174
15.2.2 轉變思想:根據查詢選擇存儲系統 176
15.2.3 小結 178
15.2.4 思考題 178
第16章 存儲系統的技術選型 179
16.1 技術選型時應該考慮哪些因素 180
16.2 線上業務系統如何選擇存儲產品 182
16.3 分析系統如何選擇存儲產品 183
16.4 小結 183
16.5 思考題 184
第四篇 技術展望
第17章 使用NewSQL解決高可用和分片難題 187
17.1 什麼是NewSQL 187
17.2 CockroachDB如何實現數據分片和彈性擴容 188
17.3 CockroachDB能提供金融級的事務隔離性嗎 190
17.4 小結 193
17.5 思考題 193
第18章 RocksDB:不丟數據的高性能KV存儲 194
18.1 同樣是KV存儲,RocksDB有哪些不同 195
18.2 LSM-Tree如何兼顧讀寫性能 196
18.3 小結 199
18.4 思考題 199
附錄A 測試題及解析 200
附錄B 思考題解析 206
後記 讓奮鬥成為習慣 219

相關詞條

熱門詞條

聯絡我們