響應式編程實戰(zhàn):構建彈性、可伸縮、事件驅(qū)動的分布式系統(tǒng) [法]克萊門特·埃斯科菲耶
定 價:109 元
- 作者:[法]克萊門特·埃斯科菲耶,[澳]肯·芬尼根
- 出版時間:2024/1/1
- ISBN:9787111743569
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP312.8JA
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書展示了如何利用事件驅(qū)動和響應式原理來構建健壯的分布式系統(tǒng),減少延遲并提高吞吐量——特別是在微服務和無服務器應用程序中。本書分為四部分:第一部分介紹響應式的背景、環(huán)境和內(nèi)容;第二部分深入講解響應式,涵蓋分布式系統(tǒng)的弊端、響應式系統(tǒng)和響應式編程;第三部分闡述如何使用Quarkus構建響應式應用程序,涵蓋響應式引擎、響應式編程庫SmallRye Mutiny、HTTP以及響應式數(shù)據(jù)訪問的相關知識;第四部分介紹基于Quarkus構建響應式系統(tǒng)的技術實踐。通過本書,你將學習Quarkus的基礎知識,在云平臺中創(chuàng)建真正的Kubernetes原生應用程序。
響應式系統(tǒng)和事件驅(qū)動架構正在成為應用程序設計中不可或缺的部分。響應式系統(tǒng)確保無論發(fā)生什么故障或錯誤,應用程序都具有響應性、可恢復性和彈性,而事件驅(qū)動架構為分布式系統(tǒng)提供了靈活、可組合的選擇。本書旨在幫助Java開發(fā)人員使用Quarkus 2.x(Kubernetes原生Java框架)將這些方法結合在一起。
Clement Escoffier和Ken Finnigan向你展示了如何利用事件驅(qū)動和響應式原理來構建健壯的分布式系統(tǒng),減少延遲并提高吞吐量——特別是在微服務和無服務器應用程序中。你還將學習Quarkus的基礎知識,在云平臺中創(chuàng)建真正的Kubernetes原生應用程序。
通過學習本書,你將:
? 了解響應式系統(tǒng)和事件驅(qū)動架構的基本原理。
? 學會使用Quarkus構建響應式應用程序。
? 學會將Quarkus與Apache Kafka或AMQP結合起來構建響應式系統(tǒng)。
? 利用Quarkus開發(fā)可在事件驅(qū)動架構中使用消息的微服務。
? 學會將外部消息傳遞系統(tǒng)(如Apache Kafka)與Quarkus集成。
? 使用Quarkus、響應式系統(tǒng)和響應式編程概念構建應用程序。
Clement Escoffier 是 Red Hat 的響應式架構師。他職業(yè)生涯很豐富,從學術職
位到管理職位。目前,他主要從事 Quarkus 和 Vert.x 開發(fā)工作。他參與了涉及
許多領域和技術的項目和產(chǎn)品,包括 OSGi、移動應用程序開發(fā)、持續(xù)交付和
DevOps。他的主要興趣領域是軟件工程—使軟件開發(fā)更高效、更有趣的過程、
方法和工具。Clement 是許多開源項目的積極貢獻者,如 Apache Felix、iPOJO、
Wisdom Framework、Eclipse Vert.x、 SmallRye、Eclipse MicroProfile 和 Quarkus。
Ken Finnigan 是 Red Hat 中間件的高級首席軟件工程師,在世界各地的企業(yè)
擔任顧問和軟件工程師超過 20 年。Ken 負責 SmallRye 項目,該項目實現(xiàn)了
Eclipse MicroProfile 規(guī)范,同時也希望通過 Kubernetes 原生開發(fā)進行創(chuàng)新。Ken
也是“ Quarkus 成為超音速亞原子 Java”開發(fā)團隊的一員。作為 SmallRye 工作
的一部分,Ken 積極參與 Eclipse MicroProfile 社區(qū),為云原生中的 Java 微服務
開發(fā)規(guī)范,還曾擔任 Thorntail 和 LiveOak 以及其他 JBoss 項目的負責人。Ken
還是 Enterprise Java Microservices 和其他兩本書的作者。
目錄
前言1
第一部分 響應式和Quarkus簡介
第1章 響應式簡介13
1.1 響應式是什么13
1.2 響應式軟件并不是一件新鮮事14
1.3 響應式的整體藍圖15
1.4 為什么響應式架構如此適合云原生應用程序17
1.5 響應式不是銀彈18
第2章 Quarkus簡介19
2.1 云平臺中的Java19
2.2 Quarkus方式29
2.3 創(chuàng)建第一個Quarkus應用程序31
2.4 10分鐘講明白Kubernetes下的Quarkus38
2.5 談談原生程序44
2.6 本章小結49
第二部分 響應式和事件驅(qū)動的應用程序
第3章 分布式系統(tǒng)的弊端53
3.1 什么是分布式系統(tǒng)53
3.2 云原生和Kubernetes原生應用程序56
3.3 淺析分布式系統(tǒng)的弊端61
3.4 Kubernetes世界中分布式計算的謬誤62
3.5 時間問題:同步通信的缺點64
3.6 本章小結70
第4章 響應式系統(tǒng)的設計原則72
4.1 響應式系統(tǒng)10172
4.2 命令和事件74
4.3 目的地與空間解耦79
4.4 時間解耦81
4.5 非阻塞I/O的作用82
4.6 響應式應用程序的剖析90
4.7 本章小結94
第5章 響應式編程:征服異步性95
5.1 異步代碼和模式95
5.2 使用future101
5.3 Project Loom:虛擬線程和載體線程103
5.4 響應式編程106
5.5 響應式流和對流量控制的需求112
5.6 本章小結119
第三部分 使用Quarkus構建響應式應用程序和系統(tǒng)
第6章 Quarkus:響應式引擎123
6.1 命令式模型124
6.2 響應式模型127
6.3 響應式與命令式的統(tǒng)一128
6.4 響應式引擎132
6.5 響應式編程模型133
6.6 Quarkus的事件驅(qū)動架構134
6.7 本章小結134
第7章 Mutiny:事件驅(qū)動的響應式編程API136
7.1 為什么是另一個響應式編程庫136
7.2 是什么讓Mutiny獨一無二137
7.3 在Quarkus中使用Mutiny138
7.4 Uni和Multi139
7.5 Mutiny和流量控制141
7.6 觀測事件142
7.7 轉(zhuǎn)換事件143
7.8 鏈接異步操作144
7.9 從故障中恢復147
7.10 合并和連接數(shù)據(jù)項148
7.11 選擇數(shù)據(jù)項149
7.12 收集數(shù)據(jù)項151
7.13 本章小結151
第8章 響應式與HTTP153
8.1 HTTP請求的過程154
8.2 RESTEasy Reactive155
8.3 有什么好處158
8.4 異步端點返回Uni160
8.5 處理故障并定制響應163
8.6 流數(shù)據(jù)166
8.7 響應式分數(shù)172
8.8 本章小結173
第9章 響應式數(shù)據(jù)訪問174
9.1 數(shù)據(jù)訪問的問題174
9.2 與關系數(shù)據(jù)庫的非阻塞交互176
9.3 使用響應式ORM:Hibernate Reactive177
9.4 NoSQL是什么182
9.5 與Redis交互182
9.6 與數(shù)據(jù)相關的事件和變更數(shù)據(jù)捕獲186
9.7 使用Debezium捕獲變化188
9.8 本章小結191
第四部分 連接點
第10章 響應式消息傳遞:連接組織195
10.1 從響應式應用程序到響應式系統(tǒng)195
10.2 構建基于消息的應用程序205
10.3 把所有的東西放在一起213
10.4 本章小結217
第11章 事件總線:核心支柱218
11.1 Kafka或AMQP:選擇正確的工具218
11.2 用Kafka構建響應式系統(tǒng)219
11.3 用AMQP構建響應式系統(tǒng)233
11.4 本章小結240
第12章 響應式REST客戶端:用HTTP端點連接241
12.1 與HTTP端點交互241
12.2 響應式REST客戶端244
12.3 阻塞和非阻塞248
12.4 處理故障250
12.5 使用RESTEasy Reactive客戶端構建API網(wǎng)關255
12.6 在消息傳遞應用程序中使用REST客戶端260
12.7 本章小結265
第13章 響應式和事件驅(qū)動架構的可觀測性266
13.1 為什么可觀測性這么重要266
13.2 消息傳遞與健康檢查267
13.3 消息傳遞與度量273
13.4 消息傳遞與分布式追蹤277
13.5 本章小結281
第14章 總結282
14.1 一個簡短的總結282
14.2 這是全部嗎283
14.3 響應式的未來284
14.4 結束即開始285