內容簡介
◇ 使用Spring Boot 構建微服務
◇ 使用事件驅動架構,通過RabbitMQ實現訊息機制
◇ 使用Spring創建RESTful服務
◇ 使用Eureka掌握服務發現,使用Ribbon掌握負載均衡
◇ 使用Zuul路由請求並將其作為API網關
◇ 使用Cucumber為事件驅動架構編寫端到端測試
◇ 進行持續集成和部署
圖書目錄
第1 章 介紹 1
1.1 設定場景 1
1.2 讀者對象 2
1.3 本書與其他圖書和指南有何區別 2
1.3.1 工具背後的論證 2
1.3.2 學習:漸進的過程 3
1.3.3 這是一本指南還是一本圖書 3
1.4 本書內容 3
1.4.1 從基礎知識到高級話題 3
1.4.2 搭建Spring Boot骨架的專業方式 4
1.4.3 測試驅動開發 4
1.4.4 連線微服務 4
1.4.5 事件驅動的系統 5
1.4.6 端到端測試 5
1.5 本章小結 5
第2 章 一個基本的Spring Boot套用 7
2.1 業務需求 7
2.2 骨架套用 8
2.2.1 輕薄套用與真實套用 8
2.2.2 創建套用骨架 8
2.3 熱身:一些TDD的實戰 10
2.4 本章小結 16
第3 章 一個真實的三層Spring Boot 套用 17
3.1 簡介 17
3.2 完成基本功能 18
3.3 領域設計 24
3.4 業務邏輯層 28
3.5 展示層(REST API) 30
3.5.1 Multiplication Controller 31
3.5.2 Results控制器 35
3.6 前端(Web客戶端) 38
3.7 試玩(第1部分) 42
3.8 數據持久化的新需求 43
3.9 重構代碼 45
3.10 數據層 50
3.10.1 數據模型 51
3.10.2 資源庫 56
3.11 完成第二個用戶故事:串聯所有層 63
3.12 暢玩套用(第2部分) 69
3.13 本章小結 71
第4 章 初識微服務 73
4.1 小單體之路 73
4.1.1 單體分析 75
4.1.2 繼續前進 76
4.2 遊戲化基礎 77
4.2.1 分數、徽章和排行榜 77
4.2.2 套用遊戲化技術 78
4.3 轉向微服務架構 78
4.3.1 職責分離和松耦合 78
4.3.2 獨立變更 79
4.3.3 伸縮性 79
4.4 連線不同的微服務 80
4.5 事件驅動架構 81
4.5.1 相關技術 81
4.5.2 事件驅動架構的優缺點 82
4.5.3 深入閱讀 84
4.5.4 套用事件驅動架構 84
4.6 使用RabbitMQ和Spring AMQP實現事件驅動 85
4.6.1 在系統中使用RabbitMQ 86
4.6.2 Spring AMQP 86
4.7 從乘法微服務傳送事件 87
4.7.1 RabbitMQ配置 87
4.7.2 對事件建模 89
4.7.3 傳送事件:分發器模式 91
4.7.4 深入新遊戲化微服務 95
4.8 使用RabbitMQ接收事件 111
4.8.1 訂閱者 111
4.8.2 RabbitMQ配置 111
4.8.3 事件處理程式 114
4.9 在微服務之間請求數據 115
4.9.1 結合反應式模式和REST 115
4.9.2 保持領域隔離 117
4.9.3 實現REST客戶端 119
4.9.4 更新遊戲化業務邏輯 123
4.10 使用微服務 126
4.11 本章小結 128
第5 章 使用工具的微服務架構 131
5.1 介紹 131
5.2 抽取UI部分,並連線遊戲化服務 132
5.2.1 移動靜態內容 133
5.2.2 連線UI和遊戲化服務 134
5.2.3 改變現有服務 136
5.2.4 全新的、更好的UI,而且(幾乎)不需要額外的代價 139
5.3 當前架構 146
5.4 服務發現和負載均衡 147
5.4.1 服務發現 147
5.4.2 負載均衡 149
5.4.3 多語言系統、Eureka以及 Ribbon 151
5.5 通過API網關路由 153
5.5.1 API網關模式 153
5.5.2 讓Zuul、Eureka和Ribbon一起工作 156
5.6 動手準則 158
5.6.1 使用Zuul實現API網關 158
5.6.2 使用服務發現 172
5.6.3 微服務準備好擴展了嗎 174
5.6.4 通過Ribbon實現負載均衡 176
5.7 斷路器和REST客戶端 183
5.7.1 Hystrix斷路器 183
5.7.2 Hystrix和Zuul 183
5.7.3 來自REST客戶端的Hystrix 186
5.7.4 使用Feign的REST消費者 189
5.8 微服務模式和PaaS 189
5.9 本章小結 190
第6 章 測試分散式系統 193
6.1 介紹 193
6.2 設定場景 194
6.3 Cucumber的工作方式 195
6.4 動手準則 197
6.4.1 創建一個空項目並選擇工具 197
6.4.2 讓系統可測試 200
6.4.3 編寫第一個Cucumber測試 207
6.4.4 把功能測試連線到Java代碼 210
6.4.5 支持類 218
6.4.6 在feature之間重用步驟 223
6.4.7 運行測試並檢查報告 225
6.5 本章小結 226
附錄A 升級到Spring Boot 2.0 229
A.1 介紹 229
A.2 升級依賴項 229
A.3 修復已破壞的變化 232
A.3.1 CrudRepository接口不包含findOne()方法 232
A.3.2 actuator端點被移動 233
A.4 套用可選的更新 234
A.5 使用Spring Boot 2.0 234
後記 235