Quarkus是一个来自Red Hat公司的超音速亚原子Kurbernetes原生Java框架。该框架允许Java开发人员结合容器、微服务和Kurbernetes的能力来构建可靠的、高性能的、快速的云原生应用和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是超音速亚原子Java框架,多位红帽专家和业内专家推荐,适合各类开发人员的Quarkus开发实操指导手册
推荐序一
Java,作为经久不衰的程序设计语言,以其面向对象、跨平台、分布式、高性能、组件化、动态特性等诸多特点,在企业计算、个人计算、移动计算等领域,一直备受开发者青睐。以Java语言为蓝本,在软件工程方法、设计模式等领域的迭代与发展,更是层出不穷。Java语言,在近三十年的发展历程中,形成了诸多被工业界广泛接受的标准和框架,为开发大型应用提供了便利,屏蔽了计算机底层技术的复杂性,使开发者可以更专注于业务逻辑,可以快速、高效地开发应用,以及稳定、可靠地运行应用。因此,在软件行业中,多年来也培养出、成长起一大批具有Java开发背景的软件工程师、架构师、管理者。这些从业者形成了强大的Java开发者社区,推动着Java语言不断向前发展。
历史的车轮不断向前,从传统的企业计算,到云计算,再到雾计算,计算无处不在。应用架构从传统的单体应用、三层架构走向分布式、微服务、无服务器架构,架构不断演变,从“大而全”转向“小而多”,便于应用的快速开发、迭代、集成、上线。因此,对于程序设计语言及其开发框架来说,也提出了适应时代发展的新要求,比如为了使应用可以更快地启动、运行时占用更少的内存以便大量的应用可以同时运行,语言及其框架需要做出一些改变,等等。传统的Java框架在这种新需求下显得有些“厚重”了,如何让其“瘦身”,成为Java社区的热点。
Quarkus正是在这样的背景下应运而生的,我们可以称它为云原生时代的Java框架,或者“超音速亚原子Java框架”,这恰恰说明了Quarkus的两个最重要的特点,一个是“快”,一个是“小”。具体的Quarkus是什么?它有哪些优点?它是如何应用的?相信你一定很好奇,带着疑问阅读本书吧,你必将收获良多。
本书作者以大量的亲身实践,带读者掌握Quarkus技术、走进云原生应用开发的世界。愿我们一起拥抱云原生、拥抱未来!
张家驹
红帽中国首席架构师
推荐序二
在当今这个追求效率和便捷性的互联网时代,阅读这样一本用心撰写的IT图书,让我获益匪浅。作者图、文、码并茂地介绍了Quarkus开发相关知识,可以让读者在追求企业微服务体系规划实施的道路上实现快速学习、弯道超车。
在本书中,详细说明了在微服务应用开发和架构设计中Quarkus是如何结合Redis、MongoDB、Kafka、Message Queue和Vert.x等相关框架,让读者在学习Quarkus知识的同时,具备让Quarkus实际落地实施的能力。我在读完本书后,对作者在微服务体系架构设计、规划实施及管理整合上展现出的能力,感到钦佩不已。
最后,本书最让我印象深刻的是,作者在介绍Quarkus时所体现出的整体结构规划和深入浅出的表达,这些都让我这个IT老兵能迅速把握书中要点。期待作者持续创作,不断写出在IT界有影响力的图书。
陈明仪(Simon Chen)
亚马逊云科技专业顾问服务团队经理
前言
读者对象
本书适合对Quarkus感兴趣且想在这方面获得更多知识或者实现更多想法的IT从业者。
初级读者,可以通过本书知道如何使用Quarkus进行Web、Data和Message方面的开发,能非常迅速、高效、简单地搭建一个微服务应用系统。
中级读者,如有着丰富开发经验的软件开发工程师等,可以通过本书获得全面的对Quarkus的认识,能构建安全的、集成的、伸缩性和容错能力强的云原生应用。
高级读者,如有着丰富经验的架构师和分析师,可以通过本书知道Quarkus的核心特性,能利用这些特性游刃有余地构建响应式的、高可靠的、高可用的、维护性强的云原生架构体系。
本书尤其适合在Spring上已经有经验积累的工程师,他们几乎可以零成本地又掌握一套基于Java语言的云原生开发工具。从笔者的角度来看,Quarkus非常容易上手,读者如果有一些工作经验,曾经用类似的工具(如Spring等)进行过软件开发,那么将能非常快速地掌握Quarkus的使用方法。
本书定位
本书是一本Quarkus开发指南,简单地说,就是告诉读者如何快速、高效和精准地进行Quarkus开发。本书中实践内容占九成,而理论知识提及较少,因此本书是一本实践性和可操作性强的图书。本书既可以作为学习Quarkus的教程,也可以作为架构师的参考手册,以备不时之需。
本书以案例为基础,包含了案例程序的源码、讲解和验证。针对各个案例,笔者并没有简单地贴源码,而是以源码、图示和文字说明相结合的方式进行了详细解析,帮助读者理解案例总体思路和设计意图。
Quarkus官网上有非常多案例,让人眼花缭乱,那么笔者为什么会选择书中的这些案例进行讲解呢?这是因为笔者根据自己的实际工作经验进行了筛选。如果要开发一个云原生微服务应用,那么需要网络支持、数据支持(包括关系型数据库、缓存数据库、NoSQL数据库等)和安全框架,实现这些基本上就能够完成一个云原生微服务系统的大部分功能。如果涉及异步处理或事件处理,还可以加上一个消息组件或流组件。更进一步地,如果还有更高级的用法,那就接着添加容错、监控、非阻塞等组件。上述这些知识基本上都被笔者精选的案例所囊括。可以说,笔者选择的案例已经可以覆盖80%~90%的云原生微服务应用开发相关内容。
本书中反复提及Java的规范和标准。在IT世界中,各种开源平台和产品层出不穷,而且进行着快速迭代。学习每个平台和产品都需要时间成本和投入精力,但是很多时候往往是,开发者非常辛苦地学习了一套平台的用法,没想到稍过一段时间,就发现所学技术或技能已经落后。而在Java领域中,学习相关规范和标准能让学习成本变低,让我们更快、更容易地学习技术和技能。
如何使用本书
本书中的每个案例都是一个故事,讲故事有很多种方法,就好似不同的导演拍同一个电影题材所展现给观众的故事都不一样。笔者讲故事的总体思路是这样的:首先概述这个故事的目的、组成、环境(上下文);然后重点分析这个故事的要点及实现,还会提供一两张图来描述整个故事的发展过程;最后笔者会给出验证环节的实现。这样读者花非常少的时间和精力就可以进行具体的实践。
本书还是一本软件编程书。编程是一项实践性强的活动,讲100句道理也不如写上10行代码。本书中的每个案例都有验证环节,也就是让读者亲手实践,而且针对这些环节,笔者还准备了相关代码,读者可以看到结果是否与设想一致。读者也许很容易就能看明白书中的文字和图示部分,可是具体实操时,却发现好像不是那么回事,笔者也曾经历过这样的事。因此,要不断地分析、排错,在踩过无数个“坑”后,最终实现自己想要的效果。笔者笃信:纸上得来终觉浅,绝知此事要躬行。这也是编程的真谛。
在开始具体的案例之旅前,笔者强烈建议读者阅读第2章的“2.4 应用案例说明”一节,其中包含了各个具体案例的总体说明,是关于所有案例的应用场景、原则和规则的通用说明。读者若能明白这些内容,就能更轻松、方便、高效地理解各个案例的核心含义,从而达到事半功倍的效果。
本书结构
本书总共12章,首先是Quarkus概述,可以让读者从整体上认识Quarkus;其次是对Quarkus的初探;再次是本书的主要部分,将详细讲解如何在Quarkus中进行Web、Data、Message、Security、Reactive、Tolerance、Health、Tracing、Spring集成等应用场景的开发和实现;接着将介绍Quarkus在云原生应用场景下的实施和部署;最后引出一个更高级的话题——Quarkus Extension。各章简介如下。
第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版本保持同步更新。
勘误和支持
由于笔者水平有限,而且本书中所描述的产品也在快速发展过程中,因此书中的纰漏和错误在所难免,希望读者能给予批评和指正。
笔者的联系方式为rengang66@sina.com。
读者服务
微信扫码回复:41803
? 获取本书配套代码和参考资料地址
? 加入“后端”交流群,与更多同道中人互动
? 获取【百场业界大咖直播合集】(持续更新),仅需1元