3dwoo大學簡體電腦書店
精通Spring Cloud微服務架構
( 簡體 字)
作者:[美] 皮奧特·閔可夫斯基 著 黃進青 譯類別:1. -> 程式設計 -> JAVA -> Spring
出版社:清華大學出版社精通Spring Cloud微服務架構 3dWoo書號: 51611
詢問書籍請說出此書號!
有庫存
NT售價: 595
出版日:7/1/2019
頁數:358
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302530251 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第一部分微服務架構和SpringCloud項目基礎知識
第1章微服務簡介3
1.1微服務的優點3
1.2使用SpringFramework構建微服務4
1.3云原生應用程序開發方法4
1.4了解微服務架構5
1.4.1理解服務發現的必要性7
1.4.2服務之間的通信9
1.4.3故障和斷路器11
1.5小結11
第2章使用微服務的Spring13
2.1關于SpringBoot13
2.2使用SpringBoot開發應用程序15
2.2.1自定義配置文件17
2.2.2創建RESTfulWeb服務20
2.3API文檔23
2.3.1聯合使用Swagger2和SpringBoot23
2.3.2使用SwaggerUI測試API24
2.4SpringBoot執行器功能27
2.4.1應用信息27
2.4.2健康信息29
2.4.3指標信息30
2.5開發者工具32
2.6將應用程序與數據庫集成33
2.7運行應用程序36
2.8小結40
第3章SpringCloud概述41
3.1從基礎開始41
3.1.1NetflixOSS42
3.1.2使用Eureka進行服務發現43
3.1.3使用Zuul路由43
3.1.4使用Ribbon實現負載均衡44
3.1.5編寫JavaHTTP客戶端44
3.1.6Hystrix的延遲和容錯能力44
3.1.7使用Archaius進行配置管理45
3.2發現和分布式配置45
3.2.1可選替代方案—Consul46
3.2.2ApacheZookeeper46
3.2.3其他項目47
3.3使用Sleuth進行分布式跟蹤47
3.4消息傳遞和集成48
3.5云平臺支持49
3.6其他有用的庫50
3.6.1安全性51
3.6.2自動化測試51
3.6.3集群功能51
3.7項目概述51
3.8版本列車52
3.9小結54
第二部分微服務架構常見元素和SpringCloud實現
第4章服務發現57
4.1在服務器端運行Eureka57
4.2在客戶端啟用Eureka59
4.2.1關機時取消注冊60
4.2.2以編程方式使用發現客戶端62
4.3高級配置設置63
4.3.1刷新注冊表63
4.3.2更改實例標識符65
4.3.3選擇使用IP地址66
4.3.4響應緩存66
4.4啟用客戶端和服務器之間的安全通信67
4.5EurekaAPI69
4.6副本和高可用性70
4.6.1樣本解決方案的架構70
4.6.2構建示例應用程序71
4.6.3故障轉移75
4.7區域76
4.7.1具有獨立服務器的區域77
4.7.2構建示例應用程序78
4.8小結80
第5章使用SpringCloudConfig進行分布式配置83
5.1HTTPAPI資源簡介84
5.2構建服務器端應用程序86
5.3構建客戶端應用程序87
5.4客戶端引導方法88
5.5存儲庫后端類型91
5.5.1文件系統后端91
5.5.2Git后端92
5.5.3Vault后端96
5.6其他功能98
5.6.1啟動失敗和重試98
5.6.2保護客戶端的安全99
5.7自動重新加載配置99
5.7.1解決方案架構99
5.7.2使用@RefreshScope重新加載配置100
5.7.3使用來自消息代理的事件103
5.7.4監視ConfigServer上的存儲庫更改104
5.8小結108
第6章微服務之間的通信109
6.1不同類型的通信109
6.2使用SpringCloud進行同步通信109
6.3使用Ribbon執行負載均衡110
6.3.1使用Ribbon客戶端啟用微服務之間的通信110
6.3.2靜態負載均衡配置111
6.3.3調用其他服務112
6.4將RestTemplate與服務發現結合使用115
6.5使用Feign客戶端118
6.5.1對不同區域的支持118
6.5.2為應用程序啟用Feign119
6.5.3繼承支持123
6.5.4手動創建客戶端124
6.5.5客戶端的自定義124
6.6小結126
第7章高級負載均衡和斷路器127
7.1負載均衡規則127
7.1.1WeightedResponseTime規則128
7.1.2引入Hoverfly進行測試128
7.1.3測試規則129
7.2自定義Ribbon客戶端131
7.3帶Hystrix的斷路器模式133
7.3.1使用Hystrix構建應用程序133
7.3.2跳閘斷路器137
7.4監控延遲和容錯140
7.4.1公開Hystrix的指標流141
7.4.2Hystrix儀表板142
7.5故障和帶有Feign的斷路器模式149
7.5.1重試與Ribbon的連接149
7.5.2Hystrix對Feign的支持150
7.6小結153
第8章使用API網關進行路由和過濾155
8.1使用SpringCloudNetflixZuul155
8.1.1構建網關應用程序156
8.1.2與服務發現集成157
8.1.3自定義路由配置158
8.1.4管理端點161
8.1.5提供Hystrix回退bean162
8.1.6Zuul過濾器164
8.2使用SpringCloudGateway166
8.2.1為項目啟用SpringCloudGateway167
8.2.2內置謂詞和過濾器168
8.2.3微服務的網關170
8.2.4與服務發現集成172
8.3小結173
第9章分布式日志記錄和跟蹤175
9.1微服務的最佳日志記錄實踐175
9.2使用SpringBoot記錄日志177
9.3使用ELKStack集中日志179
9.3.1在機器上設置ELK堆棧180
9.3.2將應用程序與ELKStack集成181
9.4SpringCloudSleuth188
9.4.1將Sleuth與應用程序集成189
9.4.2使用Kibana搜索事件190
9.4.3集成Sleuth和Zipkin192
9.5小結198
第10章其他配置和發現功能199
10.1使用SpringCloudConsul199
10.1.1運行Consul代理200
10.1.2在客戶端集成201
10.1.3服務發現201
10.1.4分布式配置208
10.2使用SpringCloudZookeeper212
10.2.1運行Zookeeper213
10.2.2服務發現214
10.2.3分布式配置216
10.3小結217
第11章消息驅動的微服務219
11.1了解SpringCloudStream219
11.2構建消息傳遞系統220
11.2.1啟用SpringCloudStream220
11.2.2聲明和綁定頻道222
11.2.3自定義與RabbitMQ代理的連接224
11.2.4與其他SpringCloud項目集成228
11.3發布/訂閱模型231
11.3.1運行示例系統232
11.3.2擴展和分組233
11.4配置選項238
11.4.1SpringCloudStream屬性238
11.4.2綁定屬性239
11.5高級編程模型240
11.5.1制作消息240
11.5.2轉換240
11.5.3有條件地使用消息241
11.6使用ApacheKafka242
11.6.1運行Kafka242
11.6.2自定義應用程序設置243
11.6.3KafkaStreamsAPI支持244
11.6.4配置屬性245
11.7多個綁定器245
11.8小結247
第12章保護API的安全249
12.1為SpringBoot啟用HTTPS249
12.2保證發現服務器的安全251
12.2.1注冊安全的應用程序251
12.2.2通過HTTPS服務Eureka251
12.3保證配置服務器的安全255
12.3.1加密和解密255
12.3.2配置客戶端和服務器的身份驗證257
12.4使用OAuth2進行授權259
12.4.1OAuth2簡介259
12.4.2構建授權服務器260
12.4.3客戶端配置264
12.4.4使用JDBC后端存儲266
12.4.5服務間授權269
12.4.6在API網關上啟用SSO273
12.5小結274
第13章測試Java微服務275
13.1測試策略275
13.2測試SpringBoot應用程序277
13.2.1構建示例應用程序278
13.2.2與數據庫集成279
13.3單元測試280
13.4組件測試282
13.4.1使用內存數據庫運行測試282
13.4.2處理HTTP客戶端和服務發現283
13.4.3實現示例測試285
13.5集成測試286
13.5.1對測試進行分類286
13.5.2捕獲HTTP流量287
13.6契約測試289
13.6.1使用Pact289
13.6.2使用SpringCloudContract294
13.7性能測試301
13.8小結305
第三部分Docker支持和SpringCloud平臺
第14章Docker支持309
14.1關于Docker309
14.2安裝Docker311
14.3常用的Docker命令312
14.3.1運行和停止容器312
14.3.2列出并刪除容器313
14.3.3提取和推送鏡像314
14.3.4構建鏡像315
14.3.5創建網絡316
14.4創建具有微服務的Docker鏡像316
14.4.1Dockerfile317
14.4.2運行容器化微服務319
14.4.3使用Maven插件構建鏡像321
14.4.4高級Docker鏡像323
14.5持續交付325
14.5.1將Jenkins與Docker集成325
14.5.2構建管道327
14.6使用Kubernetes330
14.6.1概念和組件331
14.6.2通過Minikube以本地方式運行Kubernetes332
14.6.3部署應用程序333
14.6.4維護集群336
14.7小結338
第15章云平臺上的Spring微服務339
15.1PivotalCloudFoundry339
15.1.1使用模式340
15.1.2準備應用程序341
15.1.3部署應用程序343
15.1.4維護347
15.2Heroku平臺352
15.2.1部署方法352
15.2.2準備應用程序355
15.2.3測試部署356
15.3小結358
本書詳細闡述了與Spring Cloud微服務框架相關的基本解決方案,主要包括微服務簡介、使用微服務的Spring、Spring Cloud概述、服務發現、使用Spring Cloud Config進行分布式配置、微服務之間的通信、高級負載均衡和斷路器、使用API網關進行路由和過濾、分布式日志記錄和跟蹤、其他配置和發現功能、消息驅動的微服務、保護API的安全、測試Java微服務、Docker支持、云平臺上的Spring微服務等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
開發、部署和運營云應用程序應該像本地應用程序一樣簡單。這應該是任何云平臺、庫或工具背后的管理原則。Spring Cloud可以輕松地為云開發JVM應用程序。本書將介紹Spring Cloud并幫助開發人員掌握其功能。
本書首先介紹如何配置Spring Cloud服務器并運行Eureka服務器以啟用服務注冊和發現;然后再深入剖析與負載均衡和斷路相關的技術,包括利用Feign客戶端的所有功能;最后討論和研究高級主題,包括如何為Spring Cloud實現分布式跟蹤解決方案并構建消息驅動的微服務架構。
本書適合的讀者
本書對熱衷于利用Spring Cloud的開發人員有很強的吸引力。Spring Cloud是一個開源庫,可幫助開發人員快速構建分布式系統。了解Java和Spring Framework將對本書的學習很有幫助,但之前不需要接觸Spring Cloud。
本書內容綜述
本書的寫作思路明確,結構簡單易懂。全書共分為3個部分,第一部分是“微服務架構和Spring Cloud項目基礎知識”,包括第1章~第3章,詳細介紹了微服務、Spring Boot和Spring Cloud的基礎知識。
? 第1章“微服務簡介”,將介紹微服務架構、云環境等。讀者將學習并理解基于微服務的應用程序和一體化應用程序之間的區別,同時了解如何遷移到微服務應用程序。
? 第2章“使用微服務的Spring”,將介紹Spring Boot框架。本章將詳細說明如何有效地使用Spring Boot框架來創建微服務應用程序。此外還將介紹使用Spring MVC注解創建REST API、使用Swagger2提供API文檔,以及使用Spring Boot Actuator端點公開運行狀況檢查和指標數據等主題。
? 第3章“Spring Cloud概述”,將簡要介紹作為Spring Cloud一部分的主要項目。它將側重于說明Spring Cloud實現的主要模式并將它們分配給特定項目。
本書的第二部分是“微服務架構常見元素和Spring Cloud實現”,包括第4章~第13章,詳細介紹了Spring Cloud各個組件的配置和應用。
? 第4章“服務發現”,將使用Spring Cloud Netflix Eureka描述服務發現模式。本章將詳細說明如何在獨立模式下運行Eureka服務器,以及如何使用對等副本運行多個服務器實例。此外還將介紹如何在客戶端啟用發現并在不同區域中注冊這些客戶端。
? 第5章“使用Spring Cloud Config進行分布式配置”,將詳細介紹如何在應用程序中使用Spring Cloud Config進行分布式配置。本章將說明如何使用Spring Cloud Bus啟用屬性源的不同后端存儲庫并推送更改通知。通過比較發現第一個引導程序和配置第一個引導程序方法,詳細說明了發現服務和配置服務器之間的集成。
? 第6章“微服務之間的通信”,將描述參與服務間通信的最重要元素:HTTP客戶端和負載均衡器。本章將詳細介紹如何在有或沒有服務發現的情況下使用Spring RestTemplate、Ribbon和Feign客戶端。
? 第7章“高級負載均衡和斷路器”,將描述與微服務之間的服務間通信相關的更高級主題。本章將詳細介紹如何使用Ribbon客戶端實現不同的負載均衡算法,使用Hystrix啟用斷路器模式并使用Hystrix儀表板監控通信統計信息。
? 第8章“使用API網關進行路由和過濾”,將比較用作Spring云應用程序的API網關和代理的兩個項目:Spring Cloud Netlix Zuul和Spring Cloud Gateway。本章將詳細介紹如何將它們與服務發現集成,并創建簡單而更高級的路由和過濾 規則。
? 第9章“分布式日志記錄和跟蹤”,將介紹一些流行的工具,用于收集和分析由微服務生成的日志記錄和跟蹤信息。本章將說明如何使用Spring Cloud Sleuth附加跟蹤信息和關聯消息,此外還將運行與Elastic Stack集成的示例應用程序,以便發送日志消息,并使用Zipkin來收集跟蹤的信息。
? 第10章“其他配置和發現功能”,將介紹兩種用于服務發現和分布式配置的流行產品:Consul和ZooKeeper。本章將詳細說明如何在本地運行這些工具,并將Spring Cloud應用程序與它們集成在一起。
? 第11章“消息驅動的微服務”,將指導開發人員如何在微服務之間提供異步的、消息驅動的通信。本章將詳細介紹如何將RabbitMQ和Apache Kafka消息代理與Spring Cloud應用程序集成,以實現異步一對一和發布/訂閱通信方式。
? 第12章“保護API的安全”,將描述保護微服務的各種方法。本章將實現一個由所有先前引入的元素組成的系統,這些元素通過SSL相互通信。此外還將詳細說明如何使用OAuth2和JWT令牌來給傳入API的請求授權。
? 第13章“測試Java微服務”,將描述微服務測試的不同策略。它將側重于演示由使用者驅動的契約測試,這尤其適用于基于微服務的環境。此外還將介紹如何使用Hoverfly、Pact、Spring Cloud Contract、Gatling等框架來實現不同類型的自動化測試。
本書的第三部分是“Docker支持和Spring Cloud平臺”,包括第14章~第15章,詳細介紹了Docker容器、Pivotal Cloud Foundry和Heroku云平臺。
? 第14章“Docker支持”,將簡要介紹Docker。它將側重于描述最常用的Docker命令,這些命令用于在容器化環境中運行和監視微服務。此外還將詳細說明如何使用流行的持續集成服務器(Jenkins)構建和運行容器,并將它們部署在Kubernetes平臺上。
? 第15章“云平臺上的Spring微服務”,將介紹兩個支持Java應用程序的流行云平臺:Pivotal Cloud Foundry和Heroku。本章將詳細說明如何使用命令行工具或Web控制臺在這些平臺上部署、啟動、擴展和監視應用程序。
閱讀基礎
要順利閱讀本書并完成所有代碼示例,讀者應具備以下基礎條件:
? 有效的互聯網連接
? Java 8+
? Docker
? Maven
? Git客戶端
下載示例代碼文件
讀者可以從www.packtpub.com下載本書的示例代碼文件。具體步驟如下:
(1)登錄或注冊www.packtpub.com。
(2)選擇Support(支持)選項卡。
(3)單擊Code Downloads&Errata(代碼下載和勘誤表)。
(4)在Search(搜索)框中輸入圖書名稱Mastering Spring Cloud,然后按照屏幕上的說明進行操作。
下載文件后,請確保使用最新版本解壓縮或解壓縮文件夾:
? WinRAR/7-Zip(Windows系統)
? Zipeg/iZip/UnRarX(Mac系統)
? 7-Zip/PeaZip(Linux系統)
該書的代碼包也已經在GitHub上托管,網址為https://github.com/PacktPublishing/ Mastering-Spring-Cloud,歡迎訪問。
本書約定
本書中使用了許多文本約定。
(1)CodeInText:表示文本中的代碼字、數據庫表名、文件夾名、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入和Twitter句柄等。以下段落就是一個示例。
“HTTP API端點(http://localhost:8889/client-service-zone3.yml)的最后一個可用版本,返回與輸入文件相同的數據。”
(2)有關代碼塊的設置如下所示。

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

(3)當我們希望引起讀者對代碼塊的特定部分的注意時,相關的行或項目以粗體顯示。

spring:
rabbitmq:
host:
port

(4)任何命令行輸入或輸出都采用如下所示的粗體代碼形式。

$ curl -H“X-Vault-Token:client”-X GET
(5)本書還使用了以下兩個圖標。
表示警告或重要的注意事項。
表示提示或小技巧。
關于作者
Piotr Mińkowski擁有超過10年的銀行和電信行業開發人員和架構師的工作經驗。他擅長Java以及與之相關的技術、工具和框架。目前他在波蘭的移動運營商Play公司工作,負責IT系統架構。他幫助該公司完成了從一體化應用程序/面向服務的架構(SOA)到基于微服務的架構的遷移工作,還幫助建立了完整的持續集成和持續交付環境。
關于審稿者
Samer ABDELKAFI擁有超過13年的軟件架構師和工程師工作經驗,主要專注于開源技術。他為不同領域的眾多項目做出了貢獻,如銀行、保險、教育、公共服務和公用事業計費等。2016年年底,他創建了DEVACT,一家專門從事信息技術咨詢的公司。除了日常工作之外,Samer還經常在他的博客中分享自己的經驗,撰寫與Java和Web技術相關的文章。
pagetop