【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1)

这篇具有很好参考价值的文章主要介绍了【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提介绍

本系列文章主要讲解如何基于Quarkus技术搭建和开发"专为Kubernetes而优化的Java微服务框架"的入门和实践,你将会学习到如何搭建Quarkus微服务脚环境及脚手架,开发Quarkus的端点服务,系统和应用层级的配置介绍与Quarkus的编程模型分析,创建Quarkus的应用Uber-jar文件以及集成到Kubernetes的环境中。

  1. 学习Quarkus的云原生微服务的零基础搭建和开发实践
  2. 分析Quarkus的编程模型以及与Kubernetes环境进行集成

面向的人群

Java软件开发人员、系统架构师、微服务开发爱好者、运维部署人员等。

目前的状况

近几年由于云原生技术的普及,越来越多的用户开始使用容器来运行微服务应用,随着微服务的快速发展,spring全家桶已然成为了java框架的事实标准,包括单体应用使用的spring Framework和springboot,微服务间服务治理框架spring cloud,生态系统完善,各种组件层出不穷。

Java云原生化痛点

  • 轻量化容器技术的诞生促使JVM服务变得更加臃肿
    • 微服务架构的引入,使我们的服务颗粒度变得越来越小,轻量且能快速启动的应用能够更好的适应容器化环境。 以我们目前常规的Spring Boot应用来说,一般Restful服务的jar包大概是30M左右,如果我们将JDK以及相关应用打包成docker镜像文件大概是140M左右。
    • 常规的Go语言的可执行程序生成镜像包一般不会超过50M。如何让臃肿的Java应用瘦身使他易于容器化,成为Java应用云原生化需要解决的问题。
  • 轻量化容器技术的诞生促使JVM服务内容使用量变得过大
    • JVM对于内存的使用量变的越来越大,会促使FullGC的过多甚至OOM。
  • SpringBoot的微服务应用启动的速度越来越慢(JVM启动速度)
    • 从JVM启动到真的应用程序执行需要经历VM加载,字节码文件加载,以及JVM为了提升效率,借助JIT(just in time)及时编译技术对解释执行的字节码进行局部优化,通过编译器生成本地执行代码的过程,同时还需要加上了JVM内部垃圾回收所耗费的时间。【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构

典型的Java应用加载时间一般都是秒级起步,如果遇到比较大的应用初始花费几分钟都是正常的。 以往由于我们很少重新启动Java应用,Java应用启动时间长的问题一般很少暴露出来。

  • 但是在云原生应用场景下,随着粒度变的非常细,所以导致部署频率过于频繁
    • 我们会经常不断重启应用来实现滚动升级或者无服务应用场景。 Java应用启动时间长的问题就变成了Java应用云原生化亟待解决的问题。

Quarkus的介绍

  • Quarkus定位为GraalVM和OpenJDK HotSpot量身定制的Kubernetes Native Java框架。
  • Quarkus是红帽开源的项目,借助开源社区的力量,通过对业界广泛使用的框架进行了适配,并结合云原生应用的特点,提供了一套端到端的Java云原生应用解决方案。
  • 虽然开源时间较短,但是生态方面也已经达到可用的状态,自身包含扩展框架,已经支持像Netty、Undertow、Hibernate、JWT等框架,足以用于开发企业级应用,用户也可以基于扩展框架自行扩展。

【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构

向原生迈进

对需要长时间运行的应用来说,由于经过充分预热,热点代码会被HotSpot的探测机制准确定位捕获,并将其编译为物理硬件可直接执行的机器码,在这类应用中Java的运行效率很大程度上是取决于即时编译器所输出的代码质量。

HotSpot虚拟机中包含有两个即时编译器,分别是编译时间较短但输出代码优化程度较低的客户端编译器(简称为C1)以及编译耗时长但输出代码优化质量也更高的服务端编译器(简称为C2),通常它们会在分层编译机制下与解释器互相配合来共同构成HotSpot虚拟机的执行子系统的。

