
0人評分過此書
微服務開發指南:使用Spring Cloud與Docker
作者
:
出版日期
:
2023/09/30
閱讀格式
:
PDF
ISBN
:
9786263246126
微服務當道!一次掌握微服務架構與優勢!
數位轉型浪潮席捲而來,創新科技衝擊全球市場!
由於雲端服務可隨需求調整的彈性,迅速成為企業降低營運成本的首選,也讓微服務(Microservices)成為這波趨勢的浪頭!相較於傳統的單體(Monolithic)系統,微服務規模小而且可獨立部署,具備高彈性、精確擴充、可個別更新、一定程度的錯誤隔離避免系統崩潰等特性,且讓組織可以針對單一服務組建以敏捷方式運作的團隊,幫助企業快速應對市場變化。
容器(Container)技術如Docker的成熟,也讓微服務架構得以快速推展。容器是資源控制且可攜式作業環境,沒有作業系統的龐大複雜,比傳統的虛擬機器來得更小更輕量。將微服務放置在各個容器,即可打造獨立自主的執行環境,減少不必要的資源浪費並加快啟動速度。
本書首先介紹單體與微服務架構的差別,同時介紹建構微服務時用於解決問題的諸多設計模式,包含核心模式、路由模式、用戶端彈性模式、安全模式、日誌紀錄和追踪模式等。
其次簡述實作微服務專案必要的容器技術,包含Docker、Dockerfile、Docker Compose與Maven對Docker的整合。
最後以Spring Cloud家族的生態系統,如Spring Boot、Spring Cloud Config、Spring Cloud Gateway、Spring Cloud Stream、Spring Cloud LoadBalancer、Spring Cloud Security、Spring Cloud Sleuth等,搭配坊間熱門開源專案,如Netflix Eureka、Resilience4j、Kafka、Zookeeper、Redis、ELK Stack、Zipkin、Keycloak等,詮釋微服務設計模式的實務應用。
本書適合具備Java實務、對微服務架構和Spring Cloud開發有興趣的讀者閱讀。
數位轉型浪潮席捲而來,創新科技衝擊全球市場!
由於雲端服務可隨需求調整的彈性,迅速成為企業降低營運成本的首選,也讓微服務(Microservices)成為這波趨勢的浪頭!相較於傳統的單體(Monolithic)系統,微服務規模小而且可獨立部署,具備高彈性、精確擴充、可個別更新、一定程度的錯誤隔離避免系統崩潰等特性,且讓組織可以針對單一服務組建以敏捷方式運作的團隊,幫助企業快速應對市場變化。
容器(Container)技術如Docker的成熟,也讓微服務架構得以快速推展。容器是資源控制且可攜式作業環境,沒有作業系統的龐大複雜,比傳統的虛擬機器來得更小更輕量。將微服務放置在各個容器,即可打造獨立自主的執行環境,減少不必要的資源浪費並加快啟動速度。
本書首先介紹單體與微服務架構的差別,同時介紹建構微服務時用於解決問題的諸多設計模式,包含核心模式、路由模式、用戶端彈性模式、安全模式、日誌紀錄和追踪模式等。
其次簡述實作微服務專案必要的容器技術,包含Docker、Dockerfile、Docker Compose與Maven對Docker的整合。
最後以Spring Cloud家族的生態系統,如Spring Boot、Spring Cloud Config、Spring Cloud Gateway、Spring Cloud Stream、Spring Cloud LoadBalancer、Spring Cloud Security、Spring Cloud Sleuth等,搭配坊間熱門開源專案,如Netflix Eureka、Resilience4j、Kafka、Zookeeper、Redis、ELK Stack、Zipkin、Keycloak等,詮釋微服務設計模式的實務應用。
本書適合具備Java實務、對微服務架構和Spring Cloud開發有興趣的讀者閱讀。
-
01 使用Spring實作微服務架構
-
1.1 微服務架構的演變
-
1.1.1 常見的N層架構
-
1.1.2 什麼是單體架構?
-
1.1.3 什麼是微服務架構?
-
1.1.4 為什麼要改變建構應用程式的方式?
-
-
1.2 Spring社群的微服務技術
-
1.3 本書範例專案與相關微服務技術
-
1.4 微服務編寫準則與開發模式
-
1.4.1 微服務的核心模式
-
1.4.2 微服務的路由模式
-
1.4.3 微服務的用戶端彈性模式
-
1.4.4 微服務的安全模式
-
1.4.5 微服務的日誌紀錄和追蹤模式
-
-
-
02 使用Spring Cloud打造微服務生態系統
-
2.1 Spring Cloud關鍵技術
-
2.1.1 Spring Cloud Config
-
2.1.2 Spring Cloud Service Discovery
-
2.1.3 Spring Cloud LoadBalancer、Resilience4j
-
2.1.4 Spring Cloud Gateway
-
2.1.5 Spring Cloud Stream
-
2.1.6 Spring Cloud Sleuth、Zipkin
-
2.1.7 Spring Cloud Security
-
-
2.2 使用Spring Cloud的簡單範例
-
2.3 本書範例專案
-
2.3.1 專案情境與需求
-
2.3.2 使用Spring Initializr建立專案
-
-
-
03 使用Spring Boot開發微服務程式
-
3.1 架構師的任務:設計微服務架構
-
3.1.1 解析業務需求
-
3.1.2 決定服務粒度
-
3.1.3 定義服務介面
-
3.1.4 何時不該使用微服務?
-
-
3.2 開發者的任務:使用Spring Boot建構微服務
-
3.2.1 建立Controller類別
-
3.2.2 建立Domain類別
-
3.2.3 建立Service類別
-
3.2.4 建立多國語系環境
-
3.2.5 測試服務
-
-
3.3 DevOps的任務:打造精密的執行環境
-
3.3.1 服務組裝:打包和部署微服務
-
3.3.2 服務引導:管理微服務的設定
-
3.3.3 服務註冊和發現:用戶端如何與微服務通訊
-
3.3.4 服務監控:傳達微服務的健康狀況
-
-
3.4 結語
-
-
04 整合Docker建構微服務專案與環境
-
4.1 應該選擇虛擬機還是容器技術?
-
4.2 使用Docker容器技術
-
4.2.1 什麼是Docker?
-
4.2.2 安裝Docker Desktop與WSL
-
4.2.3 常用Docker指令介紹
-
-
4.3 使用Dockerfile建立Docker映像檔
-
4.3.1 Dockerfile的編寫指示介紹
-
4.3.2 使用docker build指令建構映像檔
-
-
4.4 使用Docker Compose定義和管理Docker容器群組
-
4.4.1 Docker Compose的安裝與簡介
-
4.4.2 docker-compose.yml的編寫指示介紹
-
4.4.3 Docker Compose的指令介紹
-
-
4.5 整合Docker與微服務
-
4.5.1 使用Maven插件dockerfile-maven-plugin支援Docker
-
4.5.2 編寫Dockerfile
-
4.5.3 建構Docker映像檔並執行
-
4.5.4 使用Buildpacks建構Docker映像檔
-
4.5.5 使用Docker Compose 啟動服務
-
-
-
05 使用Spring Cloud Confi g Server管理微服務的設定
-
5.1 設定資料的複雜性與管理原則
-
5.1.1 設定資料的管理架構
-
5.1.2 設定資料的管理實作
-
-
5.2 建構Spring Cloud Config Server的微服務用戶端
-
5.2.1 設定微服務用戶端讀取Spring Cloud Config Server的資料
-
5.2.2 使用介面Environment或@Value讀取設定資料
-
5.2.3 微服務用戶端的資料設計
-
-
5.3 建構Spring Cloud Config Server
-
5.3.1 選擇專案的依賴項目
-
5.3.2 設定Spring Cloud Config Server的啟動類別
-
5.3.3 使用檔案系統儲存設定資料
-
5.3.4 啟動微服務架構的所有服務
-
5.3.5 使用Git儲存設定資料
-
5.3.6 同步讀取Spring Cloud Config Server更新後的設定資料
-
-
5.4 保護機敏設定資料
-
5.4.1 設定對稱密鑰
-
5.4.2 啟用Spring Cloud Config Server的自動加解密機制
-
-
-
06 整合Netflix Eureka建構Service Discovery
-
6.1 Service Discovery的需求與目的
-
6.1.1 Service Discovery對於微服務的重要性
-
6.1.2 使用負載均衡器解析服務位址的缺點
-
-
6.2 雲端的Service Discovery
-
6.2.1 Service Discovery的機制
-
6.2.2 使用Spring Cloud和Netflix Eureka實作Service Discovery
-
-
6.3 建構Spring Cloud Eureka服務
-
6.3.1 建立Eureka Server專案
-
6.3.2 Eureka Server的註冊與自我保存機制
-
-
6.4 向Spring Cloud Eureka註冊服務
-
6.4.1 建立查詢Eureka Server的微服務程式
-
6.4.2 使用Eureka Server的儀表板與REST API
-
-
6.5 使用Eureka Server查找服務實例
-
6.5.1 使用支援負載均衡的RestTemplate呼叫服務實例
-
6.5.2 使用DiscoveryClient與標準RestTemplate元件呼叫服務實例
-
6.5.3 使用Netflix Feign的用戶端程式呼叫服務實例
-
-
-
07 整合Resilience4j建立彈性與容錯的微服務架構
-
7.1 用戶端彈性模式簡介
-
7.1.1 用戶端負載均衡(Client-Side Load Balancing)模式
-
7.1.2 斷路器(Circuit Breaker)模式
-
7.1.3 回退(Fallback)模式
-
7.1.4 隔板(Bulkhead)模式
-
-
7.2 以Resilience4j實作用戶端彈性模式
-
7.2.1 未使用彈性模式的情境
-
7.2.2 使用彈性模式的情境
-
7.2.3 使用Book微服務專案實作彈性模式
-
-
7.3 實作斷路器(Circuit Breaker)模式
-
7.3.1 斷路器的原理
-
7.3.2 查詢資料庫時套用斷路器模式
-
7.3.3 呼叫Author微服務時套用斷路器模式
-
7.3.4 自定義斷路器
-
-
7.4 實作回退(Fallback)模式
-
7.5 實作隔板(Bulkhead)模式
-
7.6 實作重試(Retry)模式
-
7.7 實作頻率限制器(Rate Limiter)模式
-
7.8 使用ThreadLocal追蹤服務呼叫
-
-
08 使用Spring Cloud Gateway支援服務路由
-
8.1 簡介Service Gateway
-
8.2 導入Spring Cloud Gateway
-
8.2.1 建構Spring Cloud Gateway專案
-
8.2.2 設定Spring Cloud Gateway與Eureka Server的關聯
-
-
8.3 設定Spring Cloud Gateway服務路由
-
8.3.1 Spring Cloud Gateway是反向代理
-
8.3.2 設定自動映射路由
-
8.3.3 設定手動映射路由
-
8.3.4 同時使用自動與手動映射路由
-
8.3.5 動態重新載入路由設定
-
-
8.4 使用Spring Cloud Gateway的Predicate與Filter工廠
-
8.4.1 使用內建的Predicate工廠設定路由
-
8.4.2 使用內建的Filter工廠設定路由
-
8.4.3 自定義前置與後置Filter追蹤服務呼叫
-
-
8.5 自定義Spring Cloud Gateway的前置Filter與建立關聯ID
-
8.6 完備關聯ID在服務內的追蹤流程
-
8.6.1 建立UserContextFilter攔截並讀取HTTP標頭資訊
-
8.6.2 建立UserContext與UserContextHolder保存HTTP標頭資訊
-
8.6.3 建立UserContextInterceptor和RestTemplate傳播關聯ID
-
-
8.7 自定義Spring Cloud Gateway的後置Filter並回應關聯ID至用戶端
-
-
09 使用Keycloak保護微服務架構
-
9.1 簡介OAuth2
-
9.2 簡介Keycloak
-
9.3 建立與設定Keycloak
-
9.3.1 使用Docker啟動Keycloak
-
9.3.2 建立Realm
-
9.3.3 建立用戶端程式
-
9.3.4 建立Realm角色
-
9.3.5 建立使用者
-
9.3.6 取得OAuth2的存取令牌
-
-
9.4 使用Keycloak保護微服務
-
9.4.1 新增Spring Security與Keycloak的Maven依賴項目
-
9.4.2 設定微服務連線Keycloak
-
9.4.3 建立設定類別與限制端點存取
-
9.4.4 使用存取令牌驗證保護機制
-
-
9.5 整合Keycloak與Service Gateway
-
9.5.1 存取令牌的傳播流程
-
9.5.2 設定Service Gateway傳播Authorization標頭
-
9.5.3 設定Book服務啟用Keycloak保護
-
9.5.4 傳播存取令牌
-
-
9.6 解析存取令牌中的自定義資訊
-
9.7 更完整的微服務安全性架構
-
9.7.1 對所有服務通訊使用HTTPS/SSL
-
9.7.2 呼叫所有服務均透過Service Gateway
-
9.7.3 將API區分公開區域和私有區域
-
9.7.4 封鎖服務裡非必要開放的通訊埠
-
-
-
10 使用Spring Cloud Stream支援事件驅動架構
-
10.1 訊息傳遞、事件驅動架構和微服務的案例
-
10.1.1 簡介訊息代理與訊息傳遞模型
-
10.1.2 使用同步的請求與回應模型傳達服務間狀態變化
-
10.1.3 使用訊息傳遞模型傳達服務間狀態變化
-
10.1.4 訊息架構的注意事項
-
-
10.2 使用Spring Cloud Stream
-
10.2.1 簡介Spring Cloud Stream
-
10.2.2 設定Apache Kafka的Docker環境
-
10.2.3 在微服務專案中建立訊息生產者
-
10.2.4 在微服務專案中建立訊息消費者
-
10.2.5 驗證訊息的發送與接收
-
-
10.3 結合Redis與Spring Cloud Stream
-
10.3.1 設定Redis的Docker環境
-
10.3.2 使用Redis快取
-
-
10.4 使用Spring Cloud Stream的函數式編程模型
-
10.4.1 調整訊息生產者改使用函數式編程模型
-
10.4.2 調整訊息消費者改使用函數式編程模型
-
-
-
11 使用Spring Cloud Sleuth與Zipkin追蹤微服務架構
-
11.1 簡介Spring Cloud Sleuth
-
11.1.1 微服務架構下追蹤與除錯的難題
-
11.1.2 使用Spring Cloud Sleuth追蹤服務軌跡
-
-
11.2 使用Spring Cloud Sleuth與ELK Stack彙整日誌紀錄
-
11.2.1 整合ELK Stack與Spring Cloud Sleuth
-
11.2.2 在服務中設定Logback
-
11.2.3 在Docker中定義和運行ELK Stack服務
-
11.2.4 使用Kibana查詢日誌紀錄彙整結果
-
11.2.5 在Service Gateway將追蹤ID新增到HTTP回應標頭
-
11.2.6 由Spring Boot 3.x開始將停止支援Spring Cloud Sleuth
-
-
11.3 使用Zipkin進行分散式追蹤
-
11.3.1 設定Zipkin
-
11.3.2 使用Zipkin追蹤跨服務操作
-
11.3.3 使用Zipkin追蹤訊息傳遞
-
11.3.4 新增自定義跨度
-
-
- 出版地 : 臺灣
- 語言 : 繁體中文
評分與評論
請登入後再留言與評分