TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
分布式系統開發實戰(簡體書)
滿額折

分布式系統開發實戰(簡體書)

人民幣定價:69.8 元
定  價:NT$ 419 元
優惠價:87365
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:10 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

本書從原理和實踐角度全面介紹如何設計分布式系統。內容包括節點、通信、並發與並行、面向物件的分布式架構、面向服務的分布式架構、面向消息的分布式架構、 EST 風格的架構、微服務架構、 Serverless 架構、 Cloud Native 架構、虛擬化與容器技術、分布式計算、分布式存儲、分布式監控、分布式版本控制、數據一致性、分布式事務、安全性、可用性等,內容豐富、案例新穎,相關理論與技術實踐較為前瞻。本書最後還提供了一個綜合實戰案例,手把手教讀者如何來基於Spring Cloud 技術來實現微服務架構。

作者簡介

在多家知名 IT 公司擔任項目經理、架構師、高級開發顧問等職位,具有多年軟件開發管理及系統架構經驗。負責過多個省、***大型分布式系統的設計與研發,參與了多個大型項目的微服務架構的技術改造,在實際工作中,積累了大量的分布式系統及微服務架構經驗。業余時間創建了 waylau.com 網站,用於分享個人技術心得。喜歡開源,長期躍於各大開源社區,是 CSDN、 開源中國、云棲社區等技術社區專家。為開源社區無私編著了《Spring Framework 4.x參考文檔》、《Netty 實戰(精髓)》、《REST 實戰》、《分布式 Java》、《Spring Boot 教程》、《Spring Security 教程》、《Thymeleaf 教程》等近30余篇技術教程,廣受網友好評。其中出版了《分布式系統常用技術及案例分析》、《Spring Boot 企業級應用開發實戰》、《Spring Cloud 微服務架構開發實戰》等專著。

名人/編輯推薦

(1)新。符合當今云架構發展現狀的開發技術,無論是大型企業還是個人開發者,都或多或少地采用了分布式的方式來開發和部署應用。
(2)全。涵蓋REST設計、測試、服務注冊、服務發現、安全、數據管理、消息通信、批處理、任務調度、運營、容器部署、持續發布等方面的知識。
(3)細。實戰案例輔以大量理論知識,讓讀者透徹理解每一個知識點。

目次