【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构

新一代即时编译器(Graal VM)

自JDK 10起,HotSpot中又加入了一个全新的即时编译器:Graal编译器,看名字就可以联想到它是来自于前一节提到的Graal VM,Graal编译器是作为C2编译器替代者的角色登场的。

C2编译器的问题

C2的历史已经非常长了,可以追溯到Cliff Click大神读博士期间的作品,这个由C++写成的编译器尽管目前依然效果拔群,但已经复杂到连Cliff Click本人都不愿意继续维护的程度。

Graal编译器本身就是由Java语言写成,实现时又刻意与C2采用了同一种名为"Sea-of-Nodes"的高级中间表示(High IR)形式,使其能够更容易借鉴C2的优点。

Graal编译器比C2编译器晚了足足二十年面世,有着极其充沛的后发优势,在保持能输出相近质量的编译代码的同时,开发效率和扩展性上都要显著优于C2编译器,这决定了C2编译器中优秀的代码优化技术可以轻易地移植到Graal编译器上,但是反过来Graal编译器中行之有效的优化在C2编译器里实现起来则异常艰难。

Graal编译器

Graal的编译效果短短几年间迅速追平了C2,甚至某些测试项中开始逐渐反超C2编译器。

Graal能够做比C2更加复杂的优化,如"部分逃逸分析"(Partial Escape Analysis),也拥有比C2更容易使用"激进预测性优化"(Aggressive Speculative Optimization)的策略,支持自定义的预测性假设等等。

【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构

Graal编译器尚且年幼,还未经过足够多的实践验证,所以仍然带着"实验状态"的标签,需要用开关参数去激活,这让笔者不禁联想起JDK 1.3时代,HotSpot虚拟机刚刚横空出世时的场景,同样也是需要用开关激活,也是作为Classic虚拟机的替代品的一段历史。

Graal编译器未来的前途可期,作为Java虚拟机执行代码的最新引擎,它的持续改进,会同时为HotSpot与Graal VM注入更快更强的驱动力。

【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构

GraalVM的总结分析

GraalVM:JVM为了提升效率,借助JIT及时编译技术对解释执行的字节码进行局部优化,通过编译器生成本地执行代码提升应用执行效率。

GraalVM是Oracle实验室开发的新一代的面向多种语言的JVM即时编译器,在性能以及多语言互操作性上有比较好的表现。与Java HotSpot VM相比,Graal借助内联,逃逸分析以及推出优化技术可以提升2至5倍的性能提升。

GraalVM提供的静态编译功能,只能针对其编译时能够看得的封闭世界进行优化,对于那些使用了反射、动态加载、以及动态代理的代码是无能为力的。

  • 为了能让我们日常的Java应用能够正常运行起来,需要我们对应用所使用到的框架和类库进行相关修改适配。
  • 由于Java代码所使用的类库很多,这部分的工作量还是相当巨大的,虽然GraalVM已经推出超过一年多的时间,但是还是很少见到大规模Java应用转移到这个平台之上。

分享资源

【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1),分布式&微服务技术体系,云原生,微服务,架构
获取以上资源请访问开源项目 点击跳转文章来源地址https://www.toymoban.com/news/detail-646270.html

