Quarkus学习笔记1

本文最后更新于:星期一, 九月 12日 2022, 1:25 凌晨

概念

是一个全栈Kubernetes云原生Java开发框架,可以配合Java虚拟机做本地应用编译,它是专门针对容器进行优化的 Java 框架。可以促使 Java 成为 Serverless(无服务)、云原生和Kubernetes环境中的高效开发基础。

特点

  • 容器优先
  • 云原生
  • 统一命令+响应式
  • 基于java
  • 微服务优先
  • 开发乐趣

价值

  • 节省资源和成本
  • 技术优势明显
  • 全面支持云原生和serverless
  • 提高云原生开发生产力

场景

  • 构建微服务体系
  • 构建Serverless体系
  • 响应式系统
  • 物联网业务
  • 单体转微服务

为啥要学习Quarkus?

  • 技术优势
    • 比传统java应用内存消耗减少到十分之一
    • 比传统java应用启动速度加快300倍
  • 开发体验
    • 易于使用
    • 运行模式可供选择,JVM or Native
    • 整合优化配置
    • 统一命令式和响应式两种编程方式
    • 阻塞和非阻塞结合在一起
  • 扩展第三方框架
  • 社区活跃

架构

三大部分

  • JVM平台层
  • Quarkus 核心框架
  • Quarkus Extensions框架

架构图

  • JVM平台层。包括HotSpot VM和SubstrateVM
    • HotSpot VM 是 Sun JDK 和 OpenJDK 中的虚拟机,也是目前使用范围最广的 Java 虚拟机。它是JVM实现技术,与以往的实现方式相比,在性能和扩展能力上得到了很大的提升
    • SubstrateVM主要用于Java虚拟机语言的AOT编译,SubstrateVM的启动时间和内存开销非常少。SubstrateVM的轻量特性使其适合嵌入其他系统中
  • Quarkus 核心框架层。包括 Jandex、Gizmo、GraalSDK、Arc、Quarkus Core 等
    • Jandex是JBoss的库
    • Gizmo 是 Quarkus 开源的字节码生成库
    • GraalVM是以Java HotSpot虚拟机为基础,以 Graal 即时编译器为核心,以能运行多种语言为目标,包含一系列框架和技术的大集合基础平台。这是一个支持多种编程语言的执行环境,比如 JavaScript、Python、Ruby、R、C、C++、Rust 等语言,可显著地提高应用程序的性能和效率
      GraalVM 还可以通过 AOT(Ahead-Of-Time)编译成可执行文件来单独运行(通过SubstrateVM)
    • Arc(DI)是Quarkus 的依赖注入管理,其内容是io.quarkus.arc,这是CDI的一种实现
  • Quarkus Extensions框架层。包括RESTEasy、Hibernate ORM、Netty、Eclipse Vert.x、Eclipse MicroProfile、Apache Camel等外部扩展组件
    • Eclipse Vert 扩展组件
      该组件是 Quarkus 的网络基础核心框架扩展组件。但由于该扩展组件位于底层,故开发者一般不会察觉
    • RESTEasy 扩展组件
      RESTEasy 框架是 JBoss 的一个开源项目,提供了各种框架来帮助构建RESTful Web Services和RESTful Java应用程序框架
    • Hibernate扩展组件
      这是对关系型数据库进行处理的ORM框架集成,遵循JPA规范
    • Eclipse MicroProfile扩展组件
      会在响应式和消息流中使用该扩展组件
    • Elytron 扩展组件
      主要用于安全类的扩展,包括 elytron-security-jdbc、elytron-security-ldap、elytron-security-oauth2等
    • Keycloak 扩展组件
      这是应用 Keycloak 开源认证授权服务器的扩展组件,包括 quarkus-keycloak-authorization、quarkus-oidc等
    • SmallRye 扩展组件
      这是响应式客户端的扩展组件,SmallRye是一个响应式编程库
    • Narayana 扩展组件
      这是处理数据库事务的扩展组件
    • Kafka 扩展组件
      这是应用Kafka开源消息流平台的扩展组件
    • Artemis 扩展组件
      这是应用Artemis开源消息服务器中间件的扩展组件
    • Agroal 扩展组件
      这是数据库连接池的扩展组件
    • Redis 扩展组件
      这是应用Redis开源缓存服务器的扩展组件
    • Spring 扩展组件
      这是应用Spring框架的扩展组件
    • Kubernetes 扩展组件
      这是应用Kubernetes服务器的扩展组件
    • JSON 集成扩展
      组件有Jackson、JAXB等

总结

基础

基础

学习目的

学习目的

架构

架构


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!