前言

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

需要这份2022年全新java架构技术框架【Quarkus实战:专为Kubernetes而优化的Java解决方案】神仙文档的小伙伴,可以转发此文关注小编,私信小编【444】来获取!

本文目标读者

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

  • 熟悉Java和应用程序开发。
  • 了解传统的软件开发。
  • 经常将服务部署到机器集群或云中。

全新java架构技术框架Quarkus实战神仙文档相关推荐

  1. java t9 字母组合_太赞了!美团T9终于整理出Java架构之完美设计实战开源文档

    软件架构师是每个程序员职业生涯中内功心法修炼的终极目标.要达到这个目标需要具备"十八般武艺,八十种技巧",本书正是继<Java代码与架构之完美优化--实战经典>< ...

  2. RocketMQ msgId与offsetMsgId释疑(实战篇),腾讯技术官发布的“神仙文档”火爆网络

    System.out.println("-------------------分割线-----------------"); System.out.printf("%s ...

  3. Tomcat服务器搭建及测试教程(1),腾讯技术官发布的“神仙文档”火爆网络

    Tomcat是一个免费开源的servlet容器,我们可以在官网获取下载: https://tomcat.apache.org/download-70.cgi 在首页中我们可以根据自己电脑和JDK的不同 ...

  4. java开发社交网站_(转)强烈推荐:著名社交网站LinkedIn的Java架构技术

    强烈推荐:著名社交网站LinkedIn的Java架构技术 在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn 网站的架构技术的演讲,目前这两个演讲的P ...

  5. 最新ChatGPT GPT-4 NLU实战之文档问答类ChatPDF功能(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(五)

    目录 前言 最新ChatGPT GPT-4 自然语言理解NLU实战之文档问答类ChatPDF功能 引言 ChatGPT 接口 Qdrant数据库Embedding存储 核心代码 测试 其它NLU应用及 ...

  6. 都在强力进阶学习 springboot 实战派文档

    不仅如此,本文还对比讲解了多种同类技术的使用和区别,读者可以根据自己的喜好进行选择. 开发模式:本文讲解了历史悠久,但现在依然被广泛使用的分层应用开发模式 MVC(ModelView Controll ...

  7. java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

  8. java毕业设计企业门户网站源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计企业门户网站源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计企业门户网站源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

  9. java毕业设计旅游系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计旅游系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计旅游系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目架构:B ...

最新文章

  1. P1515 旅行(简单搜索)
  2. Google 开源 AdaNet:快速灵活的轻量级 AutoML 框架
  3. Laravel-数据库操作笔记
  4. spoj 8222 Substrings (后缀自动机)
  5. python访问数据库日志文件_python利用inotify实现把nginx日志实时写入数据库
  6. WebDriver中的元素状态检测表
  7. facenet 中心损失函数(center loss)详解(代码分析)含tf.gather() 和 tf.scatter_sub()函数
  8. 配置php错误导入文件,php 导入文件(逻辑处理)
  9. koa mysql 按钮级权限_Vue要做权限管理该怎么做?控制到按钮级别的权限怎么做?...
  10. python 编程实例
  11. 360浏览器的html在哪里,360浏览器收藏夹路径在哪里
  12. 实验三linux进程并发程序设计,实验三Linux进程并发程序设计.doc
  13. 镁光闪存颗粒对照表_内存颗粒型号识别
  14. JsonEquals - JSON 差异比较工具的使用
  15. Android自定义控件开发入门与实战(7)SVG动画,android底层架构
  16. 《最强大脑》新科世界脑王:其实我是教小学数学的
  17. 广西新业态增收 国稻种芯·中国水稻节:梧州岑溪订单种植水稻
  18. 《Filter Pruning using Hierarchical Group Sparse》ICPR2020论文详解
  19. Python--变量
  20. vue通过URL传递参数

热门文章

  1. 1_图片相似性度量指标(20181218)
  2. 计算机毕业设计springboot轰趴馆管理
  3. Dart vs Swift
  4. mybatis注解记录
  5. 详解IC卡、ID卡、M1卡、射频卡四种智能卡的区别
  6. 写作小课堂:如何写好工作邮件?
  7. Mac上抓住每一次灵感迸发的App
  8. 关于Symantec(赛门铁克)认证服务
  9. 微信小程序 api+前端实现生成分享海报
  10. 设置service的nodeport以后外部无法访问对应的端口的问题