Quarkus 實踐指南:構建新一代的 Kubernetes 原生 Java 微服務

任鋼

買這商品的人也買了...

商品描述

Quarkus是一個來自Red Hat公司的超音速亞原子Kurbernetes原生Java框架。該框架允許Java開發人員結合容器、微服務和Kurbernetes的能力來構建可靠的、高性能的、快速的雲原生應用和Serverless應用。本書是一本Quarkus開發指南,涵蓋了使用Quarkus所需的大部分知識,書中的所有主題都配有典型案例,全書一共包含50多個案例。全書共12章,第1章是Quarkus概述,可以從整體上認識Quarkus;第2章是對Quarkus的初探,將使用Quarkus構建一個微服務並開發一些基礎應用;第3章至第10章是本書的主要部分,將詳細講解如何在Quarkus架構上進行Web、Data、Message、Security、Reactive、Tolerance、Health、Tracing、Spring集成等應用場景的開發和實現;第11章將介紹Quarkus在雲原生應用場景下的實施和部署;第12章將引出一個更高級的話題——Quarkus Extension,幫助高級開發者在Quarkus的基礎上擴展外部組件。

作者簡介

任鋼,教授級高工,國家認證的架構設計師、系統分析師和信息項目管理師,擁有二十餘年的軟件開發和架構設計經驗,承擔過上百個軟件項目的規劃、設計、開發和交付工作。
現在在某互聯科技公司擔任首席架構師,主要業務方向是提供企業數字化轉型、行業互聯網(物聯網)、雲原生體系、微服務架構等的諮詢服務。

目錄大綱

目錄
第1章 Quarkus概述 1
1.1 Quarkus的概念和特徵 1
1.2 Quarkus的整體優勢 3
1.3 Quarkus的適用場景、目標用戶和競爭對手 5
1.4 為什麼Java開發者會選擇Quarkus 7
1.5 Quarkus的架構和核心概念 8
1.6 本章小結 11

第2章 Quarkus開發初探 12
2.1 開發hello world微服務全過程 12
2.1.1 3種開發方式 12
2.1.2 編寫程序內容及說明 15
2.1.3 測試hello world微服務 17
2.1.4 運行程序及打包 19
2.2 Quarkus開發基礎 21
2.2.1 Quarkus的CDI應用 21
2.2.2 Quarkus命令模式 30
2.2.3 Quarkus應用程序生命週期 34
2.2.4 Quarkus配置文件 36
2.2.5 Quarkus日誌配置 40
2.2.6 緩存系統數據 43
2.2.7 基礎開發案例 46
2.3 GoF設計模式的Quarkus實現 47
2.3.1 GoF設計模式簡介 47
2.3.2 GoF設計模式案例的Quarkus源碼結構及演示 47
2.3.3 案例場景、說明和Quarkus源碼實現 51
2.4 應用案例說明 73
2.4.1 應用案例場景說明 73
2.4.2 應用案例簡要介紹 75
2.4.3 與應用案例相關的軟件和須遵循的規範 78
2.4.4 應用案例的演示和調用 84
2.4.5 應用案例的解析說明 86
2.5 本章小結 88

第3章 開發REST/Web應用 90
3.1 編寫REST JSON服務 90
3.1.1 案例簡介 90
3.1.2 編寫程序代碼 92
3.1.3 驗證程序 98
3.1.4 Quarkus的Web實現原理講解 99
3.2 增加OpenAPI和SwaggerUI功能 100
3.2.1 案例簡介 101
3.2.2 編寫程序代碼 102
3.2.3 驗證程序 103
3.3 編寫GraphQL應用 107
3.3.1 案例簡介 107
3.3.2 編寫程序代碼 107
3.3.3 驗證程序 113
3.4 編寫WebSocket應用 121
3.4.1 案例簡介 121
3.4.2 編寫程序代碼 122
3.4.3 驗證程序 127
3.5 本章小結 128

