AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

5分钟带你了解微前端(内含大量代码示例)

LigaAI

大前端 qiankun

Pandas

Flychen

程序员如何提高开发效率?

万事ONES

项目管理 程序员 敏捷开发 ONES

【LeetCode】点菜展示表Java题解

Albert

算法 LeetCode 7月日更

【Flutter 专题】95 图解 Dart 单线程实现异步处理之 Task Queue

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

java算法易筋经:常见java-API使用技巧

华为云开发者联盟

Java List 数组 队列 java-API

敏捷项目管理会不会代替传统项目管理?

万事ONES

项目管理 ONES 敏捷管理

关于深度学习编译器,这些知识你需要了解一下

华为云开发者联盟

深度学习 tensorflow 编译器 算子开发 深度学习编译器

电脑误删文件如何恢复?两个方法解决你的困扰

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

阿凡达挖矿软件开发|阿凡达挖矿APP系统开发

数据结构——平衡二叉树(AVL)

若尘

数据结构 二叉树 平衡二叉树

区块链时代下,企业如何打造数据要素的“新竞争力”?

旺链科技

大数据 产业区块链

带你用VUE实现上传图片效果

华为云开发者联盟

CSS html Vue js 标签

包租婆软件开发|包租婆系统APP开发

BTCs挖矿软件开发|BTCs挖矿系统APP开发

微服务错误码设计实践

循环智能

微服务 gRPC 异常处理 错误码 接口设计

多链星球APP开发|多链星球系统软件开发

骆驼币挖矿软件开发|骆驼币挖矿APP系统开发

云图说|应用魔方AppCube:揭秘码农防脱神器

华为云开发者联盟

低代码 华为云 AppCube 云图说 应用魔方

Rust从0到1-Cargo-Workspaces

rust cargo workspaces

徒步运动系统开发|徒步运动软件APP开发

写代码是意识流?

卢卡多多

代码规范 意识 7月日更

斗宠大陆APP开发|斗宠大陆软件系统开发

Apache Flink 入门知识超全概括!

云祁

大数据 flink 7月日更

百度搜索稳定性问题分析的故事(下)

百度Geek说

百度 后端 数据 软件架构 搜索

学习哪门编程语言好,我来回答

实力程序员

Rust从0到1-Cargo-自定义命令

rust cargo 自定义命令 Custom Commands

IPFS公司有哪些?IPFS 哪家公司好?

BVD比特视频APP系统开发搭建

MUZIKA穆奇卡系统APP开发简介

QuFi挖矿APP开发|QuFi挖矿系统软件开发

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