国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

優(yōu)化 Kubernetes 中的 Java 無服務(wù)器函數(shù)

開發(fā) 后端
在 Kubernetes 中運(yùn)行無服務(wù)器函數(shù)時(shí),實(shí)現(xiàn)更快的啟動(dòng)速度和更小的內(nèi)存占用。

由于運(yùn)行上千個(gè)應(yīng)用程序容器莢Pod所耗費(fèi)的資源多,令它實(shí)現(xiàn)較少工作節(jié)點(diǎn)和資源占用所需成本也較高,所以在使用 ??Kubernetes?? 時(shí),快速啟動(dòng)和較少的內(nèi)存占用是至關(guān)重要的。在 Kubernetes 平臺(tái)運(yùn)行容器化微服務(wù)時(shí),內(nèi)存占用是比吞吐量更重要的考量因素,這是因?yàn)椋?/p>

  • 由于需要持續(xù)運(yùn)行,所以耗費(fèi)資源更多(不同于 CPU 占用)
  • 微服務(wù)令開銷成本成倍增加
  • 一個(gè)單體應(yīng)用程序變?yōu)槿舾蓚€(gè)微服務(wù)的情況(例如 20 個(gè)微服務(wù)占用的存儲(chǔ)空間約有 20GB)

這些情況極大影響了無服務(wù)器函數(shù)的發(fā)展和 Java 部署模型。到目前為止,許多企業(yè)開發(fā)人員選擇 Go、Python 或 Node.js 這些替代方案來解決性能瓶頸,直到出現(xiàn)了 ??Quarkus?? 這種基于 kubernetes 的原生 Java 堆棧,才有所改觀。本文介紹如何在使用了 Quarkus 的 kubernetes 平臺(tái)上進(jìn)行性能優(yōu)化,以便運(yùn)行無服務(wù)器函數(shù)。

容器優(yōu)先的設(shè)計(jì)理念

由于 Java 生態(tài)系統(tǒng)中傳統(tǒng)的框架都要進(jìn)行框架的初始化,包括配置文件的處理、??classpath?? 的掃描、類加載、注解的處理以及構(gòu)建元模型,這些過程都是必不可少的,所以它們都比較耗費(fèi)資源。如果使用了幾種不同的框架,所耗費(fèi)的資源也是成倍增加。

Quarkus 通過“左移shifting left”,把所有的資源開銷大的操作都轉(zhuǎn)移到構(gòu)建階段,解決了這些 Java 性能問題。在構(gòu)建階段進(jìn)行代碼和框架分析、字節(jié)碼轉(zhuǎn)換和動(dòng)態(tài)元模型生成,而且只有一次,結(jié)果是:運(yùn)行時(shí)可執(zhí)行文件經(jīng)過高度優(yōu)化,啟動(dòng)非常快,不需要經(jīng)過那些傳統(tǒng)的啟動(dòng)過程,全過程只在構(gòu)建階段執(zhí)行一次。

Quarkus Build phase

更重要的是:Quarkus 支持構(gòu)建原生可執(zhí)行文件,它具有良好性能,包括快速啟動(dòng)和極小的駐留集大小resident set size(RSS)內(nèi)存占用,跟傳統(tǒng)的云原生 Java 棧相比,具備即時(shí)擴(kuò)展的能力和高密度的內(nèi)存利用。

Quarkus RSS and Boot Time Metrics

這里有個(gè)例子,展示如何使用 Quarkus 將一個(gè) ??Java 無服務(wù)器?? 項(xiàng)目構(gòu)建為本地可執(zhí)行文件。

1、使用 Quarkus 創(chuàng)建無服務(wù)器 Maven 項(xiàng)目

以下命令生成一個(gè) Quarkus 項(xiàng)目,(例如 ??quarkus-serverless-native??)以此創(chuàng)建一個(gè)簡(jiǎn)單的函數(shù):

$ mvn io.quarkus:quarkus-maven-plugin:1.13.4.Final:create \       -DprojectGroupId=org.acme \       -DprojectArtifactId=quarkus-serverless-native \       -DclassName="org.acme.getting.started.GreetingResource"

2、構(gòu)建一個(gè)本地可執(zhí)行文件

你需要使用 GraalVM 為 Java 程序構(gòu)建一個(gè)本地可執(zhí)行文件。你可以選擇 GraalVM 的任何發(fā)行版,例如 ??Oracle GraalVM Community Edition (CE)??? 或 ??Mandrel??(Oracle GraalVM CE 的下游發(fā)行版)。Mandrel 是為支持 OpenJDK 11 上的 Quarkus-native 可執(zhí)行文件的構(gòu)建而設(shè)計(jì)的。

