响应式编程实战:构建弹性、可伸缩、事件驱动的分布式系统 [法]克莱门特·埃斯科菲耶
定 价:109 元
- 作者:[法]克莱门特·埃斯科菲耶,[澳]肯·芬尼根
- 出版时间:2024/1/1
- ISBN:9787111743569
- 出 版 社:机械工业出版社
- 中图法分类:TP312.8JA
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书展示了如何利用事件驱动和响应式原理来构建健壮的分布式系统,减少延迟并提高吞吐量——特别是在微服务和无服务器应用程序中。本书分为四部分:第一部分介绍响应式的背景、环境和内容;第二部分深入讲解响应式,涵盖分布式系统的弊端、响应式系统和响应式编程;第三部分阐述如何使用Quarkus构建响应式应用程序,涵盖响应式引擎、响应式编程库SmallRye Mutiny、HTTP以及响应式数据访问的相关知识;第四部分介绍基于Quarkus构建响应式系统的技术实践。通过本书,你将学习Quarkus的基础知识,在云平台中创建真正的Kubernetes原生应用程序。
响应式系统和事件驱动架构正在成为应用程序设计中不可或缺的部分。响应式系统确保无论发生什么故障或错误,应用程序都具有响应性、可恢复性和弹性,而事件驱动架构为分布式系统提供了灵活、可组合的选择。本书旨在帮助Java开发人员使用Quarkus 2.x(Kubernetes原生Java框架)将这些方法结合在一起。
Clement Escoffier和Ken Finnigan向你展示了如何利用事件驱动和响应式原理来构建健壮的分布式系统,减少延迟并提高吞吐量——特别是在微服务和无服务器应用程序中。你还将学习Quarkus的基础知识,在云平台中创建真正的Kubernetes原生应用程序。
通过学习本书,你将:
? 了解响应式系统和事件驱动架构的基本原理。
? 学会使用Quarkus构建响应式应用程序。
? 学会将Quarkus与Apache Kafka或AMQP结合起来构建响应式系统。
? 利用Quarkus开发可在事件驱动架构中使用消息的微服务。
? 学会将外部消息传递系统(如Apache Kafka)与Quarkus集成。
? 使用Quarkus、响应式系统和响应式编程概念构建应用程序。
Clement Escoffier 是 Red Hat 的响应式架构师。他职业生涯很丰富,从学术职
位到管理职位。目前,他主要从事 Quarkus 和 Vert.x 开发工作。他参与了涉及
许多领域和技术的项目和产品,包括 OSGi、移动应用程序开发、持续交付和
DevOps。他的主要兴趣领域是软件工程—使软件开发更高效、更有趣的过程、
方法和工具。Clement 是许多开源项目的积极贡献者,如 Apache Felix、iPOJO、
Wisdom Framework、Eclipse Vert.x、 SmallRye、Eclipse MicroProfile 和 Quarkus。
Ken Finnigan 是 Red Hat 中间件的高级首席软件工程师,在世界各地的企业
担任顾问和软件工程师超过 20 年。Ken 负责 SmallRye 项目,该项目实现了
Eclipse MicroProfile 规范,同时也希望通过 Kubernetes 原生开发进行创新。Ken
也是“ Quarkus 成为超音速亚原子 Java”开发团队的一员。作为 SmallRye 工作
的一部分,Ken 积极参与 Eclipse MicroProfile 社区,为云原生中的 Java 微服务
开发规范,还曾担任 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 创建第一个Quarkus应用程序31
2.4 10分钟讲明白Kubernetes下的Quarkus38
2.5 谈谈原生程序44
2.6 本章小结49
第二部分 响应式和事件驱动的应用程序
第3章 分布式系统的弊端53
3.1 什么是分布式系统53
3.2 云原生和Kubernetes原生应用程序56
3.3 浅析分布式系统的弊端61
3.4 Kubernetes世界中分布式计算的谬误62
3.5 时间问题:同步通信的缺点64
3.6 本章小结70
第4章 响应式系统的设计原则72
4.1 响应式系统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构建响应式应用程序和系统
第6章 Quarkus:响应式引擎123
6.1 命令式模型124
6.2 响应式模型127
6.3 响应式与命令式的统一128
6.4 响应式引擎132
6.5 响应式编程模型133
6.6 Quarkus的事件驱动架构134
6.7 本章小结134
第7章 Mutiny:事件驱动的响应式编程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 转换事件143
7.8 链接异步操作144
7.9 从故障中恢复147
7.10 合并和连接数据项148
7.11 选择数据项149
7.12 收集数据项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 流数据166
8.7 响应式分数172
8.8 本章小结173
第9章 响应式数据访问174
9.1 数据访问的问题174
9.2 与关系数据库的非阻塞交互176
9.3 使用响应式ORM:Hibernate Reactive177
9.4 NoSQL是什么182
9.5 与Redis交互182
9.6 与数据相关的事件和变更数据捕获186
9.7 使用Debezium捕获变化188
9.8 本章小结191
第四部分 连接点
第10章 响应式消息传递:连接组织195
10.1 从响应式应用程序到响应式系统195
10.2 构建基于消息的应用程序205
10.3 把所有的东西放在一起213
10.4 本章小结217
第11章 事件总线:核心支柱218
11.1 Kafka或AMQP:选择正确的工具218
11.2 用Kafka构建响应式系统219
11.3 用AMQP构建响应式系统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网关255
12.6 在消息传递应用程序中使用REST客户端260
12.7 本章小结265
第13章 响应式和事件驱动架构的可观测性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