日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Serverless 工程实践 | 自建 Apache OpenWhisk 平台

發布時間:2024/9/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 工程实践 | 自建 Apache OpenWhisk 平台 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:OpenWhisk 是一個開源、無服務器的云平臺,可以在運行時容器中通過執行擴展的代碼響應各種事件,而無須用戶關心相關的基礎設施架構。

OpenWhisk 簡介


OpenWhisk 是基于云的分布式事件驅動的編程服務。OpenWhisk 提供一種編程模型,將事件處理程序注冊到云服務中,以處理各種不同的服務。其可以支持數千觸發器和調用,可以對不同規模的事件進行響應。
OpenWhisk 是由許多組件構建的,這些組件讓 OpenWhisk 成為一款優秀的開源 FaaS 平臺。

Apache OpenWhisk 組件結構


OpenWhisk 部署


實驗機器操作系統為 Ubuntu 18.04 Desktop。使用 GitHub 上所提供的 incubator-openwhisk 進行安裝,如果本機沒有安裝 Git,需要先安裝 Git:


apt install git


接下來克隆 repo 到本地目錄:


git clone https://github.com/apache/incubator-openwhisk.git openwhisk


克隆完成之后,顯示如圖所示。

Apache OpenWhisk 項目 Clone


進入 OpenWhisk 目錄,并且執行腳本。OpenWhisk 是由 Scala 開發的,運行需要安裝 Java 環境。下面的腳本實現了 Java 環境的安裝,以及其他的所需要的軟件:


cd openwhisk && cd tools/ubuntu-setup && ./all.sh


Apache OpenWhisk 安裝配置如圖所示。

Apache OpenWhisk 安裝配置


OpenWhisk 使用 ansible 進行部署,環境變量定義在 ansible/environments/group_vars/all 下:

limits:invocationsPerMinute: "{{ limit_invocations_per_minute | default(60) }}"concurrentInvocations: "{{ limit_invocations_concurrent | default(30) }}"concurrentInvocationsSystem: "{{ limit_invocations_concurrent_system | default (5000) }}"firesPerMinute: "{{ limit_fires_per_minute | default(60) }}"sequenceMaxLength: "{{ limit_sequence_max_length | default(50) }}"


上面程序定義了 OpenWhisk 在系統中的限制。


invocationsPerMinute 表示同一個 Namespace 每分鐘調用 Action 的數量。

concurrentInvocations 表示同一個 Namespace 的并發調用數量。

concurrentInvocationsSystem 表示系統中所有 Namespace 的并發調用數量。

firesPerMinute 表示同一個 Namespace 中每分鐘調用 Trigger 的數量。

sequenceMaxLength 表示 Action 的最大序列長度。


如果需要修改上述的默認值,可以把修改后的值添加到文件

ansible/environments/local/group_vars/all 的末尾。


例如,Action 的最大序列長度為 100,可以將 sequenceMaxLength: 120 添加到文件的末尾。接下來,為 OpenWhisk 配置一個持久存儲的數據庫,有 CouchDB 和 Cloudant 可選。以 CouchDB 為例,配置環境:


export OW_DB=CouchDBexport OW_DB_USERNAME=rootexport OW_DB_PASSWORD=PASSWORDexport OW_DB_PROTOCOL=httpexport OW_DB_HOST=172.17.0.1export OW_DB_PORT=5984


在 openwhisk/ansible 目錄下,運行腳本,如圖所示。


ansible-playbook -i environments/local/ setup.yml


執行腳本過程


接下來使用 CouchDB 部署 OpenWhisk,確保本地已經有了 db_local.ini。在 openwhisk/ 目錄下執行部署命令:


./gradlew distDocker


如果部署過程中出現問題(如下圖所示),可能是沒有安裝 npm 導致的,此時可以執行如下指令。

部署過程可能報錯示例



apt install npm


稍等片刻,可以看到 Build 成功頁面,如圖所示。

Build 成功示例


接下來進入 openwhisk/ansible 目錄:


ansible-playbook -i environments/local/ couchdb.ymlansible-playbook -i environments/local/ initdb.ymlansible-playbook -i environments/local/ wipe.ymlansible-playbook -i environments/local/ apigateway.ymlansible-playbook -i environments/local/ openwhisk.ymlansible-playbook -i environments/local/ postdeploy.yml


執行腳本過程如圖所示。

執行腳本過程


部署成功后,OpenWhisk 會在系統中啟動幾個 Docker 容器。我們可以通過 docker ps 來查看:


docker ps --format "{{.Image}} \t {{.Names }}"


安裝成功后的容器列表如圖所示。

安裝成功后的容器列表


開發者工具


OpenWhisk 提供了一個統一的命令行接口 wsk。生成的 wsk 在 openwhisk/bin 下。其有兩個屬性需要配置。

  • API host 用于部署 OpenWhisk 的主機名或 IP 地址的 API。
  • Authorization key(用戶名或密碼)用來授權操作 OpenWhisk 的 API。


設置 API host,在單機配置中的 IP 應該為 172.17.0.1,如圖所示。


./bin/wsk property set --apihost '172.17.0.1'

設置 API host


設置 key:


./bin/wsk property set --auth `cat ansible/files/auth.guest


權限設置如圖所示。

設置權限


OpenWhisk 將 CLI 的配置信息存儲在 ~/.wskprops 中。這個文件的位置也可以通過環境變量 WSK_CONFIG_FILE 來指定。


驗證 CLI:


wsk action invoke /whisk.system/utils/echo –p message hello –result{ "message": "hello"}


體驗測試


創建簡單的動作(action),代碼如下:


# test.pydef main(args): num = args.get("number", "30") return {"fibonacci": F(int(num))}def F(n): if n == 0: return 0 elif n == 1: return 1 else: return F(n - 1) + F(n - 2)


創建動作:


/bin/wsk action create myfunction ./test.py --insecure


函數創建如圖所示。

創建函數


觸發動作:


./bin/wsk -i action invoke myfunction --result --blocking --param nember 20


得到結果,如圖所示。

執行函數

至此,我們完成了 OpenWhisk 項目的部署以及測試。

原文鏈接:https://developer.aliyun.com/article/796083?

版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

總結

以上是生活随笔為你收集整理的Serverless 工程实践 | 自建 Apache OpenWhisk 平台的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。