打開 ??pom.xml???,你將發(fā)現(xiàn)其中的 ??native?? 設(shè)置。你將使用它來構(gòu)建本地可執(zhí)行文件。

<profiles>    <profile>        <id>native</id>        <properties>            <quarkus.package.type>native</quarkus.package.type>        </properties>    </profile></profiles>

注意: 你可以在本地安裝 GraalVM 或 Mandrel 發(fā)行版。你也可以下載 Mandrel 容器映像來構(gòu)建它(像我那樣),因此你還需要在本地運(yùn)行一個(gè)容器引擎(例如 Docker)。

假設(shè)你已經(jīng)打開了容器運(yùn)行時(shí),此時(shí)需要運(yùn)行一下 Maven 命令:

使用 ??Docker?? 作為容器引擎:

$ ./mvnw package -Pnative \  -Dquarkus.native.container-build=true \  -Dquarkus.native.container-runtime=docker

使用 ??Podman?? 作為容器引擎:

$ ./mvnw package -Pnative \  -Dquarkus.native.container-build=true \  -Dquarkus.native.container-runtime=podman

輸出信息結(jié)尾應(yīng)當(dāng)是 ??BUILD SUCCESS??。

Native Build Logs

不借助 JVM 直接運(yùn)行本地可執(zhí)行文件:

$ target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner

輸出信息類似于:

__  ____  __  _____   ___  __ ____  ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \  --\___\_\____/_/ |_/_/|_/_/|_|\____/___/  INFO  [io.quarkus] (main) quarkus-serverless-native 1.0.0-SNAPSHOT native(powered by Quarkus xx.xx.xx.) Started in 0.019s. Listening on: http://0.0.0.0:8080INFO [io.quarkus] (main) Profile prod activated.INFO [io.quarkus] (main) Installed features: [cdi, kubernetes, resteasy]

簡(jiǎn)直是超音速!啟動(dòng)只花了 19 毫秒。你的運(yùn)行時(shí)間可能稍有不同。

使用 Linux 的 ??ps?? 工具檢測(cè)一下,結(jié)果內(nèi)存占用還是很低。檢測(cè)的方法是:在應(yīng)用程序運(yùn)行期間,另外打開一個(gè)終端,運(yùn)行如下命令:

$ ps -o pid,rss,command -p $(pgrep -f runner)

輸出結(jié)果類似于:

PID    RSS COMMAND10246  11360 target/quarkus-serverless-native-1.0.0-SNAPSHOT-runner

該進(jìn)程只占 11MB 內(nèi)存。非常小!

注意: 各種應(yīng)用程序(包括 Quarkus)的駐留集大小和內(nèi)存占用,都因運(yùn)行環(huán)境而異,并隨著應(yīng)用程序載入而上升。

你也可以使用 REST API 訪問這個(gè)函數(shù)。輸出結(jié)果應(yīng)該是 ??Hello RESTEasy??:

$ curl localhost:8080/helloHello RESTEasy

3、把函數(shù)部署到 Knative 服務(wù)

如果你還沒有創(chuàng)建命名空間,現(xiàn)在就在 ??OKD???(OpenShift Kubernetes 發(fā)行版)??創(chuàng)建一個(gè)命名空間???(例如 ??quarkus-serverless-native???),進(jìn)而把這個(gè)本地可執(zhí)行文件部署為無服務(wù)器函數(shù)。然后添加 ??quarkus-openshift?? 擴(kuò)展:

$ ./mvnw -q quarkus:add-extension -Dextensions="openshift"

向 ??src/main/resources/application.properties?? 文件中添加以下內(nèi)容,配置 Knative 和 Kubernetes 的相關(guān)資源:

quarkus.container-image.group=quarkus-serverless-nativequarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000quarkus.native.container-build=truequarkus.kubernetes-client.trust-certs=truequarkus.kubernetes.deployment-target=knativequarkus.kubernetes.deploy=truequarkus.openshift.build-strategy=docker

構(gòu)建本地可執(zhí)行文件,并把它直接部署到 OKD 集群:

$ ./mvnw clean package -Pnative

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

輸出信息結(jié)尾應(yīng)當(dāng)是 ??BUILD SUCCESS???。完成一個(gè)本地二進(jìn)制文件的構(gòu)建并部署為 Knative 服務(wù)需要花費(fèi)幾分鐘。成功創(chuàng)建服務(wù)后,使用 ??kubectl??? 或 ??oc?? 命令工具,可以查看 Knative 服務(wù)和版本信息:

$ kubectl get ksvcNAME                        URL   [...]quarkus-serverless-native   http://quarkus-serverless-native-[...].SUBDOMAIN  True$ kubectl get revNAME                              CONFIG NAME                 K8S SERVICE NAME                  GENERATION   READY   REASONquarkus-serverless-native-00001   quarkus-serverless-native   quarkus-serverless-native-00001   1            True

