甲骨文新微服務框架 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 主要的關注點是性能,它也的確產生了一定的效果,如下圖所示。
/filters:no_upscale()/news/2022/09/introducing-helidon-nima/en/resources/1graph-1663271505131.png)
這個 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 聚合學習之四:結果排序