成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Serverless開(kāi)發(fā)者工具的示例分析

Serverless開(kāi)發(fā)者工具的示例分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、做網(wǎng)站、東臺(tái)網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、東臺(tái)網(wǎng)絡(luò)營(yíng)銷、東臺(tái)企業(yè)策劃、東臺(tái)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供東臺(tái)建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:jinyejixie.com

初探 Serverless 開(kāi)發(fā)者工具

Serverless 架構(gòu)開(kāi)始發(fā)展沒(méi)多久,就有一群人注冊(cè)了 serverless.com 的域名,成立了一家叫 Serverless 的公司,同時(shí)還開(kāi)發(fā)了一款同名工具。

Serverless 架構(gòu)和 Serverless 開(kāi)發(fā)者工具是兩個(gè)不同的東西,如果類比一下的話,就相當(dāng)于中國(guó)電信,一方面指的是中國(guó)電信行業(yè),另一方面也指的是中國(guó)電信運(yùn)營(yíng)商。

Serverless開(kāi)發(fā)者工具的示例分析

從 Serverless 的公司名稱,我們也可以推斷出其推出的產(chǎn)品與 Serverless 架構(gòu)緊密相關(guān)。在各個(gè)云廠商都有自己函數(shù)計(jì)算業(yè)務(wù)的時(shí)候,Serverless 團(tuán)隊(duì)做了一個(gè)類似多云管理平臺(tái)的工具,可以認(rèn)為是多 Serverless 管理的工具。利用這個(gè)工具,可以快速直接使用 AWS 的 Lambda、Azure 的 Funtions 以及騰訊云 SCF 等眾多云廠商的函數(shù)計(jì)算相關(guān)服務(wù),大體支持的功能如下:

Serverless開(kāi)發(fā)者工具的示例分析

通過(guò)這個(gè)上表,大家也可以感覺(jué)到這其實(shí)是個(gè)開(kāi)發(fā)者工具,幫助用戶快速使用多個(gè)云廠商的函數(shù)服務(wù),打包、部署、回滾…當(dāng)然,各個(gè)廠商也都推出類似的工具,例如 AWS 的 SAM、騰訊云的 SCFCLI 等。

除了一個(gè)以函數(shù)計(jì)算為核心的多云開(kāi)發(fā)者工具之外,Serverless 公司還推出了組件化工具:Components。換句話說(shuō),Serverless 開(kāi)發(fā)者工具不僅僅關(guān)注 Serverless 中的 FaaS,也要關(guān)注 BaaS,將 API 網(wǎng)關(guān)、對(duì)象存儲(chǔ)、cdn、數(shù)據(jù)庫(kù)等眾多的后端服務(wù)和函數(shù)計(jì)算有機(jī)集合,讓用戶可以一站式開(kāi)發(fā),一站式部署,一站式更新,一站式維。

Serverless Framework 開(kāi)發(fā)者工具可以被一分為二:Plugin 和 Components。

Serverless開(kāi)發(fā)者工具的示例分析

如果說(shuō)最初的 Serverless Cli 更多是一種以插件(Plugin)形式提供各個(gè)云廠商的函數(shù)計(jì)算功能,那么這個(gè)叫 Components 的功能更多就是以各個(gè)云廠商整體服務(wù)為基礎(chǔ),來(lái)幫助用戶快速將項(xiàng)目部署到 Serverless 架構(gòu)上。

所謂的 Components 可以認(rèn)為是很多 Component 的組合,例如如果部署一個(gè)網(wǎng)站,可能會(huì)需要有以下部分:靜態(tài)資源部分、函數(shù)計(jì)算部分、API 網(wǎng)關(guān)部分、CDN 部分、域名解析部分等,而 Components 就可以幫我們一站式部署這些資源,將靜態(tài)資源部署到對(duì)象存儲(chǔ)中,將函數(shù)計(jì)算部分部署到函數(shù)中,將 API 網(wǎng)關(guān)、CDN 等業(yè)務(wù)部署到對(duì)應(yīng)的產(chǎn)品或者服務(wù)中,如果有域名解析需求,會(huì)自動(dòng)解析域名,同時(shí)將整個(gè)項(xiàng)目的所有資源進(jìn)行關(guān)聯(lián)。

