0人評分過此書

微服務開發指南:使用Spring Cloud與Docker

出版日期
2023/09/30
閱讀格式
PDF
書籍分類
學科分類
ISBN
9786263246126

本館館藏

借閱規則
當前可使用人數 30
借閱天數 14
線上看 0
借閱中 0
選擇分享方式

推薦本館採購書籍

您可以將喜歡的電子書推薦給圖書館,圖書館會參考讀者意見進行採購

讀者資料
圖書館
* 姓名
* 身分
系所
* E-mail
※ 我們會寄送一份副本至您填寫的Email中
電話
※ 電話格式為 區碼+電話號碼(ex. 0229235151)/ 手機格式為 0900111111
* 請輸入驗證碼
微服務當道!一次掌握微服務架構與優勢!

數位轉型浪潮席捲而來,創新科技衝擊全球市場!

由於雲端服務可隨需求調整的彈性,迅速成為企業降低營運成本的首選,也讓微服務(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 新增自定義跨度

評分與評論

請登入後再留言與評分
幫助
您好,請問需要甚麼幫助呢?
使用指南

客服專線:0800-000-747

服務時間:週一至週五 AM 09:00~PM 06:00

loading