QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

甲骨文新微服务框架 Helidon Níma:使用虚拟线程实现高性能

作者:A N M Bazlur Rahman

  • 2022-09-25
    北京
  • 本文字数:1032 字

    阅读完需:约 3 分钟

甲骨文新微服务框架Helidon Níma:使用虚拟线程实现高性能

Helidon伞项目下,甲骨文推出了基于虚拟线程(JEP 425)的新微服务框架 Helidon Níma。它是完全从头构建的,以实现易于使用的编程模型,并具有出色的性能。该技术的预览版已经伴随 Helidon 4.0.0-ALPHA1 版本发布,对最新 Java 技术感兴趣人可以对此进行评估。但是,它尚未达到生产环境就绪状态。


开发人员可以通过Helidon MPHelidon SE使用常规的 Helidon 框架达到一定的吞吐量,但是如果应用需要更高的性能,他们唯一能做的就是采用基于反应式的服务。但值得一提的是,编写、维护和调试基于反应式的服务更具挑战性。


Helidon Níma 使用虚拟线程来解决这个问题,因为基于虚拟线程,阻塞的成本是很低的,所以我们可以创建数以百万计的虚拟线程。因此,这提供了一个恒定的、低开销的、高并发的服务器,同时能够保持阻塞式的线程模型。开发人员通过最小的支撑功能就可以编写简单、可调试和易维护的代码。请考虑如下的样例:

阻塞式代码反应式代码
  1. private void one(ServerRequest req, ServerResponse res) {
  2. String response = callRemote(client());
  3. res.send(response);
  4. }
 
  1. private void one(ServerRequest req, ServerResponse res) {
  2. Single<String> response = client.get()
  3. .request(String.class);
  4. response.forSingle(res::send)
  5. .exceptionally(res::send);
  6. }


阻塞式代码和反应式代码都能完成相同的目标,但是,反应式代码对认知的要求更高,学习曲线更陡峭,并且难以维护。正如甲骨文的架构师Tomas Langer在最初的博客文章中所说的那样,在较为复杂的用例中,这一点会更明显。


按照 Langer 的说法,Heldion Níma 主要的关注点是性能,它也的确产生了一定的效果,如下图所示。



这个 Alpha 版本支持如下的协议:

  • 支持 pipelining 的HTTP/1.1:客户端和服务器端。

  • HTTP/2服务器端(原型状态,包含已知的问题)

  • gRPC服务器端(原型状态,包含已知的问题)

  • WebSocket服务器端(原型状态)


除此之外,它还支持如下的特性:

  • 跟踪:使用现有的 Helidon 跟踪实现,比如JaegerZipkin

  • 静态内容:来自类路径或文件系统

  • 跨域资源共享(CORS)

  • 访问日志

  • 可观测性端点(健康状态、应用信息、配置)

  • 容错(舱壁、断路器、重试和超时特性)

  • HTTP/1.1 客户端

  • 测试


在这些特性之上,它还使用了新的 Java 语言特性,如密封类(sealed classes)和增强的switch表达式


Helidon Níma 是一个完全开源的框架,是 Helidon 代码库的一部分。尽管 Helidon 项目是基于Netty的,但是甲骨文公司的软件开发人员Dmitry Aleksandrov在他的博客文章中提到:


Helidon Níma 网络服务器计划在 Helidon 生态系统中取代 Netty。它也可以被其他框架以嵌入式 Web 服务器组件的形式使用。


希望评估 Helidion Níma 的开发人员可以参阅 Tomas Langer 的初始博客文章和托管在GitHub仓库的源代码。


原文链接:

Introducing Helidon Níma Using Virtual Threads to Achieve Simplicity and High Performance


相关阅读:

JDK 19 最新动态和 JDK 20 新特性预测

2022-09-25 08:0012809

评论

发布
暂无评论
发现更多内容

祝贺!openGauss社区技术委员会主席李国良当选2023 IEEE FELLOW

daydayup

openGauss+Wasm:构建安全高效的UDF执行引擎

daydayup

关于远程直接内存访问技术 RDMA 的高性能架构设计介绍 | 龙蜥技术

OpenAnolis小助手

开源 数据 cpu 龙蜥大讲堂 RDMA

无门槛访问AI智能对话+最强AI绘画的方式

大数据技术指南

AI绘画 ChatGPT

亚马逊云科技如何助力中国企业建立“出海”的云端母港?

Lily

什么是MES,什么是WMS,MES与WMS有什么区别?

优秀

MES系统 WMS系统

码力全开!请查收HDC.Together 2023亮点日程

HarmonyOS开发者

HarmonyOS

NFTScan | 07.24~07.30 NFT 市场热点汇总

NFT Research

NFT\

基于P2P技术的远距离传输大型文件解决方案

镭速

p2p 文件传输 远距离传输大型文件

探索运营商渠道佣金数字化运营

鲸品堂

数字化转型 企业 运营商 电信运营商 企业号 7 月 PK 榜

ACM图灵大会开幕,王海峰解读文心大模型3.5最新进展

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

杭州快盈施佳:基于支付宝小程序云的文旅数智新实践

TRaaS

小程序

低代码平台技术分享官丨日志实时隔离,助力高效发布

inBuilder低代码平台

低代码 低代码平台

从0到1!得物如何打造通用大模型训练和推理平台

得物技术

算法 大模型 ChatGPT LLM

提升数据质量的四大有效方式

树上有只程序猿

数字化 数据质量

【我和openGauss的故事】openGauss的WDR报告解读

daydayup

远距离传输大型文件:如何应对不同地区的网络环境和带宽约束

镭速

活动回顾|阿里云 Serverless 技术实战与创新成都站回放&PPT下载

Serverless Devs

负载均衡 Serverless 云原生 弹性计算 FC

龙蜥社区用户案例征集开始啦,欢迎投稿!

OpenAnolis小助手

数据 操作系统 征稿 案例 龙蜥社区

最全的3D动画软件介绍来了!良心总结9款3D动画制作必备软件

龙智—DevSecOps解决方案

Unity 虚幻引擎 maya 3D动画软件 Houdini

一文帮你看懂ChatGPT

永利app贵宾会网址

人工智能 AI 科技 ChatGPT

【我和openGauss的故事】openGauss易知易会的几个实用特性

daydayup

低代码平台实际解决了哪些问题?

互联网工科生

软件开发 低代码 低代码平台 JNFP

⻜桨⼤模型推理部署⾼性能优化

Baidu AICLOUD

大模型推理 AI 框架

SQL 执行计划管理(SPM)

KaiwuDB

KaiwuDB SPM

低代码在数智化时代中的应用

力软低代码开发平台

MegEngine Python 层模块串讲(下)

MegEngineBot

深度学习 开源

一款介于无代码和低代码之间的数据可视化平台

高端章鱼哥

低代码 应用开发 JNPF 数据可视化平台

程序员在今年这种行情下如何快速找到合适的工作?

程序员小毕

程序员 后端 面试题 架构师 java面试

已确认!将数据安全管理纳入操作风险管理范畴

原点安全

甲骨文新微服务框架Helidon Níma:使用虚拟线程实现高性能_语言 & 开发_InfoQ精选文章