大家好,我是霍大俠,本篇我們通過學習部署流行 Web 框架,如 Spring Boot,Express,Web IDE,讓你掌握 Serverless 函式計算架構和技術,領略彈性并發、高可用的好處,下面我將從實踐介紹,實踐演示,分析詳解三個大的章節來一步一步分享,
前言
本文將帶你學習:
- 掌握 Serverless 的概念和架構
- 掌握阿里云函式計算產品的操作和流程
- 部署流行 Web 框架到阿里云函式計算平臺
- 使用 Serverless Devs 客戶端本地部署方法
- 制作自己的 Web IDE 應用
學習事項:
1.難度:入門
2.前提:創建自己的阿里云賬號
3.時長:60 分鐘
4.進入阿里云實驗室:
https://developer.aliyun.com/adc/scenario/fa580ae836224ba6947fc5ec327e4ba1


Serverless 相關概念&實踐
,時長05:17
- 這里從 Serverless 演變;
- 函式計算優勢;
- Serverless 應用場景 3 個方面來學習 Serverless,
宣告注意:本次實驗中使用的阿里云函式計算 FC,物件存盤 OSS 是流量產品,域名服務是預購產品,會產生流量費用和購買費用,請根據自身情況慎重使用,如產生費用,請自行承擔,當然也可以純粹閱讀學習使用,
Serverless 演變
Serverless,函式計算(Function Compute)到底是什么?
Serverless,又叫無服務器,Serverless 強調的是一種架構思想和服務模型,讓開發者無需關心基礎設施(服務器等),而是專注到應用程式業務邏輯上,Serverless 也是下一代計算引擎,比如阿里云平臺 Serverless 產品主要包括阿里云函式計算 FC、Serverless 應用引擎 SAE、Serverless 作業流,所以你可以理解 Serverless 是一種架構思想,
我認為 Serverless 的核心是函式計算,它是一個事件驅動的全托管 Serverless 計算服務,您無需管理服務器等基礎設施,只需撰寫代碼并上傳,函式計算會為您準備好計算資源,并以彈性、可靠的方式運行您的代碼,
通常人們說的云函式也就是指 Serverless,
目前互聯網流行的應用架構主要是從單體架構,到流行的微服務,和現在快速發展 Serverless 架構,可以看到 3 種架構的一些特點,單體架構耦合度高,彈性,擴展性差;微服務改善很多,更靈活,但是運維學習成本也很高,
Serverless 通過事件驅動模式,具有彈性高可用等特點;包括按需付費;免運維都是其強大之處,我相信隨著技術不斷的發展,Serverless 一定是將來非常流行的技術架構,

我們從這個阿里云官方介紹中可以看到 Serverless 針對不同場景的不同形態,隨著 FaaS 出現的標準模板,付費的定制化 FaaS 模板,我相信也會逐步發展起來,也許最終是通過低代碼配置直接 AI 智能生成函式,讓我們拭目以待,
Serverless 函式計算優勢

免運維:不需要管理服務器主機或者服務器行程,
彈性伸縮:根據負載進行自動規模伸縮與自動配置,伸縮范圍零到無窮大,
按需付費:根據使用情況決定實際成本,
高可用:具備隱含的高可用性,
另外云函式不能保存狀態,但是可以通過其他計算服務配合來完善這個,比如用 Redis 或者本地 cookie 可以保存用戶狀態資訊,

Serverless 最核心的一個優勢就是豐富的彈性策略,和靈活呼叫策略,我們可以從圖中看到,它可以靈活配置基礎指標 CPU,記憶體,實體上下限等等,

阿里云函式計算 FC 同時可以聯合云計算的大部分產品服務,形成非常靈活的,低耦合系結,隨用隨拿,通過事件,http,觸發器多種形式呼叫,這個官方流程圖清晰的闡述了函式計算的整個流程,

Serverless 應用場景
大部分行業都可以用 Serverless 架構,比如游戲,在線教育,電商,SaaS 產品,小程式等等,通過核心函式計算和其他 Serverless 產品形成強大的支持,
從這里我們可以詳細了解函式計算的應用細節,感興趣的可以保存,


