從基礎到進階——Quarkus完整開發大全!Quarkus是一個來自Red Hat公司的超音速次原子Kubernetes原生Java框架。該框架允許Java開發人員結合容器、微服務和Kubernetes的能力來構建可靠、高性能、快速的雲端原生應用和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的基礎上擴充外部元件。本書適合想在Quarkus獲得更多知識或實現更多新創方式的IT工程師,針對Spring框架已經有經驗的工程師更是如虎添翼。
▍本書特點.Java工程師用K8s探索微服務的先驅Quarkus概述
.Quarkus中進行Web開發完整專案
.資料驅動的Quarkus案例實作
.Message系統的案例架設
.Security安全考量的微服務專案
.Reactive的整合場景
.Tolerance在Quarkus的應用場景
.Health的企業專案開發
.Tracing場景下的微服務應用
.Spring整合應用場景
.Quarkus在雲端原生實施部署
.Quarkus Extension進一步使用
※適合讀者群本書適合對Quarkus感興趣且想在這方面獲得更多知識或實現更多想法的IT從業者。
.初級讀者:可以透過本書知道如何使用Quarkus進行Web、Data和Message方面的開發,能非常迅速、高效、簡單地架設一個微服務應用系統。
.中級讀者:如具有豐富開發經驗的軟體開發工程師等,可以透過本書獲得對Quarkus的全面認識,能建構安全的、整合的、伸縮性和容錯能力強的雲端原生應用。
.進階讀者:如具有豐富經驗的架構師和分析師,可以透過本書知道Quarkus的核心特性,能利用這些特性遊刃有餘地建構響應式的、高可靠的、高可用的、維護性強的雲端原生架構系統。
.在Spring上已經有經驗累積的工程師:幾乎可以零成本地又掌握一套基於Java語言的雲端原生開發工具。讀者如果有一些工作經驗,曾經用類似的工具(如Spring等)進行過軟體開發,那麼將能非常快速地掌握Quarkus的使用方法。
作者簡介:
任鋼
教授級高級工程師,架構設計師、系統分析師和資訊專案管理師。擁有二十餘年的軟體開發和架構設計經驗,承擔過上百個軟體專案的規劃、設計、開發和交付工作。現在在某互聯科技公司擔任首席架構師,主要業務方向是提供企業數位化轉型、行業互聯網(物聯網)、雲原生體系、微服務架構等的諮詢服務。
推薦序
※推薦序一
紅帽中國首席架構師 張家駒
Java,作為歷久不衰的程式語言,以其物件導向、跨平台、分散式、高性能、元件化、動態特性等諸多特點,在企業計算、個人計算、行動計算等領域,一直備受開發者青睞。以Java語言為藍本,在軟體工程方法、設計模式等領域的迭代與發展,更是層出不窮。Java語言,在近三十年的發展歷程中,形成了諸多被工業界廣泛接受的標準和框架,為開發大型應用提供了便利,隱藏了電腦底層技術的複雜性,使開發者可以更專注於業務邏輯,可以快速、高效率地開發應用,以及穩定、可靠地運行應用。因此,在軟體產業中,多年來也培養出、成長起一大批具有Java開發背景的軟體工程師、架構師、管理者。這些從業者形成了強大的Java開發者社區,推動著Java語言不斷向前發展。
歷史的車輪不斷向前,從傳統的企業計算,到雲端運算,再到霧計算,計算無處不在。應用架構從傳統的單體應用、三層架構走向分散式、微服務、無伺服器架構,架構不斷演變,從「大而全」轉向「小而多」,便於應用的快速開發、迭代、整合、上線。因此,對程式語言及其開發框架來說,也提出了適應時代發展的新要求,比如為了使應用可以更快地啟動、執行時期佔用更少的記憶體以便大量的應用可以同時運行,語言及其框架需要做出一些改變,等等。傳統的Java框架在這種新需求下顯得有些「厚重」了,如何讓其「瘦身」,成為Java社區的熱點。
Quarkus正是在這樣的背景下應運而生的,我們可以稱它為雲端原生時代的Java框架,或「超音速次原子Java框架」,這恰恰說明了Quarkus的兩個最重要的特點,一個是「快」,一個是「小」。具體的Quarkus是什麼?它有哪些優點?它是如何應用的?相信你一定很好奇,帶著疑問閱讀本書,你必將收穫良多。
本書作者以大量的親身實踐,帶讀者掌握Quarkus技術、走進雲端原生應用程式開發的世界。願我們一起擁抱雲端原生、擁抱未來!
※推薦序二
亞馬遜雲端科技專業顧問服務團隊經理 陳明儀(Simon Chen)
在當今這個追求效率和便捷性的網際網路時代,閱讀這樣一本用心撰寫的IT圖書,讓我獲益匪淺。作者圖、文、碼並茂地介紹了Quarkus開發相關知識,可以讓讀者在追求企業微服務系統規劃實施的道路上實現快速學習、彎道超車。
在本書中,詳細說明了在微服務應用程式開發和架構設計中Quarkus是如何結合Redis、MongoDB、Kafka、Message Queue和Vert.x等相關框架,讓讀者在學習Quarkus知識的同時,具備讓Quarkus實際落地實施的能力。我在讀完本書後,對作者在微服務系統架構設計、規劃實施及管理整合上展現出的能力,感到欽佩不已。
最後,本書最讓我印象深刻的是,作者在介紹Quarkus時所表現出的整體結構規劃和深入淺出的表達,這些都讓我這個IT老兵能迅速把握書中要點。期待作者持續創作,不斷寫出在IT界有影響力的圖書。
※推薦序一
紅帽中國首席架構師 張家駒
Java,作為歷久不衰的程式語言,以其物件導向、跨平台、分散式、高性能、元件化、動態特性等諸多特點,在企業計算、個人計算、行動計算等領域,一直備受開發者青睞。以Java語言為藍本,在軟體工程方法、設計模式等領域的迭代與發展,更是層出不窮。Java語言,在近三十年的發展歷程中,形成了諸多被工業界廣泛接受的標準和框架,為開發大型應用提供了便利,隱藏了電腦底層技術的複雜性,使開發者可以更專注於業務邏輯,可以快速、高效率地開發應用,以及穩定、可靠地運行應用。因此,在軟體產業中...
作者序
▍前言
※本書定位
本書是一本Quarkus開發指南,簡單地說,就是告訴讀者如何快速、高效和精準地進行Quarkus開發。本書中實踐內容佔九成,而理論知識提及較少,因此本書是一本實踐性和可操作性強的圖書。本書既可以作為學習Quarkus的教學,也可以作為架構師的參考手冊,以備不時之需。
本書以案例為基礎,包含了案例程式的原始程式、講解和驗證。針對各個案例,筆者並沒有簡單地貼原始程式,而是以原始程式、圖示和文字說明相結合的方式進行了詳細解析,幫助讀者了解案例整體想法和設計意圖。
筆者根據自己的實際工作經驗進行了篩選。如果要開發一個雲端原生微服務應用,那麼需要網路支援、資料支援(包括關聯式資料庫、快取資料庫、NoSQL資料庫等)和安全框架,實現這些基本上就能夠完成一個雲端原生微服務系統的大部分功能。如果涉及非同步處理或事件處理,還可以加上一個訊息元件或流元件。更進一步地,如果還有更進階的用法,那就接著增加容錯、監控、非阻塞等元件。上述這些知識基本上都被筆者精選的案例所囊括。可以說,筆者選擇的案例已經可以覆蓋80%~90%的雲端原生微服務應用程式開發相關內容。
本書中反覆提及Java的規範和標準。在IT世界中,各種開放原始碼平台和產品層出不窮,而且進行著快速迭代。學習每個平台和產品都需要投入精力和時間成本,但很多時候往往是,開發者非常辛苦地學習了一套平台的用法,沒想到稍過一段時間,就發現所學技術或技能已經落後。而在Java領域中,學習相關規範和標準能讓學習成本變低,讓我們更快、更容易地學習技術和技能。
※本書結構
.第1章 Quarkus概述
首先將介紹Quarkus的概念和特徵;其次將簡單介紹Quarkus的整體優勢;再次將說明Quarkus的適用場景、目標使用者和競爭對手;接著將探討為什麼Java開發者會選擇Quarkus;最後將介紹Quarkus的架構和核心概念。
.第2章 Quarkus開發初探
首先將列出開發hello world微服務全過程;其次將介紹Quarkus開發基礎,主要使用6個基礎開發案例來進行講解;再次將介紹用Quarkus實現GoF設計模式的案例;最後是對應用案例的整體說明,可以認為這部分內容是整本書實戰案例的導讀。
.第3章 開發REST/Web應用
將分別介紹如何在Quarkus中開發REST JSON服務、增加OpenAPI和SwaggerUI功能、撰寫GraphQL應用、撰寫WebSocket應用,包含案例的原始程式、講解和驗證。
.第4章 資料持久化開發
將分別介紹如何在Quarkus中使用Hibernate ORM和JPA實現資料持久化、使用Java交易、使用Redis Client實現快取處理、使用MongoDB Client實現NoSQL處理、使用Panache實現資料持久化等,包含案例的原始程式、講解和驗證。
.第5章 整合訊息流和訊息中介軟體
將分別介紹如何在Quarkus中呼叫Apache Kafka訊息流、建立JMS應用實現佇列模式、建立JMS應用實現主題模式和建立MQTT應用等,包含案例的原始程式、講解和驗證。
.第6章 建構安全的Quarkus微服務
首先將對微服務Security進行概述並介紹Quarkus的Security架構;其次將分別介紹如何在Quarkus中實現基於檔案儲存使用者資訊的安全認證、基於資料庫儲存使用者資訊並採用JDBC獲取的安全認證、基於資料庫儲存使用者資訊並用JPA獲取的安全認證、基於Keycloak實現認證和授權、使用OpenID Connect實現安全的JAX-RS服務、使用OpenID Connect實現安全的Web應用、使用JWT加密權杖、使用OAuth 2.0實現認證等,包含案例的原始程式、講解和驗證。
.第7章 建構響應式系統應用
首先將簡介響應式系統;其次將簡介Quarkus響應式應用;再次將分別介紹如何在Quarkus中建立響應式JAX-RS應用、響應式SQL Client應用、響應式Hibernate應用、響應式Redis應用、響應式MongoDB應用、響應式Apache Kafka應用、響應式AMQP應用等,包含案例的原始程式、講解和驗證;最後將介紹Quarkus響應式基礎框架Vert.x的應用,包含案例的原始程式、講解和驗證。
.第8章 Quarkus微服務容錯機制
首先將簡介微服務容錯;然後將介紹如何在Quarkus中開發包括重試、逾時、回復、熔斷器和艙壁隔離等微服務容錯的應用,包含案例的原始程式、講解和驗證。
.第9章 Quarkus監控和日誌
首先將介紹Quarkus中的健康監控,其次將介紹Quarkus中的監控度量,最後將介紹Quarkus中的呼叫鏈日誌。這些應用都包含案例的原始程式、講解和驗證。
.第10章 整合Spring到Quarkus中
將分別介紹如何在Quarkus中整合Spring的DI功能、Web功能、Data功能、安全功能,以及獲取Spring Boot的設定檔屬性功能、獲取Spring Cloud的Config Server設定檔屬性功能,包含案例的原始程式、講解和驗證。
.第11章 Quarkus的雲端原生應用和部署
將分別介紹如何在Quarkus中建構容器映像檔、生成Kubernetes資源檔、生成OpenShift資源檔、生成Knative資源檔等,包含案例的原始程式、講解和驗證。
.第12章 進階應用——Quarkus Extension
首先將概述Quarkus Extension;然後將介紹如何建立一個Quarkus擴充應用,包含案例的原始程式、講解和驗證;最後是一些關於Quarkus Extension的說明。
.參考文獻
將列出本書參考文獻,以及本書中會涉及的基於Quarkus應用的軟體或平台,如果讀者需要了解更多細節,可以查閱相關文獻和資料。
.後記
Quarkus還處於不斷發展的過程中,本部分將告訴讀者如何使本書中的案例與Quarkus版本保持同步更新。
▍前言
※本書定位
本書是一本Quarkus開發指南,簡單地說,就是告訴讀者如何快速、高效和精準地進行Quarkus開發。本書中實踐內容佔九成,而理論知識提及較少,因此本書是一本實踐性和可操作性強的圖書。本書既可以作為學習Quarkus的教學,也可以作為架構師的參考手冊,以備不時之需。
本書以案例為基礎,包含了案例程式的原始程式、講解和驗證。針對各個案例,筆者並沒有簡單地貼原始程式,而是以原始程式、圖示和文字說明相結合的方式進行了詳細解析,幫助讀者了解案例整體想法和設計意圖。
筆者根據自己的實際工作經驗進行了篩選...
目錄
第1章 Quarkus概述
1.1 Quarkus的概念和特徵
1.2 Quarkus的整體優勢
1.3 Quarkus的適用場景、目標使用者和競爭對手
1.4 為什麼Java開發者會選擇Quarkus
1.5 Quarkus的架構和核心概念
1.6 本章小結
第2章 Quarkus開發初探
2.1 開發hello world微服務全過程
2.2 Quarkus開發基礎
2.3 GoF設計模式的Quarkus實現
2.4 應用案例說明
2.5 本章小結
第3章 開發REST/Web應用
3.1 撰寫REST JSON服務
3.2 增加OpenAPI和SwaggerUI功能
3.3 撰寫GraphQL應用
3.4 撰寫WebSocket應用
3.5 本章小結
第4章 資料持久化開發
4.1 使用Hibernate ORM和JPA實現資料持久化
4.2 使用Java交易
4.3 使用Redis Client實現快取處理
4.4 使用MongoDB Client實現NoSQL處理
4.5 使用Panache實現資料持久化
4.6 本章小結
第5章 整合訊息流和訊息中介軟體
5.1 呼叫Apache Kafka訊息串流
5.2 建立JMS應用實現佇列模式
5.3 建立JMS應用實現主題模式
5.4 建立MQTT應用
5.5 本章小結
第6章 建構安全的Quarkus微服務
6.1 微服務Security概述
6.2 Quarkus Security架構
6.3 以檔案儲存使用者資訊為基礎的安全認證
6.4 以資料庫儲存使用者資訊並用JDBC獲取為基礎的安全認證
6.5 以資料庫儲存使用者資訊並用JPA獲取為基礎的安全認證
6.6 以Keycloak為基礎實現認證和授權
6.7 使用OpenID Connect實現安全的JAX-RS服務
6.8 使用OpenID Connect實現安全的Web應用
6.9 使用JWT加密權杖
6.10 使用OAuth 2.0實現認證
6.11 本章小結
第7章 建構響應式系統應用
7.1 響應式系統簡介
7.2 Quarkus響應式應用簡介
7.3 建立響應式JAX-RS應用
7.4 建立響應式SQL Client應用
7.5 建立響應式Hibernate應用
7.6 建立響應式Redis應用
7.7 建立響應式MongoDB應用
7.8 建立響應式Apache Kafka應用
7.9 建立響應式AMQP應用
7.10 Quarkus響應式基礎框架Vert.x的應用
7.11 本章小結
第8章 Quarkus微服務容錯機制
8.1 微服務容錯簡介
8.2 Quarkus容錯的實現
8.3 本章小結
第9章 Quarkus監控和日誌
9.1 Quarkus的健康監控
9.2 Quarkus的監控度量
9.3 Quarkus的呼叫鏈日誌
9.4 本章小結
第10章 整合Spring到Quarkus中
10.1 整合Spring的DI功能
10.2 整合Spring的Web功能
10.3 整合Spring的Data功能
10.4 整合Spring的安全功能
10.5 獲取Spring Boot的設定檔屬性功能
10.6 獲取Spring Cloud的Config Server設定檔屬性功能
10.7 本章小結
第11章 Quarkus的雲端原生應用和部署
11.1 建構容器映像檔
11.2 生成Kubernetes資源檔
11.3 生成OpenShift資源檔
11.4 生成Knative資源檔
11.5 本章小結
第12章 進階應用——Quarkus Extension
12.1 Quarkus Extension概述
12.2 建立一個Quarkus擴充應用
12.3 一些關於Quarkus Extension的說明
12.4 本章小結
A後記
B參考文獻
C本書連結
第1章 Quarkus概述
1.1 Quarkus的概念和特徵
1.2 Quarkus的整體優勢
1.3 Quarkus的適用場景、目標使用者和競爭對手
1.4 為什麼Java開發者會選擇Quarkus
1.5 Quarkus的架構和核心概念
1.6 本章小結
第2章 Quarkus開發初探
2.1 開發hello world微服務全過程
2.2 Quarkus開發基礎
2.3 GoF設計模式的Quarkus實現
2.4 應用案例說明
2.5 本章小結
第3章 開發REST/Web應用
3.1 撰寫REST JSON服務
3.2 增加OpenAPI和SwaggerUI功能
3.3 撰寫GraphQL應用
3.4 撰寫WebSocket應用
3.5 本章小結
第4章 資...