第4章 數據持久化開發 130
4.1 使用Hibernate ORM和JPA實現數據持久化 130
4.1.1 前期準備 130
4.1.2 案例簡介 132
4.1.3 編寫程序代碼 133
4.1.4 驗證程序 141
4.1.5 其他數據庫配置的實現 142
4.1.6 關於其他ORM實現 146
4.2 使用Java事務 146
4.2.1 Quarkus事務管理 146
4.2.2 案例簡介 149
4.2.3 編寫程序代碼 150
4.2.4 驗證程序 155
4.2.5 JTA事務的多種實現 156
4.3 使用Redis Client實現緩存處理 161
4.3.1 前期準備 161
4.3.2 案例簡介 162
4.3.3 編寫程序代碼 162
4.3.4 驗證程序 166
4.4 使用MongoDB Client實現NoSQL處理 168
4.4.1 前期準備 168
4.4.2 案例簡介 169
4.4.3 編寫程序代碼 170
4.4.4 驗證程序 175
4.5 使用Panache實現數據持久化 177
4.5.1 前期準備 177
4.5.2 案例簡介 177
4.5.3 編寫程序代碼 177
4.5.4 驗證程序 183
4.6 本章小結 185
第5章 整合消息流和消息中間件 186
5.1 調用Apache Kafka消息流 186
5.1.1 前期準備 186
5.1.2 案例簡介 188
5.1.3 編寫程序代碼 190
5.1.4 驗證程序 198
5.2 創建JMS應用實現隊列模式 200
5.2.1 前期準備 200
5.2.2 案例簡介 203
5.2.3 編寫程序代碼 205
5.2.4 驗證程序 211
5.3 創建JMS應用實現主題模式 213
5.3.1 前期準備 213
5.3.2 案例簡介 213
5.3.3 編寫程序代碼 214
5.3.4 驗證程序 220
5.4 創建MQTT應用 221
5.4.1 前期準備 221
5.4.2 案例簡介 222
5.4.3 編寫程序代碼 223
5.4.4 驗證程序 228
5.5 本章小結 229
第6章 構建安全的Quarkus微服務 231
6.1 微服務Security概述 231
6.2 Quarkus Security架構 232
6.2.1 Quarkus Security架構概述 232
6.2.2 Quarkus Security支持的身份認證 233
6.2.3 API令牌方案概述 234
6.3 基於文件存儲用戶信息的安全認證 235
6.3.1 案例簡介 235
6.3.2 編寫程序代碼 236
6.3.3 驗證程序 240
6.4 基於數據庫存儲用戶信息並用JDBC獲取的安全認證 241
6.4.1 案例簡介 241
6.4.2 編寫程序代碼 242
6.4.3 驗證程序 244
6.5 基於數據庫存儲用戶信息並用JPA獲取的安全認證 246
6.5.1 案例簡介 246
6.5.2 編寫程序代碼 247
6.5.3 驗證程序 253
6.6 基於Keycloak實現認證和授權 255
6.6.1 前期準備 255
6.6.2 案例簡介 258
6.6.3 編寫程序代碼 266
6.6.4 驗證程序 270
6.7 使用OpenID Connect實現安全的JAX-RS服務 274
6.7.1 案例簡介 274
6.7.2 編寫程序代碼 276
6.7.3 驗證程序 280
6.8 使用OpenID Connect實現安全的Web應用 283
6.8.1 案例簡介 283
6.8.2 編寫程序代碼 284
6.8.3 驗證程序 287
6.9 使用JWT加密令牌 289
6.9.1 案例簡介 289
6.9.2 編寫程序代碼 290
6.9.3 驗證程序 295
6.10 使用OAuth 2.0實現認證 298
6.10.1 前期準備 298
6.10.2 案例簡介 298
6.10.3 編寫程序代碼 299
6.10.4 驗證程序 303
6.11 本章小結 309
第7章 構建響應式系統應用 310
7.1 響應式系統簡介 310
7.2 Quarkus響應式應用簡介 317
7.2.1 Quarkus的響應式總體架構 317
7.2.2 Quarkus中整合的響應式框架和規範 317
7.2.3 使用Quarkus實現響應式API 320
7.3 創建響應式JAX-RS應用 325
7.3.1 案例簡介 325
7.3.2 編寫程序代碼 326
7.3.3 驗證程序 332
7.4 創建響應式SQL Client應用 334
7.4.1 前期準備 334
7.4.2 案例簡介 335
7.4.3 編寫程序代碼 335
7.4.4 驗證程序 340
7.5 創建響應式Hibernate應用 342
7.5.1 前期準備 342
7.5.2 案例簡介 342
7.5.3 編寫程序代碼 343
7.5.4 驗證程序 348
7.6 創建響應式Redis應用 350
7.6.1 前期準備 350
7.6.2 案例簡介 350
7.6.3 編寫程序代碼 350
7.6.4 驗證程序 356
7.7 創建響應式MongoDB應用 357
7.7.1 前期準備 357
7.7.2 案例簡介 357
7.7.3 編寫程序代碼 357
7.7.4 驗證程序 363
7.8 創建響應式Apache Kafka應用 364
7.8.1 前期準備 364
7.8.2 案例簡介 364
7.8.3 編寫程序代碼 368
7.8.4 驗證程序 373
7.9 創建響應式AMQP應用 374
7.9.1 前期準備 374
7.9.2 案例簡介 374
7.9.3 編寫程序代碼 375
7.9.4 驗證程序 380
7.10 Quarkus響應式基礎框架Vert.x的應用 382
7.10.1 案例簡介 383
7.10.2 編寫程序代碼 384
7.10.3 Vert.x API應用講解和驗證 385
7.10.4 WebClient應用講解和驗證 389
7.10.5 routes應用講解和驗證 391
7.10.6 EventBus應用講解和驗證 394
7.10.7 stream應用講解和驗證 396
7.10.8 pgclient應用講解和驗證 397
7.10.9 delay應用講解和驗證 402
7.10.10 JSON應用講解和驗證 404
7.11 本章小結 405
第8章 Quarkus微服務容錯機制 406
8.1 微服務容錯簡介 406
8.2 Quarkus容錯的實現 407
8.2.1 案例簡介 407
8.2.2 編寫程序代碼 408
8.2.3 Quarkus重試的實現和驗證 409
8.2.4 Quarkus超時和回退的實現和驗證 412
8.2.5 Quarkus熔斷器的實現和驗證 415
8.2.6 Quarkus艙壁隔離的實現 418
8.3 本章小結 418
第9章 Quarkus監控和日誌 419
9.1 Quarkus的健康監控 419
9.1.1 案例簡介 419
9.1.2 編寫程序代碼 420
9.1.3 驗證程序 424
9.2 Quarkus的監控度量 427
9.2.1 案例簡介 427
9.2.2 編寫程序代碼 427
9.2.3 驗證程序 429
9.3 Quarkus的調用鏈日誌 432
9.3.1 案例簡介 432
9.3.2 編寫程序代碼 434
9.3.3 驗證程序 437
9.4 本章小結 438
第10章 集成Spring到Quarkus中 439
10.1 整合Spring的DI功能 439
10.1.1 案例簡介 439
10.1.2 編寫程序代碼 439
10.1.3 驗證程序 445
10.2 整合Spring的Web功能 447
10.2.1 案例簡介 447
10.2.2 編寫程序代碼 448
10.2.3 驗證程序 452
10.3 整合Spring的Data功能 453
10.3.1 案例簡介 453
10.3.2 編寫程序代碼 454
10.3.3 驗證程序 460
10.4 整合Spring的安全功能 461
10.4.1 案例簡介 461
10.4.2 編寫程序代碼 462
10.4.3 驗證程序 465
10.5 獲取Spring Boot的配置文件屬性功能 466
10.5.1 案例簡介 466
10.5.2 編寫程序代碼 467
10.5.3 驗證程序 470
10.6 獲取Spring Cloud的Config Server配置文件屬性功能 471
10.6.1 案例簡介 471
10.6.2 編寫程序代碼 472
10.6.3 驗證程序 474
10.7 本章小結 475
第11章 Quarkus的雲原生應用和部署 476
11.1 構建容器鏡像 476
11.1.1 Quarkus構建容器鏡像概述 476
11.1.2 案例簡介 479
11.1.3 編寫程序代碼 480
11.1.4 創建Docker容器鏡像並運行容器程序 481
11.2 生成Kubernetes資源文件 482
11.2.1 Quarkus在Kubernetes上部署雲原生應用 482
11.2.2 案例簡介 483
11.2.3 編寫程序代碼 486
11.2.4 創建Kubernetes部署文件並將其部署到Kubernetes中 489
11.3生成OpenShift資源文件 492
11.3.1 Quarkus在OpenShift中部署雲原生應用 492
11.3.2 案例簡介 492
11.3.3 編寫程序代碼 493
11.3.4 創建OpenShift部署文件並將其部署到OpenShift中 494
11.4 生成Knative資源文件 499
11.4.1 Quarkus生成Knative部署文件 499
11.4.2 案例簡介 499
11.4.3 編寫程序代碼 501
11.4.4 創建Knative部署文件並將其部署到Kubernetes中 502
11.5 本章小結 504
第12章 高級應用——Quarkus Extension 505
12.1 Quarkus Extension概述 505
12.1.1 Quarkus Extension的哲學 505
12.1.2 Quarkus Extension基本概念 506
12.1.3 Quarkus Extension的組成 507
12.1.4 啟動Quarkus應用程序 507
12.2 創建一個Quarkus擴展應用 508
12.2.1 案例簡介 508
12.2.2 編寫程序代碼 508
12.2.3 驗證程序 516
12.3 一些關於Quarkus Extension的說明 517
12.4 本章小結 517
後記 519
參考文獻 521