Quarkus 實戰專為 Kubernetes 而優化的 Java 解決方案 (Quarkus Cookbook: Kubernetes-Optimized Java Solutions)

Bueno, Alex Soto, Porter, Jason 張曉宇,劉岩,宋淨超譯譯

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

商品描述

Quarkus 建立在我們已熟知的基礎技術之上。
它使用JPA、JAX-RS、Eclipse Vert.、Eclipse MicroProfile 和CDI 等一些熟悉的技術,
將這些知識結合到一個緊湊的、易於部署的、針對OpenJDK Hotspot 或GraalVM 的Kubernetes 優化的容器中。
你可以高效利用Kubernetes 集,在應用程序需要擴展時,極大限度地利用機器上的資源。

作者簡介

Alex Soto Bueno 是Red Hat的開發者體驗總監,自2017 年以來一直是Java Champion。


Jason Porter 是一名首席軟件工程師,在Red Hat從事中間件工程服務、Arquillian、Quarkus 和其他開發者體驗項目。

目錄大綱

序言1
前言3
1章Quarkus概述7
1.1 開發者友好7
1.2 與Kubernetes集成8
1.3 內存和一響應時間8
1.4 Quarkus基本工作流程9

2章搭建腳手架10
2.1用Maven搭建Quarkus項目的腳手架10
2.2用Gradle搭建Quarkus項目的腳手架12
2.3 用Quarkus Start Coding網站搭建Quarkus項目的腳手架13
2.4 用Visual Studio Code搭建Quarkus項目的腳手架15
2.5 使用開發模式實時重載19
2.6 提供靜態資源20

3章開發RESTful服務22
3.1 創建一個簡單的REST API端點22
3.2 提取請求參數24
3.3 使用HTTP響應狀態碼25
3.4 綁定HTTP方法28
3.5 啟用跨源資源共享29
3.6 使用響應式路由30
3.7攔截HTTP請求33
3.8 使用SSL進行安全連接35

4章配置37
4.1使用自定義屬性配置應用程序37
4.2 以程序化的方式訪問配置屬性41
4.3 在外部覆蓋配置值41
4.4 使用profile進行配置43
4.5 修改日誌配置44
4.6 添加應用程序日誌45
4.7日誌配置46
4.8 使用自定義profile進行配置49
4.9 創建自定義配置源51
4.10 創建自定義轉換器53
4.11 配置值的分組55
4.12 驗證配置值57

5章編程模型59
5.1 對JSON進行編組和解組59
5.2 對XML進行編組和解組62
5.3 校驗輸入值和輸出值65
5.4 創建自定義校驗69
5.5 以程序化的方式校驗對象71
5.6依賴注入73
5.7 創建工廠類75
5.8 執行對像生命週期事件77
5.9 執行應用程序生命週期事件78
5.10 使用命名限定符79
5.11 使用自定義限定符81
5.12 限定和配置註解82
5.13 創建攔截器83
5.14 行為測試85
5.15 單元測試89
5.16 創建mock對象91
5.17使用Mockito創建mock對象92
5.18用元註解將多個註解組合為一個註解94
5.19 在測試代碼前後執行代碼95
5.20測試本地可執行文件101

6章打包Quarkus應用程序104
6.1 在命令行模式下運行104
6.2創建一個可運行的JAR文件106
6.3 über-JAR打包108
6.4 構建原生可執行文件108
6.5 為JAR文件構建一個Docker容器110
6.6 為原生可執行文件構建一個Docker容器111
6.7 構建和容器化原生SSL應用程序112