第 1章 分布式系統概述 1
1.1 什麼是分布式系統 1
1.2 分布式系統常用術語 2
1.3 集中式系統與分布式系統 3
1.4 分布式系統特徵 4
1.5 設計分布式系統所面臨的挑戰 5
1.6 本章小結 6
1.7 習題 6
第 2章 節點 7
2.1 什麼是線程 7
2.2 進程和線程 8
2.3 線程和纖程 8
2.4 編程語言中的線程物件 9
2.4.1 定義和啟動一個線程 9
2.4.2 暫停線程執行 9
2.4.3 中斷線程 10
2.4.4 等待另一個線程完成 11
2.5 節點之間的通信 11
2.5.1 消息丟失 11
2.5.2 消息亂序 12
2.5.3 數據錯誤 12
2.5.4 不可靠的TCP 12
2.6 本章小結 12
2.7 習題 13
第3章 通信 14
3.1 本地過程調用 14
3.1.1 本地過程調用的概念 14
3.1.2 本地過程調用的實現 14
3.2 遠程過程調用 16
3.2.1 遠程過程調用原理 16
3.2.2 如何實現遠程過程調用 18
3.2.3 遠程過程調用API 20
3.2.4 遠程過程調用發展歷程 20
3.3 常用網絡I/O模型 21
3.3.1 阻塞I/O模型 21
3.3.2 非阻塞I/O模型 22
3.3.3 I/O復用模型 22
3.3.4 信號驅動I/O模型 23
3.3.5 異步I/O模型 23
3.3.6 幾種I/O模型的比較 24
3.4 I/O操作中的常用術語 25
3.4.1 阻塞和非阻塞 25
3.4.2 同步與異步 25
3.4.3 總結 25
3.5 實戰:在Java中實現常用網絡I/O模型 26
3.5.1 Java OIO 26
3.5.2 Java NIO 29
3.5.3 Java AIO 33
3.6 事件驅動 37
3.6.1 事件驅動編程 37
3.6.2 事件循環的實現 38
3.6.3 Reactor模型 38
3.6.4 Proactor模型 40
3.7 本章小結 41
3.8 習題 41
第4章 並發與並行 42
4.1 並發與並行的區別 42
4.2 線程與並發 43
4.3 並發帶來的風險 43
4.3.1 死鎖 44
4.3.2 饑餓 45
4.3.3 活鎖 45
4.4 解決並發風險 45
4.4.1 同步 45
4.4.2 原子訪問 49
4.5 提升系統並發能力 49
4.5.1 無鎖化設計提升並發能力 49
4.5.2 緩存提升並發能力 49
4.5.3 更細顆粒度的並發單元 50
4.6 本章小結 50
4.7 習題 50
第5章 面向物件的分布式架構 51
5.1 基於物件的分布式架構 51
5.2 常用的分布式物件系統 52
5.2.1 微軟DCOM 52
5.2.2 CORBA 53
5.2.3 Java RMI 54
5.3 分布式物件系統優缺點 57
5.4 實戰:基於Java RMI實現分布式物件通信 57
5.4.1 示例概述 57
5.4.2 編寫RMI服務器 58
5.4.3 編寫RMI客戶端 60
5.4.4 運行 61
5.5 本章小結 61
5.6 習題 62
第6章 面向服務的分布式架構 63
6.1 什麼是面向服務的架構 63
6.2 SOA的基本概念 64
6.3 基於Web服務的SOA 65
6.3.1 XML-RPC 66
6.3.2 SOAP 66
6.3.3 Microsoft .NET Remoting 69
6.3.4 Java中的XML Web服務 75
6.3.5 超越SOAP 75
6.3.6 SOA的演變 76
6.4 Web服務的分類 76
6.4.1 “大”Web服務 76
6.4.2 RESTful Web服務 77
6.4.3 Web服務技術選型 77
6.5 實戰:基於JAX-WS實現Web服務 78
6.5.1 JAX-WS概述 78
6.5.2 創建Web服務器和客戶端的基本步驟 78
6.5.3 JAX-WS終端要求 79
6.5.4 創建基於JAX-WS的服務器 79
6.5.5 創建基於JAX-WS的客戶端 80
6.5.6 運行 80
6.6 本章小結 82
6.7 習題 82
第7章 面向消息的分布式架構 83
7.1 什麼是面向消息的分布式架構 83
7.1.1 常用術語 83
7.1.2 使用場景 83
7.1.3 常用技術 84
7.2 常見消息中間件產品介紹 84
7.2.1 Apache ActiveMQ 84
7.2.2 RabbitMQ 85
7.2.3 Apache RocketMQ 86
7.3 消息通信常用模式 88
7.3.1 工作隊列 88
7.3.2 發布/訂閱 89
7.3.3 路由 90
7.3.4 主題 91
7.3.5 RPC 92
7.4 了解JMS規範 94
7.4.1 JMS消息風格 94
7.4.2 JMS接口 95
7.5 實戰:基於JMS的消息發送和接收 96
7.5.1 項目概述 96
7.5.2 項目配置 97
7.5.3 編碼實現 99
7.5.4 運行 104
7.6 本章小結 107
7.7 習題 108
第8章 REST風格的架構 109
8.1 什麼是REST 109
8.2 REST設計原則 110
8.3 成熟度模型 111
8.3.1 第0級:使用HTTP作為傳輸方式 111
8.3.2 第 1級:引入了資源的概念 113
8.3.3 第 2級:根據語義使用HTTP動詞 113
8.3.4 第3級:使用HATEOAS 114
8.4 REST API管理 116
8.5 常用技術 118
8.5.1 JAX-RS規範 118
8.5.2 Jersey 123
8.5.3 Apache CXF 123
8.5.4 Spring Web MVC 124
8.6 實戰:基於Java實現REST API 124
8.6.1 基於Jersey來構建REST服務 124
8.6.2 基於Apache CXF來構建REST服務 131
8.6.3 基於Spring Web MVC來構建REST服務 140
8.7 本章小結 145
8.8 習題 145
第9章 微服務架構 146
9.1 什麼是微服務架構 146
9.2 微服務架構與SOA架構的區別 147
9.2.1 單體架構的例子 147
9.2.2 微服務架構的例子 148
9.3 何時采用微服務架構 150
9.4 常用技術 150
9.4.1 Jetty HTTP Server 151
9.4.2 構建REST程序 151
9.4.3 運行 153
9.5 實戰:基於Spring Boot實現微服務 153
9.5.1 配置環境 153
9.5.2 REST API設計 154
9.5.3 編寫程序代碼 155
9.5.4 安裝REST客戶端 159
9.5.5 運行、測試程序 160
9.6 微服務與通信 160
9.6.1 HTTP通信 161
9.6.2 消息通信 161
9.6.3 事件驅動的通信 161
9.7 了解CQRS 162
9.7.1 CQRS概述 162
9.7.2 CQRS與Event Sourcing的關係 163
9.7.3 CQRS好處 164
9.8 實戰:基於CQRS微服務通信 164
9.8.1 配置 165
9.8.2 Aggregate 165
9.8.3 Command 168
9.8.4 Event 169
9.8.5 測試 170
9.9 本章小結 171
9.10 習題 171
第 10章 Serverless架構 172
10.1 什麼是Serverless架構 172
10.2 Serverless架構的典型應用 173
10.2.1 UI驅動的應用 173
10.2.2 消息驅動的應用 174
10.3 常見的Serverless架構 175
10.3.1 AWS Lambda 175
10.3.2 Google Cloud Functions 175
10.3.3 Iron.io 175
10.3.4 IBM OpenWhisk 175
10.3.5 Serverless Framework 176
10.3.6 Azure WebJobs 176
10.4 Serverless架構原則 176
10.4.1 根據需要使用計算服務執行代碼 177
10.4.2 編寫單一用途的無狀態函數 177
10.4.3 設計基於推送的、事件驅動的管道 177
10.4.4 創建更粗實、更強大的前端 177
10.4.5 擁抱第三方服務 178
10.5 實戰:使用AWS平臺實現Serverless架構 178
10.6 本章小結 182
10.7 習題 182
第 11章 Cloud Native架構 183
11.1 Cloud Native概述 183
11.1.1 軟件需求的發展 183
11.1.2 開發方式的巨變 184
11.1.3 云是大勢所趨 185
11.2 Cloud Native特性 185
11.2.1 以云為基礎架構 186
11.2.2 云服務 186
11.2.3 無服務 186
11.2.4 可擴展 187
11.2.5 高可用 189
11.2.6 敏捷 190
11.2.7 云優先 190
11.3 12-Factor 191
11.3.1 基準代碼 192
11.3.2 依賴 192
11.3.3 配置 193
11.3.4 後端服務 193
11.3.5 構建、發布、運行 193
11.3.6 進程 194
11.3.7 端口綁定 194
11.3.8 並發 195
11.3.9 易處理 196
11.3.10 開發環境與在線環境等價 196
11.3.11 日志 196
11.3.12 管理進程 197
11.4 Cloud Native成功案例分析 197
11.4.1 Amazon 197
11.4.2 Netflix 198
11.4.3 淘寶網 199
11.5 Cloud Native與微服務架構的關係 201
11.6 Cloud Native與Serverless架構的關係 201
11.7 Cloud Native的優點及面臨的挑戰 201
11.7.1 Cloud Native優點 201
11.7.2 Cloud Native不是“銀彈” 202
11.7.3 面臨的挑戰 203
11.8 本章小結 203
11.9 習題 203
第 12章 虛擬化與容器技術 204
12.1 虛擬化技術 204
12.2 容器與虛擬機 204
12.2.1 成熟度方面的比較 205
12.2.2 啟動速度的比較 205
12.2.3 安全方面的比較 205
12.2.4 性能方面的比較 206
12.3 基於容器的持續部署 206
12.3.1 持續部署管道 207
12.3.2 測試 207
12.3.3 構建 208
12.3.4 部署 209
12.3.5 藍-綠部署 209
12.3.6 運行預集成以及集成後測試 210
12.3.7 回滾與清理 211
12.3.8 決定每個步驟的執行環境 212
12.3.9 完成整個持續部署流 212
12.4 容器技術與微服務架構 212
12.4.1 基於Google Kubernetes架構 213
12.4.2 基於DaoCloud DCE架構 213
12.5 容器技術與Cloud Native架構 213
12.6 實戰:基於Docker發布微服務 214
12.6.1 創建微服務 214
12.6.2 微服務容器化 214
12.6.3 使用Gradle來構建Docker image 215
12.6.4 運行image 216
12.6.5 訪問應用 217
12.6.6 關閉容器 217
12.6.7 Docker發布微服務 217
12.7 本章小結 217
12.8 習題 217
第 13章 分布式計算 218
13.1 分布式計算概述 218
13.2 分布式計算應用場景 218
13.3 分布式計算常用技術 219
13.3.1 MapReduce 219
13.3.2 Apache Hadoop 221
13.3.3 Apache Spark 222
13.4 實戰:基於Spark詞頻統計 223
13.4.1 項目概述 224
13.4.2 項目配置 224
13.4.3 編碼實現 224
13.4.4 運行 225
13.5 本章小結 227
13.6 習題 227
第 14章 分布式存儲 228
14.1 分布式存儲概述 228
14.2 分布式存儲應用場景 228
14.3 分布式存儲常用技術 229
14.3.1 Bigtable 229
14.3.2 Apache HBase 231
14.3.3 Apache Cassandra 233
14.3.4 Memcached 235
14.3.5 Redis 237
14.3.6 MongoDB 237
14.4 實戰:基於MongoDB文件服務器 239
14.4.1 文件服務器的需求 239
14.4.2 所需技術 239
14.4.3 文件服務器的實現 241
14.4.4 運行 247
14.4.5 其他配置項 247
14.5 本章小結 248
14.6 習題 248
第 15章 分布式監控 249
15.1 分布式監控概述 249
15.2 分布式監控應用場景 249
15.3 分布式監控常用技術 249
15.3.1 Nagios 250
15.3.2 Zabbix 250
15.3.3 Consul 253
15.3.4 ZooKeeper 255
15.4 實戰:基於ZooKeeper的服務注冊和發現 258
15.4.1 項目概述 258
15.4.2 項目配置 258
15.4.3 編碼實現 259
15.4.4 運行 262
15.5 本章小結 264
15.6 習題 264
第 16章 分布式版本控制 265
16.1 版本控制系統簡史 265
16.2 集中式與分布式版本控制系統 265
16.3 常用技術 266
16.3.1 Bazaar 266
16.3.2 Mercurial 266
16.3.3 Git 267
16.4 了解Git Flow 269
16.4.1 分支定義 269
16.4.2 新功能開發工作流 269
16.4.3 Bug修復工作流 270
16.4.4 版本發布工作流 270
16.5 本章小結 271
16.6 習題 271
第 17章 數據一致性 272
17.1 什麼是CAP理論 272
17.2 為什麼CAP只能三選二 273
17.3 CAP常見模型 274
17.3.1 犧牲分區容錯性(CA模型) 274
17.3.2 犧牲可用性(CP模型) 274
17.3.3 犧牲一致性(AP模型) 274
17.4 CAP的意義及發展 275
17.4.1 CAP最新發展 275
17.4.2 BASE 275
17.5 以數據為中心的一致性模型 276
17.5.1 嚴格一致性 276
17.5.2 持續一致性 276
17.5.3 順序一致性 276
17.5.4 因果一致性 276
17.5.5 入口一致性 276
17.6 以客戶為中心的一致性模型 277
17.6.1 單調讀一致性 277
17.6.2 單調寫一致性 277
17.6.3 讀寫一致性 277
17.6.4 寫讀一致性 277
17.7 本章小結 278
17.8 習題 278
第 18章 分布式事務 279
18.1 本地事務 279
18.1.1 一個銀行轉賬的例子 279
18.1.2 事務隔離級別 280
18.2 分布式事務面臨的挑戰 282
18.3 節點復制 283
18.3.1 Master-Slave復制 283
18.3.2 Master-Master多主復制 283
18.4 兩階段提交 283
18.4.1 準備階段 284
18.4.2 提交階段 284
18.4.3 兩階段提交狀態機 284
18.4.4 兩階段提交的缺陷 285
18.5 三階段提交 285
18.5.1 CanCommit 285
18.5.2 PreCommit 286
18.5.3 DoCommit 286
18.5.4 三階段提交狀態機 286
18.5.5 三階段提交的缺陷 287
18.6 Paxos算法 287
18.6.1 問題描述 287
18.6.2 提案的選定 288
18.6.3 獲取被選定的提案值 289
18.6.4 進展性 290
18.6.5 實現 290
18.6.6 總結 291
18.6.7 缺陷 292
18.7 Raft算法 292
18.7.1 Raft概述 293
18.7.2 復制狀態機 293
18.7.3 Raft算法基礎 294
18.7.4 Raft算法Leader選舉 296
18.7.5 Raft算法日志同步 297
18.7.6 Raft算法安全性 299
18.7.7 處理Follower和Candidate異常 302
18.7.8 時間要求及可用性 302
18.7.9 集群成員關係變更 303
18.7.10 日志壓縮 305
18.7.11 客戶端交互 306
18.7.12 總結 307
18.8 消息 307
18.8.1 本地消息表 308
18.8.2 事務消息 308
18.8.3 如何保障冪等性 309
18.8.4 總結 310
18.9 本章小結 310
18.10 習題 310
第 19章 安全性 311
19.1 基本概念 311
19.1.1 安全威脅、策略和機制 311
19.1.2 密碼與數字簽名 312
19.2 加密算法 313
19.2.1 對稱加密 313
19.2.2 使用對稱密鑰加密的數字簽名 313
19.2.3 非對稱加密 314
19.2.4 使用公鑰加密的數字簽名 315
19.3 安全通道 315
19.3.1 SSL/TLS 315
19.3.2 SSL握手過程 316
19.3.3 HTTPS 318
19.4 訪問控制 318
19.4.1 防火墻 319
19.4.2 堡壘機 319
19.4.3 拒絕服務 319
19.4.4 訪問控制的模型 320
19.5 實戰:基於Spring Security實現安全認證 320
19.5.1 添加依賴 321
19.5.2 添加業務代碼 322
19.5.3 配置消息轉換器 322
19.5.4 配置Spring Security 323
19.5.5 創建應用配置類 324
19.5.6 創建內嵌Jetty的服務器 324
19.5.7 應用啟動器 325
19.5.8 運行應用 326
19.6 本章小結 327
19.7 習題 327
第 20章 可用性 328
20.1 故障不可避免 328
20.2 使用冗余提升系統可用性 328
20.3 常用副本控制協議 329
20.3.1 中心化副本控制協議 329
20.3.2 primary-secondary協議 329
20.3.3 去中心化副本控制協議 331
20.4 負載均衡技術 332
20.4.1 客戶端發現模式 332
20.4.2 服務端發現模式 333
20.5 實戰:基於NGINX實現服務高可用 334
20.5.1 配置負載均衡 334
20.5.2 負載均衡常用算法 335
20.5.3 實現Web服務的高可用 336
20.5.4 運行 336
20.6 本章小結 337
20.7 習題 337
第 21章 綜合實戰:基於Spring Cloud的微服務架構設計與實現 338
21.1 Spring Cloud概述 338
21.1.1 什麼是Spring Cloud 338
21.1.2 Spring Cloud與Spring Boot的關係 339
21.2 Spring Cloud入門配置 339
21.2.1 Maven配置 339
21.2.2 Gradle配置 340
21.2.3 聲明式方法 340
21.3 Spring Cloud的子項目介紹 341
21.3.1 Spring Cloud子項目的組成 341
21.3.2 Spring Cloud組件的版本 342
21.4 實現微服務的注冊與發現 343
21.4.1 服務發現的意義 343
21.4.2 如何集成Eureka Server 343
21.4.3 如何集成Eureka Client 347
21.4.4 實現服務的注冊與發現 347
21.5 本章小結 348
21.6 習題 348
附錄 本書所涉及的軟件及相關版本 349
參考文獻 350

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 365
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區