2023年全新java架构技术框架Quarkus实战神仙文档

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。

前言

Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。

云原生的星星之火,自开源社区的Kubernetes爆红之后,变成燎原之势,随后云原生相关的技术如雨后春笋般涌现。

本文采用十分简单的问题-解决方案-讨论的结构,细致透彻地描绘了Quarkus的技术点。通过本文,用户可以借助Quarkus提高Java相关的研发效率,从而在快节奏的微服务构建和基于云的应用程序开发领域立于不败之地。

目录

主要内容

全文总共包含16章的内容,由浅入深的解析Quarkus,Quarkus是一个相对较新的框架,又处于新的领域(原生Java和GraalVM)。我们想深入研究一些互联网上找不到的例子和实践。本文中没有需要理解的大型应用,所有的例子都是自包含的,可以随时使用。我们希望本文能够作为Quarkus开发的参考!

第1章Quarkus概述;Kubernetes已成为用于部署企业应用的事实平台。随着企业应用容器化和加速向Kubernetes平台迁移,原有的基于Java的应用程序在编码、部署和维护方式等方面发生了很大变化。如果不对Java应用程序做任何变更就直接容器化并运行,那么会遇到很多麻烦。由容器组成的Pod(Kubernetes中的一个术语)是Kubernetes中的基本调度单元,因此,为了避免入坑,深入理解如何正确地容器化Java应用程序是非常重要的。

Quarkus是一个集成了Kubernetes的开源云原生框架,基于ApacheLicense 2.0发布,用于创建适配GraalVM和OpenJDK HotSpot的Kubernetes原生应用,基于Hibernate、Eclipse MicroProfile、Kubernetes、Apache Camel和Eclipse Vert.x等流行库和技术构建。

Quarkus的优点包括可以与Docker和Kubernetes轻松集成,启动速度快,驻留集大小(RSS)内存消耗低,可提高开发者的生产力。本章概述Quarkus是什么,解决什么问题,如何与Kubernetes集成,为什么它会得到开发人员的喜爱,以及最值得关注的特性。

第2章搭建脚手架;在本章中,你将学习如何创建Quarkus的项目结构。Quarkus自带了一些不同的方法来搭建项目的脚手架。

本章涵盖以下主题:

  • ·从Maven到VSCode IDE,用不同的方式来构建项目的脚手架
  • ·通过实时重载改善开发者的体验
  • ·使用Quarkus提供静态资源

第3章开发RESTful服务;Quarkus集成了RESTEasy,这是一种用于定义REST API的JAX-RS实现。在本章中,你将学习如何在Quarkus中开发RESTful Web服务。本章涵盖以下主题:

  • ·如何使用JAX-RS来创建CRUD服务
  • ·如何启用CORS向其他域请求资源
  • ·如何实现响应式路由
  • ·如何实现过滤器来操作请求和响应

第4章配置;本章涵盖以下主题:

  • ·如何配置一个Quarkus服务
  • ·如何在服务中注入配置参数
  • ·如何在不同的环境中使用配置值
  • ·如何正确配置日志系统
  • ·如何创建自定义的配置系统

第5章编程模型;在本章中,你将会了解到与Quarkus编程模型相关的话题。Quarkus所遵循的编程模型是独特的,与其他框架不同的是,Quarkus允许你混合使用CDI命令式模型和SmallRye Mutiny响应式模型。第15章专门介绍了使用响应式模型的方法。有时,你可能会发现自己需要这两种模型,所以知道如何使用每种模型是件好事。

本章涵盖以下主题:

  • ·如何对JSON和XML文档进行编组(marshal)和解组(unmarshal)
  • ·如何校验请求参数
  • ·如何使用CDI规范作为上下文和依赖注入的解决方案
  • ·如何为Quarkus服务编写测试

第6章打包Quarkus应用程序;在本章中,你将学习如何将Quarkus应用程序打包为原生可执行文件或JVM可运行的文件,从而使其能够被分发和部署。如今,容器已成为应用程序发布的标准方式,所以你需要知道如何将Quarkus应用程序容器化。

本章涵盖以下主题:

  • ·如何将Quarkus应用程序打包为JVM可运行的文件
  • ·如何将Quarkus应用程序打包为原生可执行文件
  • ·如何将Quarkus应用程序容器化

第7章持久化;你应该已经很熟悉。Quarkus所使用的持久化存储策略了,事务、数据源、Java Persistence API(JPA)等都是已经存在多年的标准了。

Quarkus使用了这些标准,并且在某些情况下,在它们的基础上做了扩展,使持久化存储的工作更加容易。在本章中,你将学习如何在Quarkus中使用持久化存储。本章涵盖了传统的关系型数据库管理系统(RDBMS)和NoSQL数据库。

如果你使用的是传统的RDBMS或MongoDB,那么Quarkus还提供了一些额外的功能,比如Panache,它提供了一种entity或record类型的API。Panache实现了许多标准的JPA语法,使你的应用程序更容易阅读和维护,可以帮助你提高工作效率。

本章涵盖以下主题:

  • ·配置数据源
  • ·处理事务
  • ·管理数据库模式迁移
  • ·使用Panache API
  • ·与NoSQL数据库交互

第8章容错;在本章中,你将了解为什么需要容忍微服务架构中的故障。微服务架构严重依赖网络来运行,而网络作为一个关键的部分,并不总是运行良好,会出现网络故障、网线饱和、拓扑结构变化、下游服务更新等各种问题,因此微服务架构需要具备容错能力。

出于这个原因,构建对任何类型的问题都具有容错能力的服务,并提供优雅的解决方案,而不仅仅是传播错误,这一点非常重要。

本章涵盖以下主题:

  • ·实现不同的弹性策略
  • ·提供一些后备逻辑,以防出现错误
  • ·正确配置容错参数