4、訪問本地可執(zhí)行函數(shù)

運(yùn)行 ??kubectl?? 命令,搜索無服務(wù)器函數(shù)的節(jié)點(diǎn):

$ kubectl get rt/quarkus-serverless-native

輸出信息類似于:

NAME                         URL                                                                                                          READY   REASONquarkus-serverless-native   http://quarkus-serverless-restapi-quarkus-serverless-native.SUBDOMAIN   True

用 ??curl??? 命令訪問上述信息中的 ??URL?? 字段:

$ curl http://quarkus-serverless-restapi-quarkus-serverless-native.SUBDOMAIN/hello

過了不超過一秒鐘,你也會(huì)得到跟本地操作一樣的結(jié)果:

Hello RESTEasy

當(dāng)你在 OKD 群集中訪問 Quarkus 運(yùn)行中的節(jié)點(diǎn)的日志,你會(huì)發(fā)現(xiàn)本地可執(zhí)行文件正在以 Knative 服務(wù)的形式運(yùn)行。

Native Quarkus Log

下一步呢?

你可以借助 GraalVM 發(fā)行版優(yōu)化 Java 無服務(wù)器函數(shù),從而在 Knative 中使用 Kubernetes 將它們部署為無服務(wù)器函數(shù)。Quarkus 支持在普通的微服務(wù)中使用簡(jiǎn)易配置進(jìn)行性能優(yōu)化。

本系列的下一篇文章將指導(dǎo)你在不更改代碼的情況下跨多個(gè)無服務(wù)器平臺(tái)實(shí)現(xiàn)可移植函數(shù)。

(Daniel Oh, ??CC BY-SA 4.0??)

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2022-10-10 09:01:21

JavaQuarkus

2019-10-14 16:34:53

收藏Docker虛擬機(jī)

2017-10-17 10:12:58

2019-04-30 10:27:46

無服務(wù)器云計(jì)算安全

2018-02-24 10:15:36

無服務(wù)器容器云計(jì)算

2018-10-10 19:39:37

云計(jì)算云服務(wù)Kubernetes

2020-01-18 09:44:35

無服務(wù)器Kubernetes云服務(wù)

2020-01-16 10:47:36

服務(wù)器Kubernetes微服務(wù)

2019-04-01 13:47:57

無服務(wù)器計(jì)算云服務(wù)

2021-05-27 10:12:11

Java無服務(wù)器化開發(fā)

2022-03-18 20:54:24

無服務(wù)器計(jì)算無服務(wù)器服務(wù)器

2019-04-26 10:57:26

無服務(wù)器應(yīng)用程序HTTP

2022-01-05 09:28:31

無服務(wù)器計(jì)算服務(wù)器應(yīng)用程序

2024-06-03 08:37:26

2019-03-08 10:26:29

無服務(wù)器云計(jì)算德勤

2017-11-27 10:45:48

無服務(wù)器計(jì)算容器

2025-12-10 17:01:12

2024-11-15 09:00:00

云計(jì)算云平臺(tái)

2017-09-08 11:22:04

容器云函數(shù)無服務(wù)器

2011-03-11 15:52:59