7章持久化115
7.1配置數據源115
7.2 使用多個數據源116
7.3 添加數據源的健康檢查117
7.4 定義事務的邊界118
7.5 設置事務的上下文119
7.6 程序化事務控制120
7.7 設置和修改事務時時間121
7.8 使用persistence.ml122
7.9 不使用persistence.ml122
7.10 使用不同JAR文件的實體123
7.11 用Panache持久化數據123
7.12 用Panache listAll方法查找所有實體條目125
7.13 用Panache findById方法查找單個實體125
7.14 用Panache find和list方法查找實體126
7.15 用Panache count方法獲取實體計數127
7.16 用Panache page方法對實體列表進行分頁127
7.17 用Panache stream方法對結果進行流處理128
7.18 測試Panache實體128
7.19 使用數據訪問對象和repository模式129
7.20 使用Amazon DynamoDB130
7.21 使用MongoDB135
7.22 用Panache連接MongoDB139
7.23 使用Neo4j140
7.24 使用Flyway144
7.25 以程序化的方式使用Flyway145

8章容錯146
8.1 自動重試146
8.2 時148
8.3 使用艙壁模式進行過載保護149
8.4 使用斷路器模式避免故障傳遞151
8.5 禁用容錯功能153

9章可觀察性155
9.1 使用自動化健康檢查155
9.2 創建自定義健康檢查157
9.3 暴指標160
9.4 創建指標162
9.5 使用分佈式跟踪167
9.6 自定義分佈式跟踪173

10章與Kubernetes集成176
10.1 構建和推送容器鏡像176
10.2 生成Kubernetes資源179
10.3 生成帶有健康檢查的Kubernetes資源182
10.4 在Kubernetes上部署服務184
10.5 在OpenShift上部署服務185
10.6 自動構建和部署容器鏡像189
10.7 通過Kubernetes配置應用程序190
10.8 使用配置擴展通過Kubernetes配置應用程序192
10.9 以程序化的方式與Kubernetes集進行交互193
10.10 測試Kubernetes Client交互197
10.11 實現一個Kubernetes Operator198
10.12 用Knative部署和管理無服務器工作負載211

11章認證與授權215
11.1 使用Elytron屬性文件配置進行認證和授權219
11.2 使用Elytron Security JDBC配置進行認證和授權222
11.3 使用MicroProfile JWT進行授權226
11.4 使用OpenId Connect進行授權和認證232
11.5 使用OpenId Connect保護網絡資源236

12章應用程序密鑰管理237
12.1 使用Kubernetes中的secret存儲數據237
12.2使用Vault安全地存儲配置的secret240
12.3 密碼即服務243
12.4 生成數據庫密碼並存入secret246
12.5 使用Vault Kubernetes Auth進行認證服務250

13章Quarkus REST客戶端255
13.1使用JAX-RS Web客戶端255
13.2 使用MicroProfile REST客戶端258
13.3實現CRUD客戶端261
13.4作header264
13.5 使用REST客戶端處理多部分消息266
13.6 使用REST客戶端配置SSL267

14章使用Spring API開發Quarkus應用程序272
14.1使用Spring依賴注入272
14.2 使用Spring Web275
14.3 使用Spring Data JPA277
14.4使用Spring Security279
14.5 使用Spring Boot屬性281

15章使用響應式編程模型284
15.1 創建異步HTTP端點284
15.2 異步流式數據傳輸285
15.3 使用消息傳遞解耦組件286
15.4 響應Apache Kafka消息288
15.5 向Apache Kafka發送消息291
15.6 序列化與反序列化293
15.7 使用Kafka Streams API294
15.8 使用AMQP300
15.9 使用MQTT301
15.10 使用響應式SQL進行查詢302
15.11 使用響應式SQL客戶端進行插入304
15.12 使用響應式MongoDB客戶端305
15.13 使用響應式Neo4j客戶端308

16章Quarkus的附加功能310
16.1 使用Qute模板引擎創建模板310
16.2 使用Qute渲染HTML312
16.3 更改Qute模板的位置314
16.4 擴展Qute數據類314
16.5 用OpenAPI描述端點315
16.6 自定義OpenAPI規範318
16.7同步發送電子郵件322
16.8 以響應式方式發送電子郵件325
16.9創建調度任務327
16.10使用應用程序數據緩存329
附錄A minikube333
附錄B Keycloak334
附錄C Knative337
關於作者
關於封面