大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

甲骨文新微服务框架 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:0013712

评论

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

3w 字长文爆肝 Java 基础面试题!太顶了!!!

苹果看辽宁体育

Java 面试 后端

区块链农产品溯源平台,为农产品质量安全护航

13828808769

区块链 区块链+

初识Nginx(一)

书旅

nginx

多功能工具箱Quicker+笔记软件flomo,竟然还能擦出这样的火花?

彭宏豪95

效率 工具软件 笔记 工具分享 4月日更

Spring IOC 特性有哪些,不会读不懂源码!

小傅哥

Java spring 小傅哥 控制反转IOC

区块链产业园区服务平台开发,搭建区块链园区运营平台

13828808769

区块链+ #区块链#

SumSwap节点预售关注度飙升而Uniswap V3版本却备受争议

币圈资讯

善盾SD币是什么?

飞亚科技

“区块链+电子处方”,医疗跟更健康

电微13828808271

火山引擎 Redis 云原生实践

火山引擎开发者社区

云原生 redis cluster

重磅功能!博睿数据APM助企业从容应对云原生架构演进

博睿数据

应用性能监控产品 Bonree Server 博睿数据 bonree

LeetCode题解:剑指 Offer 49. 丑数,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

python 调用 cmd 而不显示黑框的方法

一代咩神

Python cmd

Golang 字符串分组

一代咩神

Go 语言

EFT【阿凡提】等级规则、收益、排线方法与EFTalk十大关键点

币圈那点事

华云大咖说 | 华云数据与海量数据携手共建国产云生态

华云数据

盘点 15 个好用的 API 接口管理神器

Java小咖秀

工具 工具分享

手把手教你写一个spring IOC容器

华为云开发者联盟

spring 容器 ioc spring框架

区块链数据共享平台—追踪、溯源、可信

电微13828808271

区块链+

【LeetCode】寻找旋转排序数组中的最小值Java题解

Albert

算法 LeetCode 4月日更

语音聊天室 anyHouse 使用手册

anyRTC开发者

ios android 音视频 WebRTC RTC

空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”

华为云开发者联盟

modelarts yolo 华为云ModelArts 模型开发 华为开发者大会2021

区块链电子合同--助推合同数字化管理

13530558032

技术分享第二讲报名!

神策技术社区

大数据 活动 报名 神策

智慧平安社区建设,创建“三零平安社区”

13530558032

面试笔记(一)事务连环炮

U2647

分布式事务 事务隔离级别 事务 4月日更

马特量化交易机器人,炒币24小时不停歇

飞亚科技

年薪百万是社会认同,更是自身价值体现

博文视点Broadview

区块链农产品质量安全溯源,保证农产品品质

13530558032

Linux cat 命令

一个大红包

4月日更

团队协作中,如何写出让同事赞不绝口的代码

有道技术团队

代码规范

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