LAMP優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久综合久久鬼色| 国内精品美女在线观看| 在线播放日韩精品| 3d欧美精品动漫xxxx无尽| 中文字幕视频一区二区在线有码 | 国产美女主播在线播放| 成人免费高清视频| fc2ppv完全颜出在线播放| 国产人伦精品一区二区| 小说区图片区色综合区| 91传媒视频免费| 国产精品久久久久三级| 自拍av在线| 欧美成人性福生活免费看| 999精品嫩草久久久久久99| 国产成人高潮免费观看精品| 影音先锋久久久| 农民人伦一区二区三区| 亚洲三级小视频| 最爽无遮挡行房视频在线| 精品精品国产国产自在线| 91国语精品自产拍| 色哟哟免费网站| 亚洲网友自拍偷拍| 伊人久久综合一区二区| 国产精品激情av电影在线观看 | 可以在线看黄的网站| 综合久久久久综合| 1769免费视频在线观看| 欧美一性一乱一交一视频| 日韩中文欧美在线| caoporn97免费视频公开| 欧美一级爆毛片| 天堂99x99es久久精品免费| 日韩电影免费观看高清完整| 亚洲色图在线播放| 中文av在线全新| 国产精品自拍视频| 91麻豆国产在线观看| 国产视频在线播放| 国产精品精品一区二区三区午夜版 | 精品一区二区久久久| 毛片毛片毛片毛片毛片毛片| 亚洲欧洲国产伦综合| 欧美 日韩 国产 一区| 日本成人黄色网| 精品国产一区二区三区四区四| 欧美少妇性xxxx| 浮妇高潮喷白浆视频| 欧美tk丨vk视频| 亚洲综合中文| 嫩草影院官网| 久久久久久国产精品美女| 国产乱码精品一区二区三区av | 亚洲国产欧美一区二区三区久久| 日韩黄色大片| 99热在线观看| 上原亚衣av一区二区三区| 日韩午夜av| 亚洲伦理在线| 欧美在线影院在线视频| 91在线观看污| 偷拍自拍在线看| 欧洲亚洲一区二区三区四区五区| 欧美性生交大片免网| 无码日韩精品一区二区免费| 无码人妻丰满熟妇区毛片| 国产亚洲欧美日韩美女| 美女网站在线免费欧美精品| 黄色网在线看| 激情小说综合网| 在线精品国精品国产尤物884a| 成人网18免费网站| 人猿泰山h版在线观看| 欧美精品aaa| 中文一区在线播放| 伊人久久影院| 国产wwwxx| 欧美激情手机在线视频| www久久精品| 久久9999免费视频| 国产精品-区区久久久狼 | 亚洲另类av| 色偷偷亚洲女人天堂观看欧| 欧美成在线视频| 久久免费视频色| 7m精品国产导航在线| 天天干天天操天天玩| 国产69精品久久久久9999| 欧美极品aⅴ影院| 日韩美女国产精品| 少妇免费视频| 国产精品入口夜色视频大尺度| 一区二区在线看| 日韩精品一区二区久久| 污视频网站在线| 精品欧美一区二区久久久伦| 精品蜜桃在线看| 国产精品亚洲专一区二区三区 | 色撸撸在线观看| 亚洲午夜色婷婷在线| 高清不卡一二三区| 日韩精品第二页| 97公开免费视频| 日本亚洲欧美三级| 动漫精品一区二区| 亚洲福利电影| 国产羞羞视频在线播放| 国产制服91一区二区三区制服| 最近更新的2019中文字幕| 国产日韩精品一区二区浪潮av| 猫咪成人在线观看| 制服黑丝国产在线| 国产传媒一区| 日韩hd视频在线观看| heyzo一本久久综合| 成人精品毛片| 污网站免费在线观看| 欧美人xxxxx| 日日噜噜噜夜夜爽亚洲精品| 亚洲欧洲日韩女同| 亚洲国产精品第一区二区| av中文在线资源库| 99爱视频在线| 91精品久久久久久久久久另类 | 久久艳片www.17c.com| 自拍偷拍亚洲综合| 狠狠久久婷婷| 日本电影欧美片| 99re在线视频播放| 成人黄色av免费在线观看| 日韩欧美专区在线| 久久久91精品国产一区二区精品 | 在线观看91视频| 懂色中文一区二区在线播放| 国产一区二区三区亚洲| av黄色在线观看| 欧美成人xxxxx| 3d动漫啪啪精品一区二区免费| 亚洲黄色www网站| 国产精品免费aⅴ片在线观看| 欧美在线高清| 素人啪啪色综合| 日本在线视频1区| 99久久久精品视频| 成人欧美在线视频| 精品色蜜蜜精品视频在线观看| 国产亚洲精品久久久| 欧美孕妇毛茸茸xxxx| 97视频中文字幕| 亚洲视频电影| 色综合中文综合网| 国产一区二区福利视频| 免费看av成人| 亚洲欧美se| 久草在线免费福利| 国产精品国产三级国产专区51| 国产精品久久久久久久久借妻| 欧美精品一区二区三区蜜桃视频| 国产精品免费久久| 日韩av中文字幕一区二区三区| 久久资源综合| 国模套图日韩精品一区二区| 欧洲亚洲精品视频| 丰满爆乳一区二区三区| 国产一区高清视频| 青草热久免费精品视频| 亚洲欧美日韩网| 在线一区二区视频| 中文欧美字幕免费| 国产综合色精品一区二区三区| 亚洲情侣在线| 色愁久久久久久| 日韩经典一区| 在线中文免费视频| 亚洲第一成年免费网站| 国产精品无码乱伦| 日韩成人久久| 美女视频黄久久| 在线欧美日韩国产| 亚洲最新av网址| 9人人澡人人爽人人精品| 欧美日本一区| 亚洲国产合集| 亚洲精品555| huan性巨大欧美| 亚洲精品套图| 一区二区三区 日韩| 日本精品免费视频| 九九九久久久| 成人午夜在线观看| 57pao成人国产永久免费| 日韩在线小视频| 亚洲人成网在线播放| 精品久久久久久久人人人人传媒 | 一区二区三区在线视频111| 韩国一区二区三区美女美女秀| 国产欧美一区二区三区视频| 91大神福利视频在线| 久久久久久国产精品久久|