※推薦序一
紅帽中國首席架構師 張家駒
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界有影響力的圖書。
▍前言
※本書定位
本書是一本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版本保持同步更新。 |