甲骨文新微服务框架 Helidon Níma:使用虚拟线程实现高性能
在 Helidon伞项目下 ,甲骨文 推出 了基于虚拟线程( JEP 425 )的新微服务框架 Helidon Níma。它是完全从头构建的,以实现易于使用的编程模型,并具有出色的性能。该技术的预览版已经伴随 Helidon 4.0.0-ALPHA1 版本发布,对最新 Java 技术感兴趣人可以对此进行评估。但是,它尚未达到生产环境就绪状态。
开发人员可以通过 Helidon MP 或 Helidon SE 使用常规的 Helidon 框架达到一定的吞吐量,但是如果应用需要更高的性能,他们唯一能做的就是采用基于反应式的服务。但值得一提的是,编写、维护和调试基于反应式的服务更具挑战性。
Helidon Níma 使用虚拟线程来解决这个问题,因为基于虚拟线程,阻塞的成本是很低的,所以我们可以创建数以百万计的虚拟线程。因此,这提供了一个恒定的、低开销的、高并发的服务器,同时能够保持阻塞式的线程模型。开发人员通过最小的支撑功能就可以编写简单、可调试和易维护的代码。请考虑如下的样例:
阻塞式代码 | 反应式代码 |
private void one(ServerRequest req, ServerResponse res) { String response = callRemote(client()); res.send(response); } |
private void one(ServerRequest req, ServerResponse res) { Single<String> response = client.get() .request(String.class); response.forSingle(res::send) .exceptionally(res::send); } |
阻塞式代码和反应式代码都能完成相同的目标,但是,反应式代码对认知的要求更高,学习曲线更陡峭,并且难以维护。正如甲骨文的架构师 Tomas Langer 在最初的 博客文章 中所说的那样,在较为复杂的用例中,这一点会更明显。
按照 Langer 的说法,Heldion Níma 主要的关注点是性能,它也的确产生了一定的效果,如下图所示。
这个 Alpha 版本支持如下的协议:
-
支持 pipelining 的 HTTP/1.1 :客户端和服务器端。
-
HTTP/2 服务器端(原型状态,包含已知的问题)
-
gRPC 服务器端(原型状态,包含已知的问题)
-
WebSocket 服务器端(原型状态)
除此之外,它还支持如下的特性:
-
静态内容:来自类路径或文件系统
-
跨域资源共享(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
- 那些 Go 语言发展历史上的重大决策
- 从趋势到挑战,一站式解读操作系统运维和可观测性
- 百万级 Topic,腾讯云的 Apache Pulsar 稳定性实践
- Apache Doris 在思必驰的应用优化实践:海量语音通话数据下,实时、离线一体的数仓架构设计实践
- 爱数正式开源认知智能开发框架 KWeaver
- 运维智能化的三大关键技术
- “抄我的还‘反捅’我一刀”,Gary Marcus 发文驳斥图灵奖得主 Yann LeCun
- 当出海成为必选项,企业如何构建全场景全生态技术底座?
- 数智底座必备能力三:快速构建创新应用
- Docker 多阶段构建实战 (multi-stage builds)
- 工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)
- 经久不衰的设计定律是不要让我思考的设计
- 不要指望下一个像 GPT 这样的大型语言模型会民主化
- Java 近期新闻:Helidon Níma、Spring Framework、MicroProfile、MicroStream、Kotlin 和 Piranha
- 一文入门 jQuery
- C 学习 ---__libc_open 函数的原理
- 监控系统工作原理
- 甲骨文新微服务框架 Helidon Níma:使用虚拟线程实现高性能
- 【云原生 | 从零开始学 Kubernetes】二、使用 kubeadm 搭建 K8S 集群
- Elasticsearch 聚合学习之四:结果排序