圖書內容
本書詳細闡述了與Spring Boot 2.0相關的基本解決方案,主要包括定製auto-configuration、Spring CLI和Actuator、Spring Cloud和配置操作、Spring Cloud Netflix和Service Discovery、構建Spring Boot RESTful微服務、利用Netflix Zuul 創建API網關、利用Feign客戶端簡化HTTP API、構建事件驅動和異步回響式系統、利用Hystrix和Turbine構建彈性系統、測試Spring Boot應用程式、微服務的容器化、API管理器、雲部署(AWS)、生產服務監視和最佳實踐等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
目錄
第1章 Spring Boot 2.0 1
1.1 Spring Boot概述 2
1.2 利用Spring Boot簡化應用程式開發 3
1.3 Spring Boot中的核心組件 5
1.3.1 Spring Boot Starter 5
1.3.2 Spring Boot Starter Parent POM 7
1.3.3 Spring Boot auto-configuration 7
1.3.4 啟用Spring Boot auto-configuration 9
1.3.5 Spring Boot CLI 11
1.3.6 Spring Boot Actuator 11
1.4 設定Spring Boot工作區 12
1.4.1 利用Maven設定Spring Boot 13
1.4.2 利用Gradle設定Spring Boot 13
1.5 開發第一個Spring Boot應用程式 15
1.5.1 使用Web界面 15
1.5.2 利用STS IDE創建Spring Boot項目 17
1.6 實現REST服務 19
1.7 Spring Boot 2.0中的新特性 22
1.8 本章小結 22
第2章 定製auto-configuration 25
2.1 理解auto-configuration 26
2.2 定製Spring Boot 27
2.2.1 利用Spring Boot屬性進行定製 27
2.2.2 替換已生成的Bean 29
2.2.3禁用特定的auto-configuration類29
2.2.4修改庫的依賴關係30
2.3基於屬性的配置外部化31
2.3.1屬性的評估順序31
2.3.2重命名Spring應用程式中的application.properties32
2.4外部配置應用程式屬性33
2.5基於日誌記錄的調優35
2.6YAML配置檔案36
2.6.1針對屬性的YAML36
2.6.2單一YAML檔案中的多個屬性37
2.7定製應用程式錯誤頁面37
2.8本章小結39
第3章SpringCLI和Actuator41
3.1使用SpringBootCLI41
3.1.1安裝SpringBootCLI42
3.1.2從安裝檔案中手動安裝SpringBootCLI42
3.1.3使用SDKMAN。安裝SpringBootCLI43
3.1.4利用OSXHomebrew安裝SpringBootCLI43
3.2使用Initializr44
3.3SpringBootActuator48
3.3.1在應用程式中啟用SpringBootActuator49
3.3.2分析Actuator的端點49
3.3.3顯示配置細節51
3.3.4顯示指標端點56
3.3.5顯示應用程式信息57
3.3.6關閉應用程式59
3.3.7自定義Actuator端點59
3.3.8創建一個自定義端點64
3.4Actuator端點的安全性66
3.5SpringBoot2.x中的Actuator67
3.6本章小結68
第4章SpringCloud和配置操作69
4.1原生雲應用程式架構69
4.1.1微服務架構71
4.1.2微服務的優點72
4.1.3微服務面臨的挑戰73
4.2SpringCloud簡介74
4.2.1雲和微服務程式的構造塊74
4.2.2SpringCloud套用76
4.3配置SpringCloud應用程式77
4.4創建配置生成器—SpringCloudConfigServer78
4.5實現CloudConfigServer79
4.5.1配置application.properties檔案80
4.5.2創建Git存儲庫作為配置存儲80
4.6利用模式配置多個存儲庫83
4.6.1身份驗證84
4.6.2force-pull屬性85
4.7創建SpringCloud客戶端85
4.8本章小結87
第5章SpringCloudNetflix和ServiceDiscovery89
5.1SpringCloudNetflix簡介89
5.2微服務架構中的ServiceDiscovery90
5.3實現ServiceDiscovery—EurekaServer92
5.3.1Maven構建配置檔案92
5.3.2Gradle構建配置檔案93
5.3.3啟用Eureka伺服器作為DiscoveryService伺服器94
5.4實現ServiceDiscovery—Eureka客戶端96
5.4.1添加Maven依賴關係配置96
5.4.2Gradle構建配置98
5.5利用Eureka註冊客戶端99
5.5.1使用REST服務102
5.5.2使用EurekaClient102
5.5.3FeignClient107
5.6本章小結111
第6章構建SpringBootRESTful微服務113
6.1基於SpringBoot的微服務113
6.1.1bootstrap.yml和application.yml簡介114
6.1.2簡單的微服務示例115
6.2SpringData簡介128
6.2.1ApacheIgnite存儲庫129
6.2.2SpringDataMongoDB129
6.2.3SpringDataJPA130
6.3本章小結130
第7章利用NetflixZuul創建API網關133
7.1API網關模式需求133
7.1.1APIGateway模式的優點135
7.1.2APIGateway的一些缺點135
7.1.3APIGateway模式組件135
7.2利用NetflixZuulProxy實現APIGateway136
7.2.1利用Maven依賴關係包含Zuul137
7.2.2啟用Zuul服務代理137
7.2.3配置Zuul屬性138
7.2.4添加過濾器141
7.3本章小結144
第8章利用Feign客戶端簡化HTTPAPI145
8.1Feign基礎知識145
8.2在雲應用程式中包含Feign148
8.2.1重載Feign的默認配置153
8.2.2創建Feign客戶端155
8.2.3Feign繼承機制156
8.2.4多重繼承156
8.3Feign客戶端的高級套用157
8.4異常處理158
8.5自定義編碼器和解碼器159
8.5.1自定義編碼器160
8.5.2自定義解碼器161
8.6Feign和Hystrix161
8.7Feign客戶端單元測試163
8.8本章小結164
第9章構建事件驅動和異步回響式系統165
9.1事件驅動型架構模式165
9.1.1調停者拓撲165
9.1.2代理拓撲166
9.2回響式編程簡介167
9.2.1SpringReactive167
9.2.2ReactiveX168
9.3命令查詢的責任分離簡介168
9.3.1EventSourcing模式簡介170
9.3.2最終一致性171
9.4構建事件驅動型回響式異步系統172
9.5SpringCloudStreaming簡介173
9.5.1向應用程式中添加Kafka174
9.5.2安裝和運行Kafka175
9.5.3Kafka配置屬性175
9.5.4用於寫入Kafka的服務176
9.5.5RestAPI控制器177
9.5.6監聽Kafka主題177
9.6本章小結181
第10章利用Hystrix和Turbine構建彈性系統183
10.1斷路器模式184
10.2使用Hystrixlibrary186
10.3在應用程式中配置Hystrix187
10.3.1Maven依賴關係188
10.3.2啟用斷路器188
10.3.3向服務中添加Hystrix註解189
10.3.4錯誤傳遞192
10.4在客戶服務中實現REST控制器192
10.5構建和測試客戶服務195
10.6自定義默認的配置項196
10.7HystrixMetricsStream198
10.8在項目中實現HystrixDashboard199
10.9Turbine儀錶盤201
10.10基於Hystrix和Feign的REST使用者204
10.11本章小結206
第11章測試SpringBoot應用程式207
11.1測試驅動開發207
11.2單元測試機制208
11.2.1單元測試的優點211
11.2.2單元測試的缺點212
11.2.3其他模擬庫212
11.3集成測試212
11.3.1Spring測試的優點214
11.3.2激活測試類的配置214
11.4SpringBoot應用程式的JUnit測試214
11.5使用Mockito模擬服務216
11.6測試RESTful服務契約的Postman217
11.7本章小結220
第12章微服務的容器化221
12.1微服務架構的容器222
12.1.1虛擬機和容器222
12.1.2容器方案的優點224
12.1.3面向容器方案的缺點224
12.2Docker簡介225
12.2.1安裝Docker226
12.2.2在Linux上安裝Docker226
12.2.3在Windows中安裝Docker227
12.2.4Docker架構229
12.2.5Docker引擎231
12.2.6Docker容器232
12.2.7編寫Dockerfile233
12.3Docker化SpringBoot應用程式235
12.4利用Maven創建Docker鏡像239
12.5DockerCompose簡介240
12.5.1安裝DockerCompose241
12.5.2使用DockerCompose242
12.5.3編寫docker-compose檔案242
12.5.4基於docker-compose檔案的編排操作244
12.5.5利用docker-compose和負載平衡擴展容器247
12.6Kubernetes簡介248
12.7本章小結249
第13章API管理器251
13.1API管理251
13.1.1API管理軟體的優點252
13.1.2API管理工具252
13.2速率限制252
13.3KONG簡介253
13.3.1基於KONG架構的微服務RESTAPI254
13.3.2未採用KONG架構的API套用255
13.3.3安裝KONG255
13.3.4使用KONGAPI257
13.4Swagger265
13.4.1Swagger套用265
13.4.2在微服務中使用Swagger266
13.4.3Swagger的優點277
13.5本章小結278
第14章雲部署(AWS)279
14.1AWSEC2實例279
14.2AWS上的微服務架構284
14.3在AWSEC2上安裝Docker289
14.4在AWSEC2上運行微服務291
14.5本章小結293
第15章生產服務監視和最佳實踐295
15.1監視容器295
15.2日誌機制所面臨的挑戰295
15.3微服務架構的中心日誌方案297
15.3.1基於ELK棧的日誌聚合299
15.3.2使用Sleuth的請求跟蹤306
15.3.3基於Zipkin的請求跟蹤310
15.4本章小結315