下面我們再來講一個簡單 Web 網站案例,很多人有疑惑,云函式只是一個函式計算,相當于一個 API 介面,那我如果想結合資料庫,存盤和其他的功能應該怎么辦?
從這個簡單的結構圖大家可以看明白,云函式是需要配合各種云計算服務才能完整的部署我們的復雜的應用程式,我們可以通 CDN 服務來加速展現,可以通過 OSS 來存盤檔案資源,
你也可以理解為云函式部署了你的網站代碼,用 Redis 來保存用戶的會話狀態,重要資料存放到 Mysql 或者 mongoDB 等等,如果需要佇列,日志服務,我們都可以通過平臺提供的產品快速接入,可以滿足大部分常用的應用程式,我們接下來一步一步來學習,

通過實踐介紹們學到了什么是 Serverless,它的優勢和應用場景,Serverless 技術架構還在快速發展,各個云廠商都在發展自己的 Serverless 產品,
如果上面內容有不合適的地方,還請大家給我評論留言,我們一起交流學習,接下來,我們來學習怎樣在 Serverless 上部署流行的 Web 架構,
部署 Web 框架到函式計算
,時長07:48
這個部分我們也是從 3 個方面來學習,先學習函式計算的產品功能;接著部署 Web 框架 Spring Boot;最后實踐部署 Nodejs 框架 Express 的案例,
阿里云函式計算產品功能
廢話不多說,先來看阿里云函式計算的功能都有哪些?
宣告注意:這里需登錄自己阿里云賬號開啟函式計算服務,函式計算服務屬于流量計費,有可能產生流量費用,請慎重使用,如產生費用,請自行承擔,也可以純粹閱讀學習,
- 登錄阿里云網站,點擊頂部登錄,輸入用戶名和密碼,

- 然后點擊左上角產品,在產品服務中找到 Serverless 類別,點擊下面的函式計算 PC,接著就可以看到函式計算的主面板,(如果沒有開通服務的,直接同意開通即可),

- 下面一步一步學習體驗函式計算的產品功能,概覽展示了整體函式計算的呼叫資料和運行環境,

我們接著看選單中第二項應用,我認為這個是一個很好的功能,極大的方便了用戶的門檻,我們可以通過這個功能,快速創建自己的站點和應用,

應用包含了從模板創建和倉庫匯入 2 種方式,后面我會主要演示模板創建的案例,

倉庫模式也可以從你的 Github/Gitee 等常用倉庫中拉取部署,這里不過多贅述,

什么是服務?服務是函式計算資源管理的單位,創建函式前必須先創建服務,同一個服務下的所有函式共享一些相同的設定,例如服務授權、日志配置,從業務場景出發,一個應用可以拆分為多個服務,從資源使用維度出發,一個服務可以由多個函陣列成,例如一個資料處理服務,分為資料準備和資料處理兩部分,資料準備函式資源需求小,可以選擇小規格實體,資料處理函式資源需求大,可以選擇大規格實體,

函式計算的資源調度與運行以函式為單位,函式必須從屬于服務,同一個服務下可以創建多個函式,這些函式共享一些相同的設定,例如服務授權、日志配置,但彼此相互獨立,互不影響,本文介紹函式的屬性和運行環境,以及如何通過函式計算控制臺創建、配置和洗掉函式,
我們可以創建服務后,在其下面創建函式,函式中具體代碼就是你的業務場景的實作,可以從標準 Runtime;平滑遷移 Web Server;容器鏡像;模板創建 4 種形式來創建,

這里展示的是我們之前寫過得一個抽獎大轉盤云函式代碼,主要是通過小程式呼叫云函式,云函式再呼叫 MongoDB 資料,因為當抽獎人多時候,需要很好的并發性,所以我們采用了 MongoDB 和云函式結合,讓用戶在抽獎時候沒有任何卡頓現象,同時用戶少的時候也能節約硬體費用,云函式很好的滿足了我們的需求,


