成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 Kubernetes 中優化 Java 的 Serverless 功能

開發 前端 云原生
本文介紹了如何優化 Java 性能以使用 Quarkus 在 Kubernetes 上運行 Serverless 功能。

實現更快的啟動和更小的內存占用,以在 Kubernetes 上運行 serverless 功能。

由于運行數千個應用程序 pod 的費用以及使用更少的工作節點和其他資源來節省成本,在 Kubernetes 中更快的啟動和更小的內存占用總是很重要的。 在 Kubernetes 上的容器化微服務上,內存比吞吐量更重要,因為:

  •  由于永久性(與 CPU 周期不同),它更昂貴。
  •  微服務成倍增加開銷成本。
  •  一個單體應用變成 N 個微服務(例如,20 個微服務 ≈ 20GB)

這會顯著影響 serverless 功能開發和 Java 部署模型。 這是因為許多企業開發人員選擇了 Go、Python 和 Nodejs 等替代方案來克服性能瓶頸——直到現在,感謝 Quarkus,一個新的 Kubernetes 原生 Java 堆棧。 本文介紹了如何優化 Java 性能以使用 Quarkus 在 Kubernetes 上運行 serverless 功能。

容器優先設計

Java 生態系統中的傳統框架在初始化這些框架所需的內存和啟動時間方面是有代價的,包括配置處理、類路徑掃描、類加載、注釋處理和構建世界的元模型,框架需要這些操作。對于不同的框架,這一次又一次地成倍增加。

Quarkus 通過將幾乎所有開銷“左移”到構建階段來幫助解決這些 Java 性能問題。通過在構建時只進行一次代碼和框架分析、字節碼轉換和動態元模型生成,您最終會得到一個高度優化的運行時可執行文件,它啟動速度超快,并且不需要傳統啟動的所有內存,因為工作在構建階段完成一次。

圖片

更重要的是,Quarkus 允許您構建具有性能優勢的本機可執行文件,包括驚人的快速啟動時間和非常小的駐留集大小 (RSS) 內存,與傳統云相比,可實現即時擴展和高密度內存利用率—— 本機 Java 堆棧。

圖片

這是一個快速示例,說明如何使用 Quarkus 通過 Java serverless 功能項目構建本機可執行文件。

一、創建 Quarkus serverless Maven 項目

這個命令會生成一個 Quarkus 項目(例如 quarkus-serverless-native)來創建一個簡單的函數:

圖片

二、構建原生可執行文件

您需要一個 GraalVM 來為 Java 應用程序構建本機可執行文件。 您可以選擇任何 GraalVM 發行版,例如 Oracle GraalVM 社區版 (CE) 和 Mandrel(Oracle GraalVM CE 的下游發行版)。 Mandrel 旨在支持在 OpenJDK 11 上構建 Quarkus 原生可執行文件。

打開 pom.xml,你會發現這個原生配置文件。 您將使用它來構建本機可執行文件:

圖片


注意:您可以在本地安裝 GraalVM 或 Mandrel 發行版。 您還可以下載 Mandrel 容器鏡像來構建它(就像我所做的那樣),因此您需要在本地運行容器引擎(例如 Docker)。

假設您已經啟動了容器運行時,請運行以下 Maven 命令之一。

對于 Docker:

圖片

對于 Podman:

圖片

輸出應以 BUILD SUCCESS 結束。

圖片

在沒有 Java 虛擬機 (JVM) 的情況下直接運行本機可執行文件:

圖片

輸出將如下所示:

圖片

超音速! 啟動時間為 19 毫秒。 時間可能因您的環境而異。

正如 Linux ps 實用程序報告的那樣,它還具有極低的內存使用率。 在應用程序運行時,在另一個終端中運行此命令:

圖片

你應該看到類似的東西:

圖片

此過程使用大約 11MB 的內存 (RSS)。 相當緊湊!

注意:任何應用程序(包括 Quarkus)的 RSS 和內存使用量將根據您的特定環境而有所不同,并且會隨著應用程序體驗的加載而增加。

您還可以使用 REST API 訪問該函數。 那么輸出應該是 Hello RESTEasy:

