Kubernetes 原生微服務開發 Kubernetes Native Microservices with Quarkus and Microprofile
[美] 約翰·克林甘(John Clingan)、肯·芬尼根(Ken Finnigan)著 陳計節 張聖奇 譯
- 出版商: 清華大學
- 出版日期: 2023-06-01
- 售價: $588
- 貴賓價: 9.5 折 $559
- 語言: 簡體中文
- 頁數: 281
- 裝訂: 平裝
- ISBN: 7302630623
- ISBN-13: 9787302630623
-
相關分類:
Kubernetes、Microservices 微服務、SOA
- 此書翻譯自: Kubernetes Native Microservices with Quarkus and Microprofile (Paperback)
立即出貨
買這商品的人也買了...
-
$790$616 -
$234$222 -
$720$569 -
$714$678 -
$780$616 -
$1,000$790 -
$297CKA/CKAD 應試指南 : 從 Docker 到 Kubernetes 完全攻略
-
$980$833 -
$1,280$1,011 -
$894$849 -
$594$564 -
$1,200$948 -
$534$507 -
$607使用 GitOps 實現 Kubernetes 的持續部署:模式、流程及工具
-
$580$458 -
$880$695 -
$828$787 -
$660$521 -
$839$797 -
$704Istio最佳實戰
-
$720$562 -
$680$537 -
$714$678 -
$620$489 -
$680$530
相關主題
商品描述
運用新的“Kubernetes優先”工具高效地開發微服務!Quarkus與容器和Kubernetes的結合渾然天成,從根本上簡化了微服務的開發與部署。Quarkus這個功能強大的框架從一開始就是基於Java構建的,因而能與現有的JVM代碼庫無縫集成,極大地縮短了啟動時間,減少了內存消耗量。 在《Kubernetes原生微服務開發》的指導下,你將使用容器、Kubernetes和Quarkus框架開發微服務。將首先開發基於Quarkus和MicroProfile API的可部署應用;此後,將瞭解如何借助Quarkus天然的啟動速度和運行速度優勢,通過運用GraalVM原生編譯,來獲得性能躍升。在學習過程中,你將體驗到如何在Quarkus應用中集成Spring開發,並吸收作者關於微服務監控和管理的真知灼見。 主要內容 ? 在Kubernetes上部署企業級Java應用 ? 運用Quarkus運行時框架開發應用 ? 運用GraalVM原生編譯獲得**性能 ? 充分運用MicroProfile規範
目錄大綱
第Ⅰ部分 基礎知識
第1 章 Quarkus、MicroProfile 和
Kubernetes 簡介............................ 3
1.1 什麽是微服務...................................3
1.1.1 微服務的興起...............................6
1.1.2 微服務架構...................................6
1.1.3 微服務規範的需求........................7
1.2 MicroProfile 規範............................7
1.2.1 MicroProfile 的發展歷程................8
1.2.2 MicroProfile 社區核心原則...........9
1.3 Quarkus............................................. 10
1.3.1 快樂開發.................................... 10
1.3.2 對MicroProfile 的支持............... 11
1.3.3 運行時效率................................ 11
1.4 Kubernetes....................................... 12
1.5 Kubernetes 原生微服務.............. 15
1.6 本章小結.......................................... 16
第2 章 初次開發Quarkus 應用............19
2.1 創建項目.......................................... 19
2.2 使用實時編碼進行開發............ 24
2.3 編寫測試.......................................... 32
2.4 生成原生可執行程序................. 37
2.5 在Kubernetes 上運行應用....... 40
2.5.1 生成 Kubernetes YAML ............. 40
2.5.2 應用打包.................................... 43
2.5.3 應用部署與運行......................... 43
2.6 本章小結.......................................... 45
第Ⅱ部分 微服務開發
第3 章 微服務配置.....................................49
3.1 MicroProfile Config架構概述......................................... 50
3.2 訪問配置......................................... 50
3.3 銀行服務......................................... 51
3.3.1 創建銀行服務............................ 51
3.3.2 配置銀行服務的名稱字段.......... 53
3.4 配置源.............................................. 54
3.5 配置mobileBanking 字段......... 57
3.6 使用@ConfigProperties 對配置屬性分組............................... 57
3.7 Quarkus 特有的配置功能......... 59
3.7.1 Quarkus 配置編組...................... 59
3.7.2 配置屬性表達式........................ 60
3.7.3 Quarkus ConfigMapping 功能..... 61
3.7.4 運行期和構建期配置屬性.......... 62
3.8 Kubernetes 上的配置.................. 63
3.8.1 Kubernetes 上的常見配置源....... 63
3.8.2 在Quarkus 應用中使用ConfigMap................................. 65
3.8.3 編輯ConfigMap......................... 66
3.8.4 Kubernetes Secret........................ 67
3.9 本章小結......................................... 69
第4 章 使用Panache 訪問數據...........71
4.1 數據源.............................................. 71
4.2 JPA..................................................... 73
4.3 簡化數據庫開發........................... 78
X Kubernetes 原生微服務開發
4.3.1 活動記錄.................................... 78
4.3.2 數據倉儲.................................... 81
4.3.3 數據訪問模式選型..................... 83
4.4 部署到Kubernetes....................... 84
4.4.1 部署PostgreSQL 數據庫............ 84
4.4.2 打包與部署................................ 85
4.5 本章小結.......................................... 86
第5 章 微服務客戶端.................................87
5.1 MicroProfile REST Client規範................................................... 88
5.2 定義服務接口................................ 89
5.2.1 CDI REST 客戶端..................... 90
5.2.2 以編程方式使用REST客戶端....................................... 95
5.2.3 選用CDI 還是編程式API.......... 96
5.2.4 異步響應類型............................ 96
5.3 定製REST 客戶端...................... 98
5.3.1 客戶端請求頭............................ 98
5.3.2 聲明提供程序..........................101
5.4 本章小結........................................106
第6 章 應用的健康管理.........................107
6.1 開發者在應用健康管理領域日益重要的地位...............107
6.2 MicroProfile Health 規範.........108
6.2.1 存活狀態與就緒狀態................109
6.2.2 確定存活狀態與就緒狀態........109
6.3 開始學習MicroProfile Health..............................................110
6.3.1 賬戶服務中的MicroProfile
Health 存活狀態......................112
6.3.2 為賬戶服務創建存活健康檢查.........................................113
6.3.3 賬戶服務的MicroProfile Health
就緒狀態..................................114
6.3.4 禁用第三方就緒健康檢查........115
6.3.5 創建新的就緒健康檢查............115
6.3.6 Quarkus 健康分組....................118
6.3.7 使用Quarkus 健康狀態界面..... 119
6.4 Kubernetes 存活和就緒探針.................................................120
6.4.1 定製健康檢查屬性...................121
6.4.2 部署到Kubernetes....................122
6.4.3 測試Kubernetes 中的就緒健康檢查.................................124
6.5 本章小結.......................................126
第7 章 應用韌性策略............................. 127
7.1 韌性策略簡介..............................127
7.2 用@Asynchronous 啟用單獨的線程執行方法...............128
7.3 用艙壁模式限制並發...............128
7.4 在交易服務中使用艙壁..........130
7.5 以降級處理的方式處理異常.................................................131
7.6 為調用指定超時.........................132
7.7 用@Retry 從臨時故障中恢復.................................................135
7.8 用熔斷器避免持續故障..........136
7.8.1 MicroProfile Fault Tolerance規範中的@CircuitBreaker ........136
7.8.2 熔斷器的工作原理...................137
7.8.3 更新交易服務,運用@CircuitBreaker.......................138
7.8.4 測試熔斷器..............................140
7.9 用配置屬性覆蓋註解參數.....142
7.10 部署到Kubernetes...................144
7.11 本章小結.....................................145
第8 章 命令式世界的反應式編程..... 147
8.1 反應式編程的示例....................147
8.2 反應式流.......................................149
8.2.1 發布者、訂閱者和處理者........149
8.2.2 回壓的重要性..........................150
8.3 Quarkus 中的反應式消息.......152
8.3.1 借用生成器結合使用命令式與反應式編程..............................152
8.3.2 關於阻塞..................................155
8.3.3 以內存模式測試.......................157
8.4 原理分析........................................160
8.4.1 MicroProfile 反應式消息規範.........................................160
8.4.2 消息內容和元數據...................161
8.4.3 消息流中的消息.......................164
8.5 部署到Kubernetes.....................164
8.5.1 Minikube 中的Apache Kafka .....165
8.5.2 匯總所有步驟..........................167
8.6 本章小結........................................169
第9 章 在Quarkus 中開發Spring微服務.............................................171
9.1 Quarkus 與Spring API兼容性簡介...................................171
9.2 Spring 依賴註入和配置的兼容性............................................172
9.2.1 搭建Spring Cloud 配置服務器.....................................173
9.2.2 將Spring 配置服務器用作配置源.....................................174
9.2.3 將銀行服務轉換為使用Spring Configuration API...........175
9.3 Quarkus 與Spring Web API的兼容性.......................................176
9.4 Quarkus 與Spring Data JPA的兼容性.......................................179
9.5 部署到Kubernetes.....................183
9.6 Spring API 兼容性在Quarkus中的實現原理..............................184
9.7 常見的Quarkus/Spring 兼容性相關的問題...................................184
9.8 對比Spring Boot 與Quarkus的啟動過程...................................185
9.9 本章小結........................................186
第Ⅲ部分 可觀測性、API 定義和微服務安全
第10 章 記錄指標.................................... 189
10.1 指標在微服務架構中的角色..........................................189
10.2 瞭解MicroProfile Metrics規範..............................................190
10.2.1 利用Prometheus 和Grafana繪制指標圖線......................191
10.2.2 MicroProfile Metrics 規範.....197
10.2.3 為賬戶服務添加埋點...........201
10.2.4 為交易服務添加埋點...........202
10.2.5 創建業務指標......................209
10.2.6 MicroProfile Metrics 與MicroProfile Fault Tolerance、JAX-RS 的集成................... 211
10.2.7 Micrometer 指標..................213
10.2.8 模擬繁忙的生產系統...........215
10.3 本章小結.....................................216
第11 章 微服務跟蹤................................ 217
11.1 跟蹤的工作原理......................218
11.2 Jaeger............................................219
11.2.1 跟蹤採樣.............................219
11.2.2 配置 Minikube 環境...........220
11.2.3 安裝Jaeger ..........................220
11.2.4 使用Jaeger 跟蹤微服務.......222
11.3 跟蹤的規範................................226
11.3.1 OpenTracing.........................226
11.3.2 MicroProfile OpenTracing .....227
11.3.3 OpenTelemetry.....................227
11.4 在應用中定製跟蹤..................228
11.4.1 使用@Traced.......................228
11.4.2 註入跟蹤器.........................228
11.4.3 跟蹤數據庫調用..................230
11.4.4 跟蹤Kafka 消息..................232
11.5 本章小結.....................................238
XII Kubernetes 原生微服務開發
第12 章 API 可視化................................239
12.1 在Swagger UI 中查看OpenAPI 文檔...........................240
12.1.1 啟用OpenAPI......................240
12.1.2 Swagger UI ..........................242
12.2 MicroProfile OpenAPI............244
12.2.1 應用信息.............................244
12.2.2 定製輸出內容的結構...........246
12.2.3 定義操作.............................247
12.2.4 操作的響應..........................248
12.2.5 為操作添加標簽..................251
12.2.6 過濾 OpenAPI 的內容.........252
12.3 設計先行開發...........................253
12.3.1 從文件加載OpenAPI...........253
12.3.2 混用文件與註解..................254
12.4 代碼先行還是OpenAPI先行...............................................255
12.5 本章小結.....................................255
第13 章 微服務安全................................257
13.1 認證和授權簡介.......................257
13.2 使用基於文件的認證與授權..........................................259
13.3 基於OpenID Connect 的認證與授權................................263
13.3.1 OpenID Connect(OIDC)
簡介....................................264
13.3.2 OIDC 與Keycloak...............264
13.3.3 使用OpenID Connect 訪問受保護的資源.........................266
13.3.4 測試授權碼流程..................268
13.4 JSON Web 令牌和
MicroProfile JWT.....................271
13.4.1 JWT 令牌的頭部.................272
13.4.2 JWT 令牌的正文.................272
13.4.3 JWT 簽名............................274
13.5 使用MicroProfile JWT 為交易服務添加安全保護........276
13.6 傳遞JWT....................................278
13.6.1 為賬戶服務API 端點添加安全保護.............................278
13.6.2 由交易服務向賬戶服務傳遞JWT 令牌............................279
13.7 在Kubernetes 上運行服務....280
13.8 本章小結.....................................281