第1章 Cloud Native 概述
1.1 當今軟件發展的現狀
1.1.1 軟件需求的發展
1.1.2 開發方式的巨變
1.1.3 雲是大勢所趨
1.2 Cloud Native 的特性
1.2.1 以雲為基礎架構
1.2.2 雲服務
1.2.3 無服務
1.2.4 可擴展
1.2.5 高可用
1.2.6 敏捷
1.2.7 雲優先
1.3 12-Factor
1.3.1 基準代碼
1.3.2 依賴
1.3.3 配置
1.3.4 後端服務
1.3.5 構建、發布和運行
1.3.6 進程
1.3.7 端口綁定
1.3.8 並發
1.3.9 易處理
1.3.10 開發環境與綫上環境等價
1.3.11 日誌
1.3.12 管理進程
1.4 成功案例
1.4.1 Amazon
1.4.2 Netflix
1.4.3 淘寶網
1.5 Cloud Native 與微服務
1.5.1 微服務概述
1.5.2 從單塊架構嚮微服務演進
1.5.3 Cloud Native 與微服務部署
1.6 總結
1.6.1 Cloud Native 的優點
1.6.2 Cloud Native 不是“銀彈”
1.6.3 麵臨的挑戰
第2章 REST API
2.1 REST 概述
2.1.1 REST 的定義
2.1.2 REST 設計原則
2.2 成熟度模型
2.2.1 第0級:使用 HTTP 作為傳輸方式
2.2.2 第1級:引入瞭資源的概念
2.2.3 第2級:根據語義使用 HTTP 動詞
2.2.4 第3級:使用 HATEOAS
2.3 Java REST
2.3.1 JAX-RS 規範
2.3.2 Jersey 框架
2.3.3 Apache CXF 框架
2.3.4 Spring Web MVC 框架
2.4 內容協商
2.4.1 二進製數據
2.4.2 Google Protocol Buffers 傳輸協議
2.5 異常處理
2.5.1 HTTP 狀態碼
2.5.2 自定義異常信息
2.6 API 管理
2.6.1 版本化
2.6.2 文檔化
2.6.3 可視化
2.7 客戶端
2.7.1 瀏覽器插件
2.7.2 JAX-RS 客戶端
2.7.3 Spring 客戶端
2.8 實戰:開啓第一個微服務
2.8.1 初始化一個 Spring Boot 原型
2.8.2 用 Gradle 編譯項目
2.8.3 探索項目
2.8.4 實現第一個服務
第3章 Cloud Native 測試
3.1 測試概述
3.1.1 傳統測試所麵臨的問題
3.1.2 如何破解測試麵臨的問題
3.2 測試的類型、範圍和比例
3.2.1 測試類型
3.2.2 測試範圍
3.2.3 測試比例
3.3 如何進行微服務的測試
3.3.1 微服務的單元測試
3.3.2 Mock 與 Stub 的區彆
3.3.3 微服務的集成測試
3.3.4 微服務的係統測試
3.3.5 保障代碼覆蓋率
3.4 Spring 測試框架
3.4.1 Spring TestContext 框架
3.4.2 Spring MVC Test 框架
3.4.3 Spring Boot Test 框架
第4章 服務路由
4.1 如何找到服務
4.1.1 DNS
4.1.2 服務注冊與發現
4.1.3 客戶端發現機製
4.1.4 服務端發現機製
4.2 實戰:實現服務注冊與發現
4.2.1 選擇 Eureka的原因
4.2.2 集成 Eureka Server
4.2.3 集成 Eureka Client
4.2.4 服務的注冊與發現
第5章 Cloud Native 安全
5.1 認證與授權
5.1.1 基本認證
5.1.2 摘要認證
5.1.3 摘要認證的密碼加密
5.1.4 通用密碼加密
5.1.5 基於散列的令牌方法
5.1.6 基於持久化的令牌方法
5.2 Java 安全框架
5.2.1 Apache Shiro
5.2.2 Spring Security
5.2.3 Spring Cloud Security
5.3 OAuth 2.0 認證
5.3.1 OAuth 2.0 的認證原理
5.3.2 OAuth 2.0 的核心概念
5.3.3 OAuth 2.0 的認證流程
5.4 實戰:實現單點登錄
5.4.1 項目依賴
5.4.2 編碼實現
5.4.3 應用配置
5.4.4 運行
第6章 Cloud Native 數據管理
6.1 數據的存儲方式
6.1.1 關係型數據庫
6.1.2 NoSQL
6.2 DDD 與數據建模
6.2.1 DDD 概述
6.2.2 運用 DDD 進行數據建模
6.3 常用數據訪問方式
6.3.1 JDBC
6.3.2 Spring JDBC
6.3.3 JPA
6.4 Spring Data
6.4.1 Spring Data 概述
6.4.2 Spring Data JPA
6.4.3 Spring Data Elasticsearch
6.4.4 Spring Data Redis
6.4.5 Spring Data MongoDB
6.4.6 實戰:基於 MongoDB 的文件服務器
第7章 Cloud Native 消息通信
7.1 消息通信概述
7.1.1 消息通信的基本概念
7.1.2 JMS
7.1.3 事件驅動的架構
7.2 消息通信常用模式
7.2.1 點對點模式
7.2.2 發布—訂閱模式
7.3 CQRS
7.3.1 CQRS 概述
7.3.2 CQRS 的好處
7.3.3 實戰:實現 CQRS
7.4 Spring Cloud Stream
7.4.1 Spring Cloud Stream 概述
7.4.2 Spring Cloud Stream 實現發布者
7.4.3 Spring Cloud Stream 實現消費者
7.4.4 實戰:基於 Spring Cloud Stream 的消息通信
第8章 Cloud Native 批處理
8.1 批處理概述
8.1.1 需要批處理的原因
8.1.2 常用批處理實現方式
8.2 JDBC Batch
8.2.1 Statement 與 PreparedStatement
8.2.2 實戰:使用 JDBC Batch 的例子
8.3 Spring 批處理
8.3.1 使用 JdbcTemplate 實現批處理
8.3.2 批量更新 List
8.3.3 多個批次更新
8.4 Spring Batch
8.4.1 Spring Batch 概述
8.4.2 Job
8.4.3 JobLauncher
8.4.4 JobRepository
8.4.5 Step
8.4.6 ItemReader
8.4.7 ItemWriter
8.4.8 ItemProcessor
8.4.9 實戰:使用 Spring Batch 的例子
第9章 Cloud Native 任務調度
9.1 任務執行與調度概述
9.2 Spring TaskExecutor
9.2.1 TaskExecutor 類型
9.2.2 TaskExecutor 應用
9.3 Spring TaskScheduler
9.3.1 Trigger 接口
9.3.2 Trigger 接口的實現
9.4 Spring 任務調度及異步執行
9.4.1 啓用調度注解
9.4.2 @Scheduled 注解
9.4.3 @Async 注解
9.4.4 @Async 的異常處理
9.4.5 命名空間
9.5 使用 Quartz Scheduler
9.5.1 使用 JobDetailFactoryBean
9.5.2 使用 MethodInvokingJobDetailFactoryBean
9.6 實戰:基於 Quartz Schedule 的天氣預報係統
9.6.1 項目概述
9.6.2 後颱編碼實現
9.6.3 運行
第10章 Cloud Native 運營
10.1 CAP 理論
10.1.1 CAP 理論概述
10.1.2 CAP 隻能三選二的原因
10.1.3 CAP 常見模型
10.1.4 CAP 的意義
10.1.5 CAP 的發展
10.2 服務的熔斷
10.2.1 熔斷的意義
10.2.2 Hystrix 概述
10.2.3 實戰:實現微服務的熔斷機製
10.3 代碼管理
10.3.1 Git 簡介
10.3.2 Git 核心概念
10.3.3 Git Flow
10.4 日誌管理
10.4.1 日誌框架概述
10.4.2 分布式下的日誌管理
10.4.3 集中化日誌分析
10.4.4 實戰:基於 Elastic Stack 的集中化日誌管理
10.5 配置管理
10.5.1 分布式下的配置管理的痛點
10.5.2 集中化配置
10.5.3 Spring Cloud Config
10.5.4 實戰:基於 Config 實現的配置中心
10.6 應用監控
10.6.1 心跳
10.6.2 Eureka 監測機製
10.6.3 Spring Boot Actuator
10.6.4 實戰:基於 Spring Boot Actuator 監測的例子
第11章 Cloud Native 持續發布
11.1 持續集成與持續交付
11.1.1 持續集成概述
11.1.2 持續交付與持續部署
11.1.3 持續交付與持續部署的意義
11.2 持續交付流水綫
11.2.1 流水綫概述
11.2.2 構建持續交付流水綫
11.2.3 構建流水綫的工具
11.3 微服務的管理與發布
11.3.1 兩個比薩的故事
11.3.2 DevOps 文化
11.3.3 微服務的發布
11.4 容器
11.4.1 虛擬化技術
11.4.2 容器與虛擬機
11.4.3 基於容器的持續部署流程
11.4.4 實戰:使用 Docker 來構建、運行和發布微服務
11.5 發布到雲
11.5.1 常用雲服務
11.5.2 實戰:發布應用到雲
附錄 本書所涉及的技術及相關版本
參考文獻
· · · · · · (
收起)