除了一鍵部署、自動(dòng)關(guān)聯(lián)之外,Components 還提供了若干的傳統(tǒng) Web 框架部署到 Serverless 架構(gòu)的解決方案,用戶可將自己已有的或者使用這些框架新開(kāi)發(fā)的項(xiàng)目,直接一鍵部署到云端,對(duì)開(kāi)發(fā)者來(lái)說(shuō)這是一個(gè)巨大的便利。

用戶如何使用 Plugin 和 Components 呢?其實(shí)這兩個(gè)功能都是 Serverless Cli 作為承載,也就是說(shuō),只要我們安裝了 Serverless Framework 這個(gè)開(kāi)發(fā)者工具,就可以同時(shí)使用這兩個(gè)功能。

安裝 Serverless Framework 開(kāi)發(fā)者工具的過(guò)程也很簡(jiǎn)單:

  • 安裝 Nodejs,官方說(shuō)的 nodejs 只需要 6 以上就好,但是在實(shí)際使用過(guò)程中,發(fā)現(xiàn) 6 不行,至少 8 以上才可以。

  • 安裝 Serverless 開(kāi)發(fā)者工具:npm install -g serverless,安裝完成之后可以通過(guò)serverless -v查看版本號(hào),來(lái)確定是否成功的安裝該工具。

至于如何使用 Serverless Framework 開(kāi)發(fā)者工具,可以參考接下來(lái)的 Plugin 和 Components 部分。

什么是 Serverless Plugin

首先,什么是 Plugin,Serverless Framework Plugin 實(shí)際上是一個(gè)函數(shù)的管理工具,使用這個(gè)工具,可以很輕松的部署函數(shù)、刪除函數(shù)、觸發(fā)函數(shù)、查看函數(shù)信息、查看函數(shù)日志、回滾函數(shù)、查看函數(shù)數(shù)據(jù)等。

Plugin 的使用比較簡(jiǎn)單,可以直接使用 Serverlss Framework 進(jìn)行創(chuàng)建,例如:

    serverless create -t tencent-python -p mytest

然后就會(huì)生成下圖:

Serverless開(kāi)發(fā)者工具的示例分析

這其中,-t 指的是模板,-p 指的是路徑,在 Serverless Plugin 操作下,可以在任何指令中使用 -h 查看幫助信息,例如查看 Serverless Plugin 的全部指令,可以直接:

Serverless開(kāi)發(fā)者工具的示例分析

如果想查看 Create 的幫助:

Serverless開(kāi)發(fā)者工具的示例分析

創(chuàng)建完 Serverless Plugin 的項(xiàng)目之后,我們可以看一下它的 Yaml 長(zhǎng)什么樣子:

Serverless開(kāi)發(fā)者工具的示例分析

通過(guò) Yaml,我們可以看到其從上到下包括了幾個(gè)主要的 Key:Service、Provider、Plugins 以及 Functions。

Service 可以認(rèn)為是一個(gè)服務(wù)或分組,即在一個(gè) Service 下面的函數(shù)是可以被統(tǒng)一管理的,例如部署、刪除、查看統(tǒng)計(jì)信息等。

Provider 可以認(rèn)為是供應(yīng)商以及全局變量的定義場(chǎng)景,這里使用的是騰訊云的云函數(shù),供應(yīng)商是騰訊云,所以就要寫 tencent,同時(shí)在這里還可以定義全局變量,這樣在部署的時(shí)候,會(huì)將這些全局變量分別配置到不同的函數(shù)中。

Plugin 就是插件,Serverless 團(tuán)隊(duì)提供了超級(jí)多的 Plugin,例如上文提到的 serverless-tencent-scf。

最后就是 Functions,是定義函數(shù)的地方。

創(chuàng)建項(xiàng)目,完成代碼編寫和 Yaml 的配置之后,接下來(lái)就是安裝 Plugin:

	npm install

Serverless開(kāi)發(fā)者工具的示例分析

使用相關(guān)功能,例如部署服務(wù):

	serverless deploy

在使用這個(gè)工具部署的時(shí)候,我們并沒(méi)事先指定賬號(hào)信息,所以它會(huì)自動(dòng)喚起掃碼登錄,登陸之后會(huì)繼續(xù)進(jìn)行操作:

Serverless開(kāi)發(fā)者工具的示例分析