任務其實就是管理異步函式的地方,提供了一個完全托管的,開箱即用的,可觀測友好的大規模任務處理平臺,當您上傳代碼包/容器鏡像創建任務處理函式后,就可以提交、查看、停止和重試任務,也可以暫停/恢復處理函式的執行,點擊這里查看更多詳情,
函式計算高級功能中,主要包含了監控,域名,彈性管理,層管理,監控大盤如圖所示是整體資料的監控,
域名很容易理解就是系結自己的云函式應用,可以 Web 應用,可以是 API 介面,
彈性管理是配置云函式的資源使用上線,防止費用過多,同時還可以配置最小實體,降低冷啟動次數,
層管理提供了公共依賴庫,運行環境等等,函式之前可以共享,減少代碼包體積,
其他更多功能中的審計日志,權限助手,還有作業流,應用引擎功能產品,這里也不在過多闡述,感興趣朋友可以在開發自己云函式時嘗試一下,

1、什么場景需要使用自定義域名?
當您的函式使用 HTTP 請求觸發時,您可能需要使用您自己的自定義域名來訪問您的函式,例如,您創建了一個函式作為 Web 應用,您希望用戶通過固定的域名訪問這個 Web 應用,這時候您就可以為該 Web 應用系結自定義域名,除此之外,您還可以為該域名設定 CDN 加速功能,將部署在函式計算的應用作為源站,把源內容發布到邊緣節點,使終端用戶能快速讀取所需內容,
2、什么是彈性管理?
函式計算為您提供了按量模式和預留模式兩種實體使用模式,您可以配置最大實體數來控制單個函式的資源使用上限,來防止單個函式過度呼叫導致的實體占用,保護后端資源,避免預期外的費用開銷,同時可以通過配置最小實體數來激活預留模式實體,函式計算系統將根據配置的最小實體數為該函式常駐實體,來快速回應函式呼叫請求,降低冷啟動的發生次數,為時延敏感的在線業務提供更好的服務回應,按量模式和預留模式計費方式不同,
3、什么是層?
層可以為您提供自定義的公共依賴庫、運行時環境及函式擴展等發布與部署能力,您可以將函式依賴的公共庫提煉到層,以減少部署、更新時的代碼包體積,也可以將自定義的運行時,以層部署在多個函式間共享,層默認部署在函式執行環境的/opt 目錄下,作為函式可額外附加的代碼目錄,當函式配置多個層時,這些層的內容將被合并至/opt 目錄,
產品功能就講到這里,大家可以從中領悟和梳理下函式計算的操作性和特性點,
部署 Web 框架 Spring Boot
宣告注意:這里需登錄自己阿里云賬號開啟函式計算服務,函式計算服務屬于流量計費,有可能產生流量費用,請慎重使用,如產生費用,請自行承擔,也可以純粹閱讀學習,
接著上面章節的產品功能,我們在左側選單中點擊“應用”,
-
點擊左側選單應用,選擇通過模板創建應用,選擇 Spring Boot 模板,創建前最好先仔細閱讀下詳細中的說明,
-
然后點擊立即創建,進入到詳細頁面,這里我選擇直接部署,

-
應用名稱直接按默認的走,然后點擊創建,

我們會看到創建的一個程序,創建完畢后,可以看到框架已經生成,是不是非常的簡單和傻瓜式啊,


-
點擊訪問域名就可以看到網站頁面了,這是生成的框架首頁,云平臺自動為我們配置了一個子域名,


-
點擊上面創建頁面的查看全部,可以看到創建程序的日志資訊,
部署分為 4 個部分,前置環境;資源同步;資源檢查;執行部署,感興趣的可以仔細閱讀,對了解整體程序還是有一定幫助的,
- 通過底部函式資源中的服務和函式去查看具體內容,

當點擊服務 web-framework 時候,就跳轉到具體的服務和函式資訊里面了,這時候可以看到通過模板創建的 Spring Boot 框架已經部署成果,感興趣的可以查看框架代碼,并且修改代碼,

