分散式系統設計實踐

分散式系統設計實踐

《分散式系統設計實踐》是2019年11月人民郵電出版社出版的圖書,作者是李慶旭。

基本介紹

  • 中文名:分散式系統設計實踐
  • 作者:李慶旭
  • 出版時間:2019年11月
  • 出版社人民郵電出版社
  • 頁數:210 頁
  • ISBN:9787115519450
  • 定價:59 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書對近年來湧現出的各種主流分散式技術做了簡要介紹和全面梳理。本書將分散式系統中涉及的技術分為前端構造技術、分散式中間件技術和分散式存儲技術三大類,對每類技術都詳細介紹了其原理、設計思想和架構,以及相關套用場景。此外,本書還總結了分散式系統的構建思想,並分別對業界幾個非常成功的大型分散式系統(谷歌搜尋系統、淘寶網電商平台、阿里雲公有雲平台、領英社交平台)進行了案例研究。

圖書目錄

第一部分 分散式系統概述
第1章 分散式系統概述 3
1.1 分散式系統的組成 4
1.2 分散式協調組件 6
1.4 分散式計算系統 9
1.4.1 批處理分散式計算系統 9
1.4.2 流處理分散式計算系統 10
1.4.3 混合系統 11
1.5 分散式系統中節點之間的關係 11
第二部分 分散式系統的前端構造技術
第2章 Web框架的實現原理 15
2.1 Web框架簡介 16
2.2 PHP Web MVC框架的工作原理 17
2.2.1 框架的入口 17
2.2.2 URL到控制器的映射 17
2.2.3 如何將模型傳給視圖 18
2.3 Java Web MVC框架原理 19
2.3.1 Java Servlet API 3.0 19
2.3.2 框架的入口 20
2.3.3 Spring 4.0框架 22
2.3.4 Java EE 29
2.3.5 Spring與Java EE的比較 30
2.4 Go語言Web開發 30
2.4.1 Go語言簡介 31
2.4.2 Go語言Web開發 32
第3章 反向代理與負載均衡 33
3.1 反向代理 33
3.1.1 Nginx 34
3.1.2 Tengine 35
3.1.3 Varnish 35
3.2 負載均衡 36
3.2.1 DNS負載均衡 36
3.2.2 硬體負載均衡 36
3.2.3 軟體負載均衡 37
第三部分 分散式中間件
第4章 分散式同步服務中間件 41
4.1 分散式一致性協定 42
4.2 分散式同步服務中間件簡介 43
4.3 分散式同步服務中間件的實現原理 44
4.3.1 架構 44
4.3.2 如何消除單點故障 45
4.3.3 Chubby對外提供的API 45
4.3.4 資料庫 46
4.3.5 Chubby使用示例:集群的主伺服器選舉 46
4.4 其他分散式同步服務中間件 46
4.4.1 Linux心跳機制 47
4.4.2 ZooKeeper 47
4.4.3 iNexus 48
4.5 分散式同步服務的套用 48
第5章 關係型資料庫訪問中間件 53
5.1 資料庫訪問中間件的形式 54
5.2 資料庫訪問中間件的工作原理 55
5.3 著名的資料庫訪問中間件 56
5.3.1 MySQL代理 57
5.3.2 Cobar 58
5.3.3 TDDL 59
5.3.4 MyCAT 59
5.3.5 Heisenberg 59
5.4 資料庫訪問中間件的套用 60
5.4.1 使用MySQL代理實現讀寫資料庫分離 60
5.4.2 研發自己的資料庫中間件,實現MySQL的分庫分表 60
第6章 分散式服務調用中間件 63
6.1 分散式服務調用中間件簡介 63
6.2 分散式服務調用中間件的實現原理 64
6.2.1 Dubbo的架構 64
6.2.2 Dubbo中各組件的互動 65
6.2.3 Dubbo的實現及特點 66
6.2.4 Dubbox 66
6.3 其他分散式服務調用中間件 67
6.3.1 Protocol Buffers 67
6.3.2 gRPC 68
6.3.3 Thrift 69
6.3.4 Motan 72
6.3.5 sofa-pbrpc 73
6.4 分散式服務調用中間件的套用 73
第7章 分散式訊息服務中間件 75
7.1 分散式訊息服務中間件簡介 75
7.2 分散式訊息服務中間件的實現原理 77
7.2.1 訊息模型 77
7.2.2 架構 77
7.3 其他分散式訊息服務中間件 79
7.3.1 阿里巴巴RocketMQ 79
7.3.2 Apache Pulsar 80
7.4 分散式訊息服務中間件的套用 82
7.4.1 秒殺系統中使用Kafka以削平峰值流量 83
7.4.2 使用Kafka流實現訊息推送 83
第8章 分散式跟蹤服務中間件 85
8.1 分散式跟蹤服務中間件的實現原理 85
8.2 其他分散式跟蹤服務中間件 88
8.2.1 Twitter的Zipkin 88
8.2.2 Pinpoint 90
8.2.3 阿里巴巴的EagleEye 92
8.3 分散式跟蹤服務中間件的套用 92
第四部分 分散式存儲技術
第9章 分散式檔案系統 95
9.1 分散式檔案系統的實現原理 96
9.2 其他分散式檔案系統 102
9.3 分散式檔案系統的套用 104
第10章 基於鍵值對的NoSQL資料庫 107
10.1 NoSQL資料庫的CAP權衡 108
10.2 基於鍵值對的NoSQL資料庫的實現原理 108
10.2.1 谷歌的LevelDB 108
10.2.2 阿里巴巴的Tair 111
10.2.3 亞馬遜的Dynamo 111
10.3 其他基於鍵值對的NoSQL資料庫 115
10.3.1 Memcached 115
10.3.2 Redis 116
10.3.3 Berkeley DB 117
10.3.4 Facebook RocksDB 117
10.3.5 Riak 118
10.3.6 Voldemort 118
10.4 基於鍵值對的NoSQL資料庫的套用 118
10.4.1 使用Redis快取會話數據 118
10.4.2 使用Berkeley DB/LevelDB/RocksDB構建自己的分散式存儲系統 119
10.4.3 使用Berkeley DB/LevelDB/RocksDB作為本地資料庫 119
第11章 基於列的NoSQL資料庫 121
11.1 基於列的NoSQL資料庫的實現原理 121
11.1.1 數據模型 121
11.1.2 架構 124
11.2 其他基於列的NoSQL資料庫 126
11.2.1 Apache HBase 126
11.2.2 Apache Cassandra 127
11.2.3 Baidu Tera 128
11.3 基於列的NoSQL資料庫的套用 128
11.3.1 HBase用於數據分析系統 128
11.3.2 HBase用於存儲呼叫記錄 129
第12章 基於文檔的NoSQL資料庫 131
12.1 基於文檔的NoSQL資料庫的實現原理 131
12.1.1 數據模型 131
12.1.2 自動分片 132
12.1.3 副本 132
12.1.4 索引 133
12.1.5 查詢路由 133
12.2 其他基於文檔的NoSQL資料庫 133
12.2.1 CouchDB 133
12.2.2 RethinkDB 134
12.3 基於文檔的NoSQL資料庫的套用 135
第13章 其他NoSQL資料庫 137
13.1 基於圖的NoSQL資料庫Neo4j 138
13.1.1 數據模型 138
13.1.2 圖的存儲 138
13.1.3 高可用性 139
13.1.4 水平擴展 139
13.2 多數據模型NoSQL資料庫OrientDB 139
13.2.1 基本概念 140
13.2.2 圖的表示 140
13.2.3 節點與集群 140
13.2.4 分片 141
13.2.5 ACID支持 141
13.2.6 CAP的權衡 142
13.2.7 集群配置信息的管理 142
13.3 時間序列NoSQL資料庫 142
第14章 NewSQL資料庫 143
14.1 NewSQL和CAP理論 144
14.2 採用新架構的NewSQL系統 145
14.2.1 谷歌的Megastore 145
14.2.2 谷歌的Spanner 146
14.2.3 谷歌的F1 147
14.2.4 阿里巴巴的OceanBase 148
14.2.5 其他採用新架構的NewSQL資料庫 152
第五部分 分散式系統的構建思想
第15章 雲化 157
15.1 雲化的技術基礎 157
15.1.1 虛擬機技術 157
15.1.2 容器技術 159
15.2 公有雲能提供什麼 159
15.3 雲化對軟體架構的要求 161
第16章 分散式系統的構建思想 163
16.1 一切都可能失敗與冗餘的思想 163
16.1.1 如何避免單點故障 164
16.1.2 避免單點故障的具體做法 165
16.2 水平而不是垂直擴展的思想 165
16.2.1 數據的水平擴展 166
16.2.2 服務的水平擴展 167
16.2.3 數據中心的水平擴展 167
16.3 儘可能簡單的思想 168
16.4 實用主義的思想 169
16.4.1 搜尋引擎作為查詢工具使用 169
16.4.2 阿里巴巴的OceanBase的架構 169
16.4.3 根據需要選擇最適合的開發工具和開發語言 170
16.4.4 根據需要選擇不同的存儲系統 170
16.5 異步化以解耦並削平峰值 170
16.6 最終一致性的思想 171
16.7 微服務的思想 171
16.8 MapReduce的思想 172
16.9 服務跟蹤的思想 172
16.10 資源池化的思想 173
第六部分 大型分散式系統案例研究及分析
第17章 大型分散式系統案例研究 177
17.1 案例研究之谷歌搜尋系統 177
17.2 案例研究之淘寶網 182
17.3 案例研究之阿里雲 185
17.4 案例研究之領英 189
第18章 關於分散式系統設計的思考 197
18.1 大型網際網路公司架構的共性 197
18.2 為何大型網際網路公司的架構如此相似 198
18.3 關於分散式監控系統 199
18.4 Linux系統調用epoll 200
18.5 關於外掛程式設計模式的實現 201
18.5.1 C/C++語言的動態庫形式的實現 202
18.5.2 Java語言的外掛程式模式實現 203
18.5.3 採用專用語言的外掛程式模式實現 205
18.6 關於分散式服務調用中間件的實現 205
18.7 動態連結還是靜態連結 206
18.8 無所不用其極的壓榨性能手段 206
18.8.1 編譯後代碼的原生態化 206
18.8.2 定製的Linux核心 207
18.8.3 定製的Java虛擬機 208
18.8.4 定製的MySQL 208
參考文獻 209
後記 211

相關詞條

熱門詞條

聯絡我們