操作完成會(huì)看到 Service 信息,這里要注意,如果是使用 CICD,就沒(méi)辦法掃碼了,必須手動(dòng)配置賬戶信息,格式是:

    [default]
    tencent_appid = appid
    tencent_secret_id = secretid
    tencent_secret_key = secretkey

配置完成之后,在 Yaml 中指定這個(gè)文件路徑:

Serverless開(kāi)發(fā)者工具的示例分析

完成部署之后,觸發(fā)函數(shù):

Serverless開(kāi)發(fā)者工具的示例分析

服務(wù)信息:

Serverless開(kāi)發(fā)者工具的示例分析

除此之外,還有很多其它操作,大家有興趣可以都試一下:

  • 創(chuàng)建服務(wù)

  • 打包服務(wù)

  • 部署服務(wù)

  • 部署函數(shù)

  • 云端調(diào)用

  • 查看日志

  • 回滾服務(wù)

  • 刪除服務(wù)

  • 獲取部署列表

  • 獲取服務(wù)詳情

  • 獲取統(tǒng)計(jì)數(shù)據(jù)

需要注意的是,Plugin 是函數(shù)開(kāi)發(fā)者工具,只針對(duì)對(duì)函數(shù)資源的管理(觸發(fā)器除外),不包括 API 網(wǎng)關(guān)、COS、數(shù)據(jù)庫(kù)、CDN 等。另外,在騰訊云函數(shù)中只有命名空間和函數(shù)的概念,但是在 Serverless Framework Plugin 中卻有 Service、Stage 以及函數(shù)的三層概念,同時(shí)云函數(shù)在 Plugin 不支持命名空間,所以我們可以理解為,云函數(shù)只有函數(shù)的概念,而工具卻有服務(wù)、階段和函數(shù)的三層概念,這就會(huì)產(chǎn)生問(wèn)題:Service 和 Stage 是什么?在函數(shù)中怎么體現(xiàn)?

以我們剛才部署的 hello_world 為例:

Serverless開(kāi)發(fā)者工具的示例分析

從上圖可以看到,Service 和 Stage 體現(xiàn)在函數(shù)名和標(biāo)簽兩個(gè)地方。函數(shù)名在簡(jiǎn)單使用時(shí)可能沒(méi)有影響,但如果涉及到函數(shù)間調(diào)用或者是云 API 使用函數(shù)時(shí),就要注意,這里的函數(shù)名并不是在 Yaml 中的函數(shù)名!

當(dāng)然,這里也會(huì)出現(xiàn)另一個(gè)問(wèn)題,即如果用戶已經(jīng)有一個(gè)函數(shù),且這個(gè)函數(shù)不是按照三段式命名的,那么可能沒(méi)有辦法使用 Plugin 進(jìn)行部署,除非把函數(shù)進(jìn)行遷移,將原函數(shù)刪掉,使用 Serverless 重新進(jìn)行部署。

什么是 Serverless Component

Plugin 主要是對(duì)函數(shù)的管理,那么 Component 呢?Component 可以認(rèn)為是云產(chǎn)品的工具,因?yàn)橥ㄟ^(guò) Componnt 可以對(duì)所有的組件進(jìn)行組合使用,甚至還可以很簡(jiǎn)單開(kāi)發(fā)出自己的 Component 來(lái)滿足需求。

Component 的 Yaml 是一段一段的,而 Plugin 的 Yaml 是一個(gè)整體,Component 中前后兩個(gè)組件可能是完全沒(méi)有任何關(guān)系的,例如:

test1:
  component: "@gosls/tencent-website"
  inputs:
    code:
      src: ./public
      index: index.html
      error: index.html
    region: ap-shanghai
    bucketName: test1
 
 
test2:
  component: "@gosls/tencent-website"
  inputs:
    code:
      src: ./public
      index: index.html
      error: index.html
    region: ap-shanghai
    bucketName: test2

通過(guò) Yaml 我們可以看到整個(gè)的代碼可以分為兩部分,是把一個(gè)網(wǎng)站的代碼放到了不同的 Bucket。

目前騰訊云的 Component 的基礎(chǔ)組件包括:

@serverless/tencnet-scf
@serverless/tencnet-cos
@serverless/tencnet-cdn
@serverless/tencnet-apigateway
@serverless/tencnet-cam-role
@serverless/tencnet-cam-policy