到這里,我們就全部完成了部署 Spring Boot 框架到函式計算平臺,大家可以自己實驗一下,
部署 Web 框架 Express 案例
宣告注意:這里需登錄自己阿里云賬號開啟函式計算服務,函式計算服務屬于流量計費,有可能產生流量費用,請慎重使用,如產生費用,請自行承擔,也可以純粹閱讀學習,
繼續來部署 Node.js 語言 Express 框架的 TodoList 案例,還是在應用中找到 Express 的 TodoList 案例,
選擇熱門應用,選擇對應模板案例,然后點擊詳情,
我們可以在右側彈出的層中閱讀安裝說明,記得這里我們不用點擊立即創建,我們回到本機來用客戶端創建應用,

這次我們采用開源工具 Serverless Devs 本地部署應用,安裝 Serverless Devs 客戶端前,你本機需要已經預裝了 npm,也就是需要安裝 Node.js 環境,可以在其官網下載node.js:
https://nodejs.org/zh-cn
一定要選擇默認 Paht 加入全域變數中,然后打開 CMD,檢查 node 安裝是否正常,輸入下面命令到 cmd 中,
node -v
如下圖出現版本號,就是正常的,如有其他問題,請自行百度安裝 npm 包環境,

- 先安裝 Serverless Devs,直接從圖中官方檔案可以安裝即可,
https://docs.serverless-devs.com/serverless-devs/install?spm
$ npm install @serverless-devs/s -gbr
如下代表安裝成功,

然后我們通過命令列來配置自己的密鑰,密鑰點擊阿里云右上角頭像圖示,在出現彈層中,選擇“AccessKey 管理”,可以找到自己 key 和 secret,


- 我們打開 Windows 的 cmd 命令提示符工具,來配置密鑰,輸入下面命令:
s config add
根據提示選擇 Alibaba Cloud,一步一步選擇粘貼即可,(在輸入 s 命令前,記得根據上面文中說明,安裝好 Serverless Devs 的客戶端,這里不做詳細指導),

- 初始化模板專案,輸入下面命令,可以看到模板下載到了我們本地中,
s init todolist-app -d todolist-app

- 進入本地目錄,部署云服務到阿里云函式計算平臺中,輸入命令:
cd todolist-app && s deploy
可以在左側看到生成的 domain 就是訪問域名,觸發器形式為 http 形式,包括云函式的名字和配置都一目了然,這里提醒一下,本地用客戶端工具部署的云函式不會在阿里云平臺的應用串列中出現,

- 部署后在控制臺可以看到生成域名,復制域名在瀏覽器上訪問,就會出現此頁面了,如果你修改本地代碼,然后再次運行部署命令,我們的 Serverless 應用就會更新了,

回到云平臺,在左側選單“服務及函式”中可以看到部署的服務,點進去就是剛才的函式,

怎么樣,到這里是不是覺得云函式也不是很難吧,另外大家記得,如果只是練習學習部署應用,可以在學習完成后洗掉掉對應的應用或者服務,防止產生額外的費用,
回顧一下,兩個框架的部署都完成了,超乎想象的簡單哦!
這里提一句,我還是比較滿意阿里云的函式計算產品的 ,尤其是應用這個功能的上線,讓入門者學習,部署更加簡單,
上面的文章中,學會了怎樣部署 Web 應用到函式計算平臺中,
制作 Web IDE
,時長03:19
接下來我來手把手教大家怎樣部署一個屬于自己的 Web IDE 工具,包括怎樣把官方生成的域名配置成自己的域名,

介紹開源 Web IDE 工具
實操之前,我們還是先簡單了解下這個 Web IDE 工具,它是基于 Serverless 架構和 Vscode 的即開即用,用完即走的輕量 Web IDE 服務,具有海量插件;資料實時保存;低成本等特點,
它用 golang 語言實作反向代理訪問,它是基于開源的 openvscode-server,提供了 vscode Web IDE 的功能,感興趣并且會 golang 的朋友,可以了解下本地除錯的方法,

通過基本流程,我們可以學習到這個開源工具的運行原理,便于除錯和二次開發,

這里重點說下開發除錯,如果你需要在本地環境中搭建,要仔細閱讀這里,了解目錄結構和相關配置資訊,

