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