到了这里,关于【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 打造个人的云技术乐园

    打造个人的云技术乐园

    作为一个技术人,我愿意把技术作为一种乐趣,也将积极进行实践。 以下是长期探索后,较为靠谱的一种个人持续学习的靠谱路径。 优点 依托开源技术,不存在技术壁垒,具有学习深度的自由性。 这是起点,也是最重要的一点; 依托云产品,免费,稳定,安全性高(包括公司

    2024年02月05日
    浏览(5)
  • 服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

    服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

    作者:王夕宁、 刘强、 华相 丽迅物流是百丽旗下专注于时尚产业、为企业提供专业物流及供应链解决方案的服务商。其产品服务主要包括城市落地配、仓配一体、干线运输及定制化解决方案。通过自研智能化物流管理平台,全面助力企业合作集约化发展。目前,丽迅物流已

    2024年02月10日
    浏览(4)
  • 企业出海打造爆款游戏,需要什么样的云服务?

    企业出海打造爆款游戏,需要什么样的云服务?

    伴随着云计算、大数据、人工智能等新兴技术的飞速发展,广大游戏开发者也迎来了整个行业的转型和重塑。 为了解决团队、成本和基础设施等方面的各种问题,给客户提供更好的游戏体验,游戏公司需要更加高效、稳定、安全、弹性的服务和解决方案。 亚马逊云科技最新

    2024年02月03日
    浏览(4)
  • 构建新一代的K8s原生Java微服务+Quarkus实战

    构建新一代的K8s原生Java微服务+Quarkus实战

    送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 送书第五期 《Kubernetes原生

    2024年02月08日
    浏览(9)
  • 某制造企业基于 KubeSphere 的云原生实践

    某制造企业基于 KubeSphere 的云原生实践

    随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题: 大量服务部署在虚拟机上,资源预估和硬件浪费较大; 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较低; 开发人员和运维人员,由于开发和部署服务环境不同,服

    2024年02月15日
    浏览(8)
  • 极光笔记|极光消息推送服务的云原生实践

    极光笔记|极光消息推送服务的云原生实践

    极光始终秉承“以开发者为中心”的战略导向 ,极光推送(JPush)是国内领先的消息推送服务。极光推送(JPush)本质上是一种软件付费应用程序,结合当前主流云厂商基础施设,逐渐演进成了云上SaaS服务。作为SaaS服务,必然要考虑云原生架构。因此,在极光推送(JPush)日

    2024年03月25日
    浏览(7)
  • 微服务架构的未来:跨边界的云原生整合

    微服务架构的未来:跨边界的云原生整合

    🎉欢迎来到架构设计专栏~微服务架构的未来:跨边界的云原生整合 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,

    2024年02月08日
    浏览(5)
  • 某物联网数智化园区行业基于 KubeSphere 的云原生实践

    某物联网数智化园区行业基于 KubeSphere 的云原生实践

    作为物联网 + 数智化园区一体化解决方案提供商,我们致力于为大中型园区、停车场提供软硬件平台,帮助园区运营者实现数字化、智能化运营。 在使用 K8s 之前我们使用传统的方式部署上线,使用 spug(一款轻量级无 Agent 的自动化运维平台) 自动化在单节点完成代码部署上

    2024年02月09日
    浏览(8)
  • K8sGPT,基于 AI 的云原生终极工具

    K8sGPT,基于 AI 的云原生终极工具

    随着人工智能和机器学习的兴起,企业和组织越来越多地寻找创新方法来利用这些技术来获得竞争优势。 该领域最强大的工具之一便是 K8sGPT,即基于 Kubernetes 的 GPT,它将 Kubernetes 编排的优势与 GPT 模型的高级自然语言处理能力结合在一起。 毫不夸张的说,K8sGPT 是一种 改变

    2024年02月07日
    浏览(8)
  • Spark内容分享(二十七):阿里云基于 Spark 的云原生数据湖分析实践

    Spark内容分享(二十七):阿里云基于 Spark 的云原生数据湖分析实践

    目录 Spark 与云原生的结合 1. 传统 Spark 集群的痛点 2. Spark 与云原生结合的优势 Spark on K8s 原理介绍 1. Spark 的集群部署模式 2. Spark on K8s 的部署架构 3. Spark on K8s 部署架构——对比 4. Spark on K8s 社区进展 5. Spark 3.3 新特性介绍 Spark on K8s 在阿里云 EMR 上的实践 1. EMR Spark on ACK 2. 充分

    2024年01月15日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包