NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

Orika JavaBean映射工具使用

京东科技开发者

JAVA开发 京东云 JavaBean 企业号 3 月 PK 榜

Matlab常用图像处理命令108例(三)

timerring

图像处理

如何设计一个优秀的 Go Web 项目目录结构

江湖十年

Go 设计 后端 项目 Web Service

国内AGV调度系统到底是什么水平?

申扬科技

调度系统 AGV

FL Studio21中文语言版水果编曲工具

茶色酒

FL Studio21

阿里云消息队列 Kafka 生态集成的实践与探索

阿里巴巴中间件

kafka 阿里云 云原生 消息队列

巧用GenericObjectPool创建自定义对象池

京东科技开发者

京东云 API 编排 对象池 京东物流 企业号 3 月 PK 榜

爆款歌曲的养成背后,是哪些因素在推动?

HIFIVE音加加

娱乐 音乐 娱乐社交 热门 华语音乐

AutoCompleteTextView的基本使用

智趣匠

android 控件 AutoCompleteTextView

强强联合:Neovim+ChatGPT | 社区征文

SkyFire

ChatGPT neovim

前端学习路径

阡陌r

订单超时怎么处理?我们用这种方案

阿里巴巴中间件

阿里云 云原生

工作一年,我重新理解了《重构》

阿里巴巴中间件

阿里云 云原生 重构

如何有效的进行用例评审

京东科技开发者

用例 京东云 代码评审 企业号 3 月 PK 榜

从混乱到完备:我的研发流程之路

SkyFire

研发流程

极氪汽车 APP 系统云原生架构转型实践

阿里巴巴中间件

阿里云 云原生

Portraiture2023人像免费磨皮插件

茶色酒

Portraiture2023

经验分享:高德地图如何短时间快速完成春节出行备战工作?

阿里巴巴中间件

阿里云 云原生 函数计算

前端学习

阡陌r

全面图像编辑:ON1 Photo RAW 2023激活版

真大的脸盆

Mac 图像处理 Mac 软件 图像编辑 raw

初识大热的ChatGPT的几点思考|社区征文

穿过生命散发芬芳

ChatGPT

async 与 Thread 的错误结合

newbe36524

C#

社交软件的月活利器:从UGC到互娱

HIFIVE音加加

互联网 软件 社交 科技 社交媒体

架构师日记-软件高可用实践那些事儿

京东科技开发者

高可用 软件架构 京东云 企业号 3 月 PK 榜

从零打造你的前端开发脚手架

南城FE

前端 js 前端工程化 脚手架

这款 IDEA 插件太好用了,堪称日志管理神器!

程序知音

架构训练营-模块9秒杀系统

张Dave

JavaScript异步编程的深入理解,使用回调函数实现异步编程

兴科Sinco

JavaScript 前端 前端开发 异步编程

在前端领域摸爬滚打7年,我终于掌握了这些沉淀技巧

小鑫同学

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

阿里巴巴中间件

阿里云 云原生

浅谈kafka

京东科技开发者

数据库 中间件 京东云 kafka manager 企业号 3 月 PK 榜

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