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

    9786263247017

    收集中
    US$18.24

    內容簡介


    微服務當道!一次掌握微服務架構與優勢!

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

    由於雲端服務可隨需求調整的彈性,迅速成為企業降低營運成本的首選,也讓微服務(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開發有興趣的讀者閱讀。

    作者介紹


    曾瑞君 畢業於台灣大學土木工程學系與土木工程學研究所。他不是科班的資訊系畢業生,但因為對Java程式設計、資訊安全、資料庫管理等領域的興趣與工作需要,涉獵之餘取得不少國際證照。Java程式設計如SCJP、SCWCD、SCBCD、SCJD、OCEJWSD、OCPWCD、OCPJP 7&8、OCP, Java SE 11 Developer;資訊安全領域如EC-Council CEH、ECSP Java、ECSA;資料庫管理如9i OCP、10g OCP、9i PLSQL Certification、SQL Server MCTS等。

    工作之餘喜歡與人接觸並分享自己的學習經驗,曾在巨匠電腦指導學員取得國際認證,也常在台灣科技大學、文化大學等學校講授關於程式開發與資訊安全相關課程(行政院勞動部勞動力發展署產業人才投資方案補助)。

    著作有:
    ‧Java RWD Web企業網站開發指南:使用Spring MVC與Bootstrap
    ‧Spring Boot Web情境式網站開發指南:使用Spring Data JPA、Spring Security、Spring Web Flow
    ‧Spring REST API開發與測試指南:使用Swagger、HATEOAS、JUnit、Mockito、PowerMock、Spring Test

    可於FB社團「Java技術與認證交流平台」與作者交流。

    目錄


    01 使用 Spring 實作微服務架構
    02 使用 Spring Cloud 打造微服務生態系統
    03 使用 Spring Boot 開發微服務程式
    04 整合 Docker 建構微服務專案與環境
    05 使用 Spring Cloud Config Server 管理微服務的設定
    06 整合 Netflix Eureka 建構Service Discovery
    07 整合 Resilience4j 建立彈性與容錯的微服務架構
    08 使用 Spring Cloud Gateway 支援服務路由
    09 使用 Keycloak 保護微服務架構
    10 使用 Spring Cloud Stream 支援事件驅動架構
    11 使用 Spring Cloud Sleuth 與 Zipkin 追蹤微服務架構

    章節目錄

    • 1-1
      封面頁
    • 1-2
      書名頁
    • 1-3
    • 1-4
      目錄
    • 1-5
      Ch01 使用Spring 實作微服務架構
    • 1-6
      1.1 微服務架構的演變
    • 1-7
      1.1.1 常見的N 層架構
    • 1-8
      1.1.2 什麼是單體架構?
    • 1-9
      1.1.3 什麼是微服務架構?
    • 1-10
      1.1.4 為什麼要改變建構應用程式的方式?
    • 1-11
      1.2 Spring 社群的微服務技術
    • 1-12
      1.3 本書範例專案與相關微服務技術
    • 1-13
      1.4 微服務編寫準則與開發模式
    • 1-14
      1.4.1 微服務的核心模式
    • 1-15
      1.4.2 微服務的路由模式
    • 1-16
      1.4.3 微服務的用戶端彈性模式
    • 1-17
      1.4.4 微服務的安全模式
    • 1-18
      1.4.5 微服務的日誌紀錄和追蹤模式
    • 1-19
      Ch02 使用Spring Cloud 打造微服務生態系統
    • 1-20
      2.1 Spring Cloud 關鍵技術
    • 1-21
      2.1.1 Spring Cloud Config
    • 1-22
      2.1.2 Spring Cloud Service Discovery
    • 1-23
      2.1.3 Spring Cloud LoadBalancer、Resilience4j
    • 1-24
      2.1.4 Spring Cloud Gateway
    • 1-25
      2.1.5 Spring Cloud Stream
    • 1-26
      2.1.6 Spring Cloud Sleuth、Zipkin
    • 1-27
      2.1.7 Spring Cloud Security
    • 1-28
      2.2 使用Spring Cloud 的簡單範例
    • 1-29
      2.3 本書範例專案
    • 1-30
      2.3.1 專案情境與需求
    • 1-31
      2.3.2 使用Spring Initializr 建立專案
    • 1-32
      Ch03 使用Spring Boot 開發微服務程式
    • 1-33
      3.1 架構師的任務:設計微服務架構
    • 1-34
      3.1.1 解析業務需求
    • 1-35
      3.1.2 決定服務粒度
    • 1-36
      3.1.3 定義服務介面
    • 1-37
      3.1.4 何時不該使用微服務?
    • 1-38
      3.2 開發者的任務:使用Spring Boot建構微服務
    • 1-39
      3.2.1 建立Controller 類別
    • 1-40
      3.2.2 建立Domain 類別
    • 1-41
      3.2.3 建立Service 類別
    • 1-42
      3.2.4 建立多國語系環境
    • 1-43
      3.2.5 測試服務
    • 1-44
      3.3 DevOps 的任務:打造精密的執行環境
    • 1-45
      3.3.1 服務組裝:打包和部署微服務
    • 1-46
      3.3.2 服務引導:管理微服務的設定
    • 1-47
      3.3.3 服務註冊和發現:用戶端如何與微服務通訊
    • 1-48
      3.3.4 服務監控:傳達微服務的健康狀況
    • 1-49
      3.4 結語
    • 1-50
      Ch04 整合Docker 建構微服務專案與環境
    • 1-51
      4.1 應該選擇虛擬機還是容器技術?
    • 1-52
      4.2 使用Docker 容器技術
    • 1-53
      4.2.1 什麼是Docker ?
    • 1-54
      4.2.2 安裝Docker Desktop 與WSL
    • 1-55
      4.2.3 常用Docker 指令介紹
    • 1-56
      4.3 使用Dockerfile 建立Docker 映像檔
    • 1-57
      4.3.1 Dockerfile 的編寫指示介紹
    • 1-58
      4.3.2 使用docker build 指令建構映像檔
    • 1-59
      4.4 使用Docker Compose 定義和管理Docker 容器群組
    • 1-60
      4.4.1 Docker Compose 的安裝與簡介
    • 1-61
      4.4.2 docker-compose.yml 的編寫指示介紹
    • 1-62
      4.4.3 Docker Compose 的指令介紹
    • 1-63
      4.5 整合Docker 與微服務
    • 1-64
      4.5.1 使用Maven 插件dockerfile-maven-plugin 支援Docker
    • 1-65
      4.5.2 編寫Dockerfile
    • 1-66
      4.5.3 建構Docker 映像檔並執行
    • 1-67
      4.5.4 使用Buildpacks 建構Docker 映像檔
    • 1-68
      4.5.5 使用Docker Compose 啟動服務
    • 1-69
      Ch05 使用Spring Cloud ConfigServer 管理微服務的設定
    • 1-70
      5.1 設定資料的複雜性與管理原則
    • 1-71
      5.1.1 設定資料的管理架構
    • 1-72
      5.1.2 設定資料的管理實作
    • 1-73
      5.2 建構Spring Cloud Config Server的微服務用戶端
    • 1-74
      5.2.1 設定微服務用戶端讀取Spring Cloud ConfigServer 的資料
    • 1-75
      5.2.2 使用介面Environment 或@Value 讀取設定資料
    • 1-76
      5.2.3 微服務用戶端的資料設計
    • 1-77
      5.3 建構Spring Cloud Config Server
    • 1-78
      5.3.1 選擇專案的依賴項目
    • 1-79
      5.3.2 設定Spring Cloud Config Server 的啟動類別
    • 1-80
      5.3.3 使用檔案系統儲存設定資料
    • 1-81
      5.3.4 啟動微服務架構的所有服務
    • 1-82
      5.3.5 使用Git 儲存設定資料
    • 1-83
      5.3.6 同步讀取Spring Cloud Config Server 更新後的設定資料
    • 1-84
      5.4 保護機敏設定資料
    • 1-85
      5.4.1 設定對稱密鑰
    • 1-86
      5.4.2 啟用Spring Cloud Config Server 的自動加解密機制
    • 1-87
      Ch06 整合Netflix Eureka 建構Service Discovery
    • 1-88
      6.1 Service Discovery 的需求與目的
    • 1-89
      6.1.1 Service Discovery 對於微服務的重要性
    • 1-90
      6.1.2 使用負載均衡器解析服務位址的缺點
    • 1-91
      6.2 雲端的Service Discovery
    • 1-92
      6.2.1 Service Discovery 的機制
    • 1-93
      6.2.2 使用Spring Cloud 和Netflix Eureka 實作Service Discovery
    • 1-94
      6.3 建構Spring Cloud Eureka 服務
    • 1-95
      6.3.1 建立Eureka Server 專案
    • 1-96
      6.3.2 Eureka Server 的註冊與自我保存機制
    • 1-97
      6.4 向Spring Cloud Eureka 註冊服務
    • 1-98
      6.4.1 建立查詢Eureka Server 的微服務程式
    • 1-99
      6.4.2 使用Eureka Server 的儀表板與REST API
    • 1-100
      6.5 使用Eureka Server 查找服務實例
    • 1-101
      6.5.1 使用支援負載均衡的RestTemplate 呼叫服務實例
    • 1-102
      6.5.2 使用DiscoveryClient 與標準RestTemplate 元件呼叫服務實例
    • 1-103
      6.5.3 使用Netflix Feign 的用戶端程式呼叫服務實例
    • 1-104
      Ch07 整合Resilience4j 建立彈性與容錯的微服務架構
    • 1-105
      7.1 用戶端彈性模式簡介
    • 1-106
      7.1.1 用戶端負載均衡(Client-Side Load Balancing)模式
    • 1-107
      7.1.2 斷路器(Circuit Breaker) 模式
    • 1-108
      7.1.3 回退(Fallback) 模式
    • 1-109
      7.1.4 隔板(Bulkhead) 模式
    • 1-110
      7.2 以Resilience4j 實作用戶端彈性模式
    • 1-111
      7.2.1 未使用彈性模式的情境
    • 1-112
      7.2.2 使用彈性模式的情境
    • 1-113
      7.2.3 使用Book 微服務專案實作彈性模式
    • 1-114
      7.3 實作斷路器(Circuit Breaker) 模式
    • 1-115
      7.3.1 斷路器的原理
    • 1-116
      7.3.2 查詢資料庫時套用斷路器模式
    • 1-117
      7.3.3 呼叫Author 微服務時套用斷路器模式
    • 1-118
      7.3.4 自定義斷路器
    • 1-119
      7.4 實作回退(Fallback) 模式
    • 1-120
      7.5 實作隔板(Bulkhead) 模式
    • 1-121
      7.6 實作重試(Retry) 模式
    • 1-122
      7.7 實作頻率限制器(Rate Limiter) 模式
    • 1-123
      7.8 使用ThreadLocal 追蹤服務呼叫
    • 1-124
      Ch08 使用Spring Cloud Gateway支援服務路由
    • 1-125
      8.1 簡介Service Gateway沒
    • 1-126
      8.2 導入Spring Cloud Gateway
    • 1-127
      8.2.1 建構Spring Cloud Gateway 專案
    • 1-128
      8.2.2 設定Spring Cloud Gateway 與Eureka Server的關聯
    • 1-129
      8.3 設定Spring Cloud Gateway 服務路由
    • 1-130
      8.3.1 Spring Cloud Gateway 是反向代理
    • 1-131
      8.3.2 設定自動映射路由
    • 1-132
      8.3.3 設定手動映射路由
    • 1-133
      8.3.4 同時使用自動與手動映射路由
    • 1-134
      8.3.5 動態重新載入路由設定
    • 1-135
      8.4 使用Spring Cloud Gateway 的Predicate 與Filter 工廠
    • 1-136
      8.4.1 使用內建的Predicate 工廠設定路由
    • 1-137
      8.4.2 使用內建的Filter 工廠設定路由
    • 1-138
      8.4.3 自定義前置與後置Filter 追蹤服務呼叫
    • 1-139
      8.5 自定義Spring Cloud Gateway 的前置Filter 與建立關聯ID
    • 1-140
      8.6 完備關聯ID 在服務內的追蹤流程
    • 1-141
      8.6.1 建立UserContextFilter 攔截並讀取HTTP 標頭資訊
    • 1-142
      8.6.2 建立UserContext 與UserContextHolder 保存HTTP 標頭資訊
    • 1-143
      8.6.3 建立UserContextInterceptor 和RestTemplate傳播關聯ID
    • 1-144
      8.7 自定義Spring Cloud Gateway 的後置Filter 並回應關聯ID 至用戶端
    • 1-145
      Ch09 使用Keycloak 保護微服務架構
    • 1-146
      9.1 簡介OAuth2
    • 1-147
      9.2 簡介Keycloak
    • 1-148
      9.3 建立與設定Keycloak
    • 1-149
      9.3.1 使用Docker 啟動Keycloak
    • 1-150
      9.3.2 建立Realm
    • 1-151
      9.3.3 建立用戶端程式
    • 1-152
      9.3.4 建立Realm 角色
    • 1-153
      9.3.5 建立使用者
    • 1-154
      9.3.6 取得OAuth2 的存取令牌
    • 1-155
      9.4 使用Keycloak 保護微服務
    • 1-156
      9.4.1 新增Spring Security 與Keycloak 的Maven依賴項目
    • 1-157
      9.4.2 設定微服務連線Keycloak
    • 1-158
      9.4.3 建立設定類別與限制端點存取
    • 1-159
      9.4.4 使用存取令牌驗證保護機制
    • 1-160
      9.5 整合Keycloak 與Service Gateway
    • 1-161
      9.5.1 存取令牌的傳播流程
    • 1-162
      9.5.2 設定Service Gateway 傳播Authorization 標頭
    • 1-163
      9.5.3 設定Book 服務啟用Keycloak 保護
    • 1-164
      9.5.4 傳播存取令牌
    • 1-165
      9.6 解析存取令牌中的自定義資訊
    • 1-166
      9.7 更完整的微服務安全性架構
    • 1-167
      9.7.1 對所有服務通訊使用HTTPS/SSL
    • 1-168
      9.7.2 呼叫所有服務均透過Service Gateway
    • 1-169
      9.7.3 將API 區分公開區域和私有區域
    • 1-170
      9.7.4 封鎖服務裡非必要開放的通訊埠
    • 1-171
      Ch10 使用Spring Cloud Stream支援事件驅動架構
    • 1-172
      10.1 訊息傳遞、事件驅動架構和微服務的案例
    • 1-173
      10.1.1 簡介訊息代理與訊息傳遞模型
    • 1-174
      10.1.2 使用同步的請求與回應模型傳達服務間狀態變化
    • 1-175
      10.1.3 使用訊息傳遞模型傳達服務間狀態變化
    • 1-176
      10.1.4 訊息架構的注意事項
    • 1-177
      10.2 使用Spring Cloud Stream
    • 1-178
      10.2.1 簡介Spring Cloud Stream
    • 1-179
      10.2.2 設定Apache Kafka 的Docker 環境
    • 1-180
      10.2.3 在微服務專案中建立訊息生產者
    • 1-181
      10.2.4 在微服務專案中建立訊息消費者
    • 1-182
      10.2.5 驗證訊息的發送與接收
    • 1-183
      10.3 結合Redis 與Spring Cloud Stream
    • 1-184
      10.3.1 設定Redis 的Docker 環境
    • 1-185
      10.3.2 使用Redis 快取
    • 1-186
      10.4 使用Spring Cloud Stream 的函數式編程模型
    • 1-187
      10.4.1 調整訊息生產者改使用函數式編程模型
    • 1-188
      10.4.2 調整訊息消費者改使用函數式編程模型
    • 1-189
      Ch11 使用Spring Cloud Sleuth與Zipkin 追蹤微服務架構
    • 1-190
      11.1 簡介Spring Cloud Sleuth
    • 1-191
      11.1.1 微服務架構下追蹤與除錯的難題
    • 1-192
      11.1.2 使用Spring Cloud Sleuth 追蹤服務軌跡
    • 1-193
      11.2 使用Spring Cloud Sleuth 與ELKStack 彙整日誌紀錄
    • 1-194
      11.2.1 整合ELK Stack 與Spring Cloud Sleuth
    • 1-195
      11.2.2 在服務中設定Logback
    • 1-196
      11.2.3 在Docker 中定義和運行ELK Stack 服務
    • 1-197
      11.2.4 使用Kibana 查詢日誌紀錄彙整結果
    • 1-198
      11.2.5 在Service Gateway 將追蹤ID 新增到HTTP回應標頭
    • 1-199
      11.2.6 由Spring Boot 3.x 開始將停止支援SpringCloud Sleuth
    • 1-200
      11.3 使用Zipkin 進行分散式追蹤
    • 1-201
      11.3.1 設定Zipkin
    • 1-202
      11.3.2 使用Zipkin 追蹤跨服務操作
    • 1-203
      11.3.3 使用Zipkin 追蹤訊息傳遞
    • 1-204
      11.3.4 新增自定義跨度
    • 1-205
      版權頁
    • 1-206
      封底頁

    常見問答

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    猜你喜歡

    用戶評價

    | 收集中

    銷售方案