內容提要
微服務是利用雲平台開發企業應用程式的最新技術,它是小型、輕量和過程驅動的組件。微服務適合設計可擴展、易於維護的應用程式。它可以使開發更容易,還能使資源得到最佳利用。《Java微服務》幫助你用Java構建供企業使用的微服務架構,內容包括微服務核心概念和框架、大型軟體項目的高層次設計、開發環境設定和前期配置、對微服務架構持續集成的部署、實現微服務的安全性、有效地執行測試、微服務設計的最佳做法和一般原則,以及如何檢測和調試問題。
《Java微服務》適合想要了解微服務架構,以及想要深入了解如何有效地實施企業級微服務的Java 開發人員。
目錄
前言 XV
1一種解決方法 1
微服務的演變 2
整體式架構概述 3
整體式架構的局限性與它的微服務解決方案的對比 3
一維的可擴展性 6
在出故障時回滾版本 7
採用新技術時的問題 7
與敏捷實踐的契合 8
減輕開發工作量——可以做得更好 9
微服務的構建管道 10
使用諸如Docker的容器部署 11
容器 11
Docker 12
Docker的架構 13
Docker容器 14
部署 14
小結 14
2設定開發環境 17
Spring Boot配置 18
Spring Boot概述 18
把Spring Boot添加至REST示例 19
添加一個嵌入式Jetty伺服器 21
示例REST程式 22
編寫REST控制器類 24
@RestController 25
@RequestMapping 25
@RequestParam 25
@PathVariable 26
製作一個示例REST可執行應用程式 29
設定應用程式構建 30
運行Maven工具 30
用Java命令執行 31
使用Postman Chrome擴展測試REST API 31
更多的正向測試場景 34
反向的測試場景 35
NetBeans IDE安裝和設定 37
參考資料 42
小結 42
3領域驅動設計 43
領域驅動設計基本原理 44
組成部分 45
普遍存在的語言 45
多層架構 45
表示層 46
應用程式層 46
領域層 46
基礎架構層 47
領域驅動設計的工件 47
實體 47
值對象 48
服務 49
聚合 50
存儲庫 52
工廠 53
模組 54
戰略設計和原則 55
有界上下文 55
持續集成 56
上下文映射 57
共享核心模式 58
客戶和供應商模式 58
順從者模式 59
反腐層 59
獨立方法 59
開放主機服務 60
精餾 60
示例領域服務 60
實體的實現 61
存儲庫的實現 63
服務的實現 66
小結 67
4實現微服務 69
OTRS概述 70
開發和實現微服務 71
餐館微服務 72
控制器類 73
服務類 76
存儲庫類 79
實體類 82
預訂和用戶服務 85
註冊和發現服務(Eureka服務) 85
執行 87
測試 87
參考資料 92
小結 92
5部署和測試 93
使用Netflix OSS的微服務架構概述 93
負載均衡 95
客戶端的負載均衡 95
伺服器端的負載均衡 98
電路斷路器與監控 102
使用Hystrix的回退方法 102
監控 103
設定Hystrix儀錶板 105
設定Turbine 107
使用容器部署微服務 109
安裝和配置 109
具有4 GB記憶體的Docker機器 110
使用Maven構建Docker映像 110
使用Maven 運行Docker 114
使用Docker執行集成測試 115
把映像推送到註冊表 118
管理Docker容器 119
參考資料 121
小結 121
6實現微服務的安全性 123
啟用安全套接字層 123
身份驗證和授權 127
OAuth 2.0 127
OAuth的用法 128
OAuth 2.0規範——簡明詳細信息 128
OAuth 2.0角色 129
OAuth 2.0客戶端註冊 131
OAuth 2.0協定端點 135
OAuth 2.0授權類型 137
使用Spring Security的OAuth實現 144
授權碼許可 150
隱式許可 153
資源所有者密碼憑據許可 154
客戶端憑據許可 155
參考資料 155
小結 156
7利用微服務Web應用程式來使用服務 157
AngularJS框架概述 157
MVC 158
MVVM 158
模組 158
提供程式和服務 160
作用域 161
控制器 161
過濾器 161
指令 162
UI-Router 162
OTRS 功能的開發 163
主頁/餐館列表頁 163
index.html 164
app.js 169
restaurants.js 172
restaurants.html 179
搜尋餐館 180
餐館詳細信息與預訂選項 181
restaurant.html 181
登錄頁面 183
login.html 184
login.js 185
預訂確認 186
設定web應用程式 187
小結 201
8最佳做法和一般原則 203
概述和心態 203
最佳做法和原則 205
Nanoservice(不推薦)、規模和整體性 205
持續集成和部署 206
系統/端到端測試自動化 207
自我監控和記錄 207
每個微服務都使用獨立的數據存儲區 209
事務邊界 210
微服務框架和工具 210
Netflix開放源碼軟體(OSS) 210
構建——Nebula 211
部署和交付——Spinnaker與Aminator 211
服務註冊和發現——Eureka 211
服務溝通——Ribbon 212
電路斷路器——Hystrix 212
邊緣(代理)伺服器——Zuul 212
業務監控——Atlas 213
可靠性監控服務——Simian Army 213
AWS資源監控——Edda 214
主機性能監控——Vector 215
分散式配置管理——Archaius 215
Apache Mesos調度器——Fenzo 215
成本和雲利用率——Ice 216
其他安全工具——Scumblr和FIDO 216
參考資料 217
小結 218
9故障排除指南 219
日誌記錄和ELK環境 219
簡要概述 221
Elasticsearch 221
Logstash 221
Kibana 222
ELK環境安裝 222
安裝Elasticsearch 223
安裝Logstash 224
安裝Kibana 225
服務調用關聯ID的使用 226
讓我們看看怎樣解決這個問題 226
依賴項和版本 227
循環依賴關係及其影響 227
設計系統時需要分析它 227
維護不同版本 227
讓我們了解更多 228
參考資料 228
小結 228