甲骨文新微服務框架 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 聚合學習之四:結果排序