圖片

三、將功能部署到 Knative 服務

如果您還沒有,請在 OKD(OpenShift Kubernetes Distribution)上創建一個命名空間(例如 quarkus-serverless-native),以將此本機可執行文件部署為無服務器功能。 然后為 Knative 服務部署添加一個 quarkus-openshift 擴展:

圖片

在 src/main/resources/application.properties 中添加以下變量來配置 Knative 和 Kubernetes 資源:

圖片

構建本機可執行文件,然后直接將其部署到 OLD 集群:

圖片

注意:確保提前使用 oc login 命令登錄到正確的項目(例如 quarkus-serverless-native)。

輸出應以 BUILD SUCCESS 結束。 完成原生二進制構建并部署新的 Knative 服務需要幾分鐘時間。 成功創建服務后,您應該使用 kubectl 或 oc 命令工具看到 Knative 服務 (KSVC) 和修訂版 (REV):

圖片

四、訪問原生可執行函數

通過運行以下 kubectl 命令檢索 serverless 函數的端點:

圖片

輸出應如下所示:

圖片

使用 curl 命令訪問路由 URL:

圖片

不到一秒鐘,您將獲得與本地相同的結果:

圖片

當您訪問 OLD 集群中的 Quarkus 運行 pods 日志時,您將看到本機可執行文件作為 Knative 服務運行。

圖片

下一步是什么?

您可以使用 GraalVM 發行版優化 Java serverless功能,將它們作為無服務器功能部署在 Knative 和 Kubernetes 上。 Quarkus 使用普通微服務中的簡單配置來實現這種性能優化。

責任編輯:姜華 來源: 新鈦云服
相關推薦

2021-11-05 16:08:57

作業幫Kubernetesserverless

2018-07-30 11:53:04

Kubernetes無服務器容器

2024-03-18 00:00:04

AIKubernetes機器學習

2020-05-26 22:23:03

Serverless容器Serverless

2022-10-26 15:43:51

KubernetesJava無服務

2021-10-13 09:45:54

Serverless 應用調試

2022-09-06 10:29:27

無服務器Serverless

2024-12-17 07:41:34

Java逃逸分析

2021-11-10 08:20:20

GitLab KubernetesDocker

2023-07-24 16:09:58

Kubernetes云計算

2020-11-26 08:46:52

Spinnaker

2020-05-26 22:19:46

KubernetesServerless存儲

2021-10-26 10:28:41

開發架構Kubernetes

2009-07-09 16:12:53

WeblogicJDBC

2021-04-29 08:11:11

SQL優化作用

2021-11-26 10:08:57

鴻蒙HarmonyOS應用

2021-12-21 15:17:53

Kubernetes緩存Linux

2022-08-26 15:54:34

云原生Kubernetes物聯網

2021-04-25 11:00:37

Kubernetes優化Linux

2021-07-06 07:46:16

KubernetesRook存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清视频 | h网站在线观看 | 国产精品日产欧美久久久久 | 91免费观看 | 一区二区国产精品 | 国产成人在线视频播放 | 国产午夜精品久久 | 一区二区中文 | av资源中文在线 | 欧美中文字幕在线观看 | 日本久久精品 | 激情五月婷婷综合 | 国产一区二区三区在线 | 97国产一区二区 | 一级毛片中国 | 久久乐国产精品 | 成人中文字幕av | 91在线电影 | 成人三级av | 成人国产在线视频 | 日韩一级在线 | 亚洲电影免费 | 欧美日韩在线观看视频网站 | 日韩中文字幕免费在线 | 日韩高清电影 | 亚洲经典一区 | 亚洲免费精品一区 | 懂色中文一区二区三区在线视频 | 欧美日韩在线一区二区 | 久久新视频 | 日韩av美女电影 | 免费成人高清在线视频 | 亚洲综合色| 岛国av免费在线观看 | 欧美在线视频一区二区 | 激情网站在线 | 激情av在线 | 欧美激情欧美激情在线五月 | 日本中文字幕在线视频 | 亚洲日韩中文字幕一区 | 99精品国产一区二区青青牛奶 |