当前位置: 首页 > news >正文

Java:Kubernetes原生Java与Quarkus

  组织采用Kubernetes更快、更具成本效益地交付商业价值。为什么?因为Kubernetes使艰难的任务变得更容易:当负载增加时,它会自动水平扩展应用程序,并执行滚动升级。

  但是这种方法与Java的三层架构的传统模型相冲突,这种模型具有大的堆大小、垂直伸缩和长时间运行的进程。

  历史上,Java通过分配和保持最大的系统资源,随着时间的推移按需适应负载条件,实现了卓越的性能。

  Quarkus本质上是Kubernetes本机的,从Java字节码和本机可执行文件中获得了运行时效率。此外,Quarkus支持Kubernetes作为一流的平台,提供以下扩展和功能:

  l 配置。Quarkus可以利用Kubernetes API来访问存储在ConfigMap或Secret中的配置,而无需将其挂载到pod的文件系统中。

  l 应用健康。使用MicroProfile Health向Kubernetes health探测器显示应用程序的健康状况,以便进行潜在的流量重定向和pod重启。

  l Kubernetes客户。围绕Kubernetes对象包装了一个Java对象模型,并为操纵这些对象提供了一个Java API。对java感兴趣的同学可以参加java培训,你可以学会更多的java新技术。

  l 服务发现和负载平衡。应用程序可以利用Kubernetes集群中的DNS,通过Kubernetes循环负载平衡进行服务发现。或者他们可以使用Quarkus的Stork客户端负载平衡框架来实现更复杂或定制的负载平衡算法。

  l 简化的Kubernetes和Knative配置和部署。Quarkus生成部署到Kubernetes或Knative所需的YAML,后者向Kubernetes添加无服务器功能。可以使用Quarkus属性自定义YAML生成。

  l 可观察性。使用MicroProfile或MicroProfile指标深入了解正在运行的应用程序,并使用MicroProfile OpenTracing或OpenTelemetry跨多个服务跟踪跟踪请求。

  l 作为服务的功能(FaaS)。Quarkus提供Funqy作为开发可移植函数的API,这些函数可以在Knative和Knative events上运行,也可以在FaaS环境中运行,比如AWS Lambda、Azure函数和Google Cloud函数。

  l 远程开发。Quarkus支持远程即时编码,无需额外工具。您可以对在Kubernetes Pod(或其他远程环境)中运行的应用程序进行实时编码——不需要特殊的IDE工具!

  

 

  结论

  Kubernetes 原生 Java是关于重新定义我们如何使用Java来拥抱Kubernetes模型,其中减少的启动时间和内存使用降低了成本,提高了共享环境中的资源效率。Quarkus通过将大量启动处理转移到构建时间来实现这一点。其结果是一个高效的运行时,可以大大降低云计算成本,显著提高应用程序的资源效率。此外,组织可以交付直接影响业务的新功能,而不会超出其当前的云计算预算。

  为了最大限度地发挥原生编译的优势,Quarkus与GraalVM紧密集成。应用程序被定制为最好地利用提前编译的优化。Quarkus使用GraalVM的扩展模型来增强这个过程,并避免额外的配置。

  Quarkus为开发人员带来了乐趣,让开发人员能够通过实时编码、开发服务和持续测试等特性来解决业务问题。使用Quarkus进行开发是如此高效,以至于Java开发人员可以尝试多种解决问题的方法,并选择最具业务影响力的方法。

  Quarkus也认为Kubernetes是一个一流的平台。它提供了一组API框架,允许应用程序充分利用Kubernetes提供的功能。这使Kubernetes的投资最大化,并通过平台集成加快了上市时间。越来越多的人选择参加java培训来开启自己Java 开发人员的职业人生,这是一个快速有效的学习方式,可以在短时间内掌握java所需的技能,更好地找到工作。

相关文章:

  • 15天深度复习JavaWeb的详细笔记(十二)——综合案例
  • AD生成Gerber及CAM350检查
  • Python数据分析:折线图和散点图的绘制
  • 【Vue2基础】Vue项目搭建及组件使用
  • 艾美捷衣霉素Tunicamycin 化学性质及引用文献
  • 【小样本分割】Self-Support Few-Shot Semantic Segmentation
  • ch01变量和数据结构
  • 五分钟学会一门编程语言?
  • 【Python数据分析 - 11】:DataFrame索引操作(pandas篇)
  • [Vue]数据代理
  • VSCODE 系列(二)常用插件
  • 【zabbix】解决zabbix在web页面显示中文乱码问题
  • ESP32/ESP8266自动下载电路波形,ESP32/ESP8266不能UART流控自动下载的解决方法
  • c语言分层理解(枚举和联合体)
  • 网站死链抓取sitemap递交工具
  • ➹使用webpack配置多页面应用(MPA)
  • 30秒的PHP代码片段(1)数组 - Array
  • css属性的继承、初识值、计算值、当前值、应用值
  • iOS | NSProxy
  • Java比较器对数组,集合排序
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • React Native移动开发实战-3-实现页面间的数据传递
  • 阿里云Kubernetes容器服务上体验Knative
  • 程序员该如何有效的找工作?
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 基于HAProxy的高性能缓存服务器nuster
  • 聚簇索引和非聚簇索引
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 译自由幺半群
  • FaaS 的简单实践
  • puppet连载22:define用法
  • ​ArcGIS Pro 如何批量删除字段
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (NSDate) 时间 (time )比较
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (论文阅读11/100)Fast R-CNN
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (学习日记)2024.01.09
  • (一)基于IDEA的JAVA基础1
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net环境下的缓存技术介绍
  • .net连接MySQL的方法
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET项目中存在多个web.config文件时的加载顺序
  • @RequestBody与@ResponseBody的使用
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [1] 平面(Plane)图形的生成算法