Java微服務

Java微服務

《Java微服務》 一書原作者沙魯巴·夏爾馬(Sourabh Sharma),中文版由盧濤譯,電子工業出版社2017年1月出版

內容提要

微服務是利用雲平台開發企業應用程式的最新技術,它是小型、輕量和過程驅動的組件。微服務適合設計可擴展、易於維護的應用程式。它可以使開發更容易,還能使資源得到最佳利用。《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

相關詞條

相關搜尋

熱門詞條

聯絡我們