開源工具介紹完畢,我們趁熱打鐵進行實踐吧!
制作自己的 Web IDE 工具
開始制作自己的 Web IDE 工具,按下面的步驟一步步執行即可,
宣告注意:這里需登錄自己阿里云賬號開啟函式計算服務,函式計算服務屬于流量計費,有可能產生流量費用,請慎重使用,如產生費用,請自行承擔,也可以純粹閱讀學習,
- 從官方模板中找到 serverless vscode webide 的模板,點擊立即創建,

宣告注意:物件存盤 OSS 服務屬于流量計費,會產生流量費用,請慎重使用,如產生費用,請自己承擔,當然也可以單純閱讀學習,大家需要注意一點,這個 web ide 工具需要創建 OSS 物件存盤,OSS 便于存盤用戶的資料,創建應用時候,點擊創建新的 OSS 存盤桶,跳轉到 OSS 產品后,直接創建一個 OSS 的 Bucket 即可,點擊紅框下面的創建新的 OSS 存盤桶,

- 跳轉到了物件存盤 OSS 的產品頁面,我們點擊左側 Bucket 串列,然后點擊創建 Bucket,填寫一個名稱 webidepractise,點擊保存即可,
也可以通過這個鏈接提前創建好 OSS 的存盤桶,
https://oss.console.aliyun.com/overview

- 回到應用創建頁面,點擊重繪,選擇剛才創建的 OSS,切記云函式和 OSS 需要在同一個 Region,創建成功后,就會在應用串列中出現,

- 點擊上圖中的配置,可以看到下面頁面,了解下函式的配置情況,紅框中就是我們選擇的 OSS,也可以調整為適合自己的配置,

- 點擊串列中的訪問域名,這里就可以看到的 Web IDE 工具了,你可以在這里打開 Github 倉庫上的代碼,直接在線撰寫程式,是不是非常方便,

- 配置自己的域名(如果沒有購買過阿里云域名,可以忽略下面內容),
宣告注意:這里需從阿里云平臺購買域名,域名會收取費用,請慎重使用,如產生費用,請自己承擔,點擊左側選單域名管理,點擊添加自定義域名,就可以看到這個頁面,在這里配置子域名,然后復制公網 CNAME 域名,點擊云決議 DNS 控制臺來配置域名,

- 點擊云決議 DNS 控制臺后跳轉到了域名決議產品頁面,選擇自己購買過得域名,在域名決議中,我們點擊決議設定就可以配置公網的 CNAME,

- 添加了一條 IDE 的 cname 的子域名記錄,記錄值是從云函式復制過來的,這樣就形成了映射關系,添加完畢,我們回到剛才的云函式域名配置頁面,選擇對應的路由配置,選擇你域名對應的服務名稱,函式名稱,版本名稱,點擊創建,大功告成,

9.接著在瀏覽器中輸入自己的域名,我們的 Web IDE 工具出現了,到這里你是不是有了一絲的興奮,

到這里,我們就學會了制作自己的 Web IDE 工具了,感興趣朋友可以二次開發完善自己的在線工具,
本次實踐所有學習和實踐的知識都已經講完,回顧一下整體的知識,從了解 Serverless 概念,架構,應用場景,到學習操作函式計算的產品,到部署流行 Web 框架,最后我們還制作了一個自己的 Web IDE 工具,
相信對一個入門學習者來說,你能跟著我學習和實踐完成,證明你已經基本掌握了 Serverless,后續可以把你的產品遷移部署過來,也可以在函式計算上開發部署自己的新專案或者新產品,
思考總結
這里給大家幾個問題,思考總結一下:
- Serverless,函式計算是什么關系?
- 你喜歡本地部署還是在線部署?
- 研究一下函式計算怎樣配置實體,怎樣設定最大實體限制?
- 再思考一下...哪些應用都可以遷移到云函式?
點贊,評論,讓我看到你的想法!如果內容中存在不合適的地方,還請大家給我評論留言,我們一起交流學習,
原文地址:
https://developer.aliyun.com/article/987303
更多內容關注 Serverless 微信公眾號(ID:serverlessdevs),匯集 Serverless 技術最全內容,定期舉辦 Serverless 活動、直播,用戶最佳實踐,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502710.html
標籤:其他
上一篇:部署k8s的heapster監控
下一篇:SMO論文中文翻譯