第9章可观察性;在本章中,你将了解可观察性,以及为什么它在微服务架构中很重要。可观察性通过观察一些参数(如错误代码、性能或任何一种业务指标)来反映系统是如何表现的。Quarkus集成了几种用于可观测性的技术。

本章涵盖以下主题:

  • ·定义健康检查
  • ·为监测系统提供衡量标准
  • ·配置分布式跟踪,以便在网状结构中了解请求的概况

第10章与Kubernetes集成;到目前为止,我们一直在学习如何在裸机上开发和运行Quarkus应用,但是在Kubernetes集群中运行时Quarkus才能真正闪光。

在本章中,你将了解如何将Quarkus和Kubernetes集成以及用于在Kubernetes中开发和部署Quarkus服务的扩展。

Kubernetes成为部署应用程序的事实平台。为此,充分了解Kubernetes以及如何在其上正确开发和部署应用程序非常重要。

本章涵盖以下主题:

  • ·构建和推送容器镜像
  • ·生成Kubernetes资源
  • ·部署一个Quarkus服务
  • ·开发一个Kubernetes Operator
  • ·在Knative中部署一个服务

第11章认证与授权;在本章中,你将会了解到应用程序安全的支柱——授权和认证,如何在Quarkus应用程序中工作。本章涵盖以下主题:

  • ·文件支持的认证和授权方案
  • ·数据库支持的认证和授权方案
  • ·外部服务支持的认证和授权方案

第12章应用程序密钥管理;每一个应用程序都有需要保密的信息,这些信息可能包括数据库凭证、外部服务认证,甚至某些资源的位置。所有这些都统称为密钥。应用程序需要一个安全的地方来存储这些密钥,无论是在应用程序启动时还是在空闲时。在本章中,我们将讨论使用Kubernetes和Vault进行密钥管理。

第13章Quarkus REST客户端;使用任何基于服务的架构都不可避免地需要你与外部服务进行通信。这些服务可能是内部服务(你控制服务的生命周期,它们通常部署在同一个集群中)也可能是外部服务(第三方服务)。

如果这些服务是以RESTful Web服务的形式实现的,那么你需要一个客户端来与这些服务进行交互。Quarkus提供了两种方式来实现这一点;JAX-RS Web Client,这是标准的Java EE与RESTful服务通信的方式;MicroProfile REST Client,这是与RESTful服务通信的新方式。

本章涵盖以下主题:

  • ·使用JAX-RS Web客户端与其他RESTful服务进行通信
  • ·使用MicroProfile Rest Client与其他RESTful服务进行通信
  • ·确保RESTful服务之间的通信

第14章使用Spring API开发Quarkus应用程序;到目前为止,你已经看到每个例子都是使用CDI注解开发的,如@Inject、@Produces、JAX-RS注解或Java EE Security注解。但是Quarkus也为一些最常用的Spring库提供了一个兼容层,以便你可以使用所有关于Spring框架的知识来开发Quarkus应用程序。

本章涵盖以下主题:

  • ·Spring依赖注入
  • ·Spring REST Web
  • ·Spring Data JPA
  • ·Spring Security
  • ·Spring Boot配置

第15章使用响应式编程模型;我们都熟悉几十年来在企业软件开发中占主导地位的客户端-服务器(CS)架构。然而,我们最近在架构风格上发生了转变。除了标准的CS方法,还有消息驱动的应用程序、微服务、响应式应用程序,甚至无服务器应用程序!所有这些类型的应用程序都可以使用Quarkus创建。在下面的内容中,你将学习关于响应式编程模型、消息总线和流的知识。

第16章Quarkus的附加功能;本章包含了一些不适合放在其他章节中介绍的Quarkus功能。当然,这并不意味着它们没有用!本章涵盖以下主题:

  • ·Quarkus的模板解决方案:Qute
  • ·OpenAPI集成
  • ·发送电子邮件
  • ·调度功能
  • ·应用程序数据缓存

需要这份全新java架构技术框架【Quarkus实战:专为Kubernetes而优化的Java解决方案】神仙文档的小伙伴,可以点击此处来获取就可以了!

本文目标读者

显然,我们希望每个人都能阅读本文!不过,我们的目标读者需要:

  • 熟悉Java和应用程序开发。
  • 了解传统的软件开发。
  • 经常将服务部署到机器集群或云中。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6天前
|
运维 持续交付 API
从零构建微服务架构:一次深度技术探索之旅####
【10月更文挑战第28天】 本文记录了作者在从零开始构建微服务架构过程中的深刻技术感悟,通过实战案例详细剖析了微服务设计、开发、部署及运维中的关键要点与挑战。文章首先概述了微服务架构的核心理念及其对企业IT架构转型的重要性,随后深入探讨了服务拆分策略、API网关选型、服务间通信协议选择、容器化部署(Docker+Kubernetes)、以及持续集成/持续部署(CI/CD)流程的设计与优化。最后,分享了在高并发场景下的性能调优经验与故障排查心得,旨在为读者提供一套可借鉴的微服务架构实施路径。 ####
40 3
|
1天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
3天前
|
存储 分布式计算 分布式数据库
风险数据集市整体架构及技术实现
【11月更文挑战第11天】在当今大数据时代,风险数据集市作为金融机构的核心基础设施之一,扮演着至关重要的角色。它不仅为银行、保险等金融机构提供了全面、准确的风险数据支持,还帮助这些机构实现了风险管理的精细化和智能化。本文将深入探讨一种基于大数据Lambda架构设计的风险数据集市整体架构,并详细介绍其底层实现原理及实现方式。
14 3
|
4天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
12 1
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
7天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
43 4
|
11天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
21 7
|
9天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
23 3
|
9天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
7 2
|
11天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
20 4