封裝的上層 Component 包括:

@serverless/tencnet-express
@serverless/tencnet-bottle
@serverless/tencnet-django
@serverless/tencnet-egg
@serverless/tencnet-fastify
@serverless/tencnet-flask
@serverless/tencnet-koa
@serverless/tencnet-laravel
@serverless/tencnet-php-slim
@serverless/tencnet-pyramid
@serverless/tencnet-tornado
@serverless/tencnet-website

基礎(chǔ) Component 指的是可通過(guò)相關(guān)的 Component 部署相關(guān)的資源,例如 tencent-scf 就可以部署云函數(shù),tencent-cos 就可以部署一個(gè)存儲(chǔ)桶;上層的 Component 實(shí)際上就是對(duì)底層 Component 的組合,同時(shí)增加一些額外的邏輯,實(shí)現(xiàn)一些高階功能,例如 tencent-django 就可以通過(guò)對(duì)請(qǐng)求的 WSGI 轉(zhuǎn)換,將 Django 框架部署到云函數(shù)上,其底層依賴了 tencent-scf/tencent-apigateway 等組件。

相對(duì)于 Plugin 而言,Component 并沒(méi)有那么多的操作,只有兩個(gè):部署和移除。

例如部署操作:

serverless --debug

Serverless開(kāi)發(fā)者工具的示例分析

移除操作:

serverless remove --debug

Serverless開(kāi)發(fā)者工具的示例分析

相對(duì)于 Plugin 而言,Component 的產(chǎn)品緯度是增加了,但是實(shí)際功能數(shù)量是縮減了。不過(guò),這也不是大的問(wèn)題,畢竟 Plugin 可以和 Component 混用,真正需要解決的問(wèn)題是,這兩者的 Yaml 不一樣,如何混用?

Plugin 部署到線上的函數(shù),會(huì)自動(dòng)變更名字,例如函數(shù)是 myFunction,服務(wù)和階段是 myService-Dev,那么函數(shù)部署到線上就是 myService-Dev-myFunction,這樣的函數(shù)名,很可能會(huì)讓函數(shù)間調(diào)用產(chǎn)生很多不可控因素:如果環(huán)境是 Dev,函數(shù)間調(diào)用就要寫函數(shù)名是 myService-Dev-myFunction,如果環(huán)境是 Test,此時(shí)就要寫 myService-Test-myFunction。在我看來(lái),環(huán)境更改只需要更改配置,無(wú)需更改更深入的代碼邏輯,因此這一點(diǎn)會(huì)讓我覺(jué)得不友好;

Plugin 也是有優(yōu)勢(shì)的,例如如果有 Invoke、Remove 以及部署單個(gè)函數(shù)的功能,同時(shí) Plugin 也有全局變量,它像是一個(gè)開(kāi)發(fā)者工具,可以進(jìn)行開(kāi)發(fā)、部署、調(diào)用、查看信息、指標(biāo)以及刪除回滾等操作;

Components 可以看作是一個(gè)組件集,這里面包括了很多的 Components,有基礎(chǔ)的 Components,例如 cos、scf、apigateway 等,也有一些拓展的 Components,例如在 cos 上拓展出來(lái)的 website,可以直接部署靜態(tài)網(wǎng)站等,還有一些框架級(jí)的,例如 Koa,Express;

Components 除了支持的產(chǎn)品多,可以部署框架之外,對(duì)我來(lái)說(shuō),最大吸引力在于其部署到線上的函數(shù)名字就是指定的名字,不會(huì)出現(xiàn)額外的東西;

Components 相對(duì) Plugin 在功能上略顯單薄,除了部署和刪除,再?zèng)]有其他功能。當(dāng)你需要部署多個(gè)東西,并寫在了某個(gè) Components 的 yaml 上,那么即使你只修改了一個(gè)函數(shù),它都需要全部重新部署一遍;

Components 更多的定義是組件,所以在 Components 中是沒(méi)有全局變量的。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

分享名稱:Serverless開(kāi)發(fā)者工具的示例分析
文章起源:http://jinyejixie.com/article8/pgipip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、用戶體驗(yàn)、面包屑導(dǎo)航、網(wǎng)站建設(shè)、App開(kāi)發(fā)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)