More  

收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 主機

使用跨無服務器平台應用可移植功能


字體大小:
2021年6月11日 -
:     
 

不得不服我的

對於采用多雲和混合雲架構,無服務器功能開發也應考慮這些容器可移植性優勢。如果沒有可移植性,開發人員在跨多個無服務器運行時開發和部署相同的無服務器功能時,可能必須為每個無服務器平台學習和使用不同的 API、命令行界面 (CLI) 工具和軟件開發工具包 (SDK)。資源(例如,時間、精力、成本和人力資源)有限的開發人員會被各種選項所困擾,以至於他們很難選擇最好的選項。

Get Funqy the next time you hit a serverless dance floor

Quarkus Funqy 擴展支持可移植的 Java API,供開發人員編寫無服務器函數並將它們部署到異構無服務器運行時,包括 AWS Lambda、Azure Functions、Google Cloud 和 Knative。它也可用作獨立服務。
Funqy 幫助開發人員靈活使用無服務器,而無需更改代碼。

以下是如何使用 Quarkus Funqy 構建可移植的無服務器功能的快速案例。

1. 創建 Quarkus Funqy Maven 項目

生成一個 Quarkus 項目(quarkus-serverless-func)來創建一個帶有 Funqy 擴展的簡單函數。

2.在本地運行serverless功能

打開src/main/java/org/acme/getting/started目錄下的Funqy.java文件。

在代碼中:

(1) Annotation 使方法成為基於 Funqy API 的可公開函數。函數名默認等同於方法名(charm)。

(2) 表示一個Java類(Answer)作為輸入參數,輸出的String類型。

(3) value 應該在調用函數時參數化。

注意:Funqy 在構建時進行類型自省以加快啟動時間,因此 Funqy 封送處理層在運行時不會注意到任何派生類型。

3.選擇無服務器平台部署Funqy功能

現在,當您添加 Quarkus Funqy 擴展之一時,您可以將可移植功能部署到您首選的無服務器平台。優點是您不需要更改代碼;您只需要調整一些配置,例如功能導出和目標無服務器平台。

嘗試使用 Knative Serving 部署該功能(如果您已將其安裝在 Kubernetes 集群中)。將以下擴展添加到 Quarkus Funqy 項目:

$ ./mvnw quarkus:add-extension -Dextensions="kubernetes,container-image-docker"

打開 src/main/resources/ 目錄中的 application.properties 文件。然後添加以下變量來配置 Knative 和 Kubernetes 資源——確保將 changeit 替換為您的容器注冊表的組名(DockerHub 中的用戶名)。

輸出應以 BUILD SUCCESS 結束。然後會在 target/kubernetes 目錄下生成一個 knative.yml 文件。現在您應該准備好使用以下命令創建具有該功能的 Knative 服務(確保登錄到 Kubernetes 集群並更改要在其中創建 Knative 服務的命名空間):

$ kubectl create -f target/kubernetes/knative.yml

輸出應該是這樣的:

service.serving.knative.dev/quarkus-serverless-func created

4.在Kubernetes中測試Funqy功能

獲取函數的 REST API 並記錄其輸出。

使用 curl 命令快速訪問該函數:

$ http://http://quarkus-serverless-func-YOUR_HOST_DOMAIN/charm?value=c

您看到的輸出與您在本地看到的輸出相同:

You Quark!

注意:由於 Knative Serving 的默認行為,該函數將在 30 秒內縮小到零。在這種情況下,Pod 將在調用 REST API 時自動擴展。

好了,本文到此結束。如果對編程、計算機、程序員方面感興趣的話,歡迎私信聯系我,隨時交流!點個關注,是對我莫大的鼓勵!