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

简介: 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集成
  • ·发送电子邮件
  • ·调度功能
  • ·应用程序数据缓存

网络异常,图片无法展示
|

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

本文目标读者

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

  • 熟悉Java和应用程序开发。
  • 了解传统的软件开发。
  • 经常将服务部署到机器集群或云中。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
消息中间件 大数据 关系型数据库
RocketMQ实战—3.基于RocketMQ升级订单系统架构
本文主要介绍了基于MQ实现订单系统核心流程的异步化改造、基于MQ实现订单系统和第三方系统的解耦、基于MQ实现将订单数据同步给大数据团队、秒杀系统的技术难点以及秒杀商详页的架构设计和基于MQ实现秒杀系统的异步化架构。
304 64
RocketMQ实战—3.基于RocketMQ升级订单系统架构
|
1月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
100 5
|
10天前
|
Java API 微服务
2025 年 Java 核心技术全面升级与实战应用详解
这份Java校招实操内容结合了最新技术趋势,涵盖核心技术、微服务架构、响应式编程、DevOps及前沿技术等六大模块。从函数式编程到Spring Cloud微服务,再到容器化与Kubernetes部署,帮助你掌握企业级开发技能。同时,提供AI集成、区块链实践和面试技巧,包括高频算法题与系统设计案例。通过学习这些内容,可应对90%以上的Java校招技术面试,并快速上手实际项目开发。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
93 41
|
2月前
|
人工智能 Cloud Native Serverless
从理论到落地:MCP 实战解锁 AI 应用架构新范式
本文旨在从 MCP 的技术原理、降低 MCP Server 构建复杂度、提升 Server 运行稳定性等方面出发,分享我们的一些实践心得。
1361 100
|
11天前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
251 6
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
2月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
271 70
|
29天前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
12天前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
66 5
|
12天前
|
存储 人工智能 前端开发
Google揭秘Agent架构三大核心:工具、模型与编排层实战指南
本文为Google发布的Agent白皮书全文翻译。本文揭示了智能体如何突破传统AI边界,通过模型、工具与编排层的三位一体架构,实现自主推理与现实交互。它不仅详解了ReAct、思维树等认知框架的运作逻辑,更通过航班预订、旅行规划等案例,展示了智能体如何调用Extensions、Functions和Data Stores,将抽象指令转化为真实世界操作。文中提出的“智能体链式组合”概念,预示了未来多智能体协作解决复杂问题的革命性潜力——这不仅是技术升级,更是AI赋能产业的范式颠覆。
461 1