Serverless 是一個當今軟件世界中比較新的話題。它並無一個廣泛公認的權威定義,每一個人每一個企業對它的解釋可能都有不一樣,而 Serverless 正是在這種狀況下不斷髮發展的。可是就算如此,有一些 Serverless 的特徵仍是被普遍承認的:html
引用掘金,原文地址:https://juejin.im/post/5c68fdbfe51d4539a569f259git
在這個發展歷程中有如下幾個漸進的里程碑事件:github
引用阿里雲,原文地址:https://help.aliyun.com/knowledge_detail/65565.html?spm=a2c4g.11186631.2.1.4f811bbeDYGmvp服務器
函數計算是事件驅動的全託管計算服務。使用函數計算,您無需採購與管理服務器等基礎設施,只需編寫並上傳代碼。函數計算爲您準備好計算資源,彈性地可靠地運行任務,並提供日誌查詢、性能監控和報警等功能。架構
藉助函數計算,您能夠快速構建任何類型的應用和服務,而且只需爲任務實際消耗的資源付費。less
引用阿里雲,原文地址:https://help.aliyun.com/document_detail/52895.html?spm=a2c4g.11186623.6.541.23dc641aB3U3K0運維
1. 新建一個.net core控制檯程序,這裏命名爲AliyunServerless。函數
2. 引用阿里雲提供的函數計算組件Aliyun.Serverless.Corepost
Install-Package Aliyun.Serverless.Core
3. 按照函數計算的要求編寫.Net Core的類與函數,這裏用兩個類與函數性能
a. 打印執行日誌
/// <summary> /// 打印執行日誌 /// </summary> public class LogHandler { public void Handle(Stream input, IFcContext context) { ILogger logger = context.Logger; logger.LogInformation($"Handle request: {context.RequestId}"); } }
b. 打印服務器IP
/// <summary> /// 打印服務器IP /// </summary> public class IpHandler { public void Handle(Stream input, IFcContext context) { ILogger logger = context.Logger; var ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); logger.LogInformation($"Handle request: {context.RequestId}"); foreach (var ipAddress in ipHostInfo.AddressList) { logger.LogInformation($"IP Address:{ipAddress}"); } } }
詳情可參考原文地址:https://help.aliyun.com/document_detail/112379.html?spm=a2c4g.11174283.6.567.206852120XSx37
4. 發佈程序並打包成zip
dotnet publish -c Release
1. 費用說明及免費額度
2. 選擇函數執行的地區
參考入口地址:https://fc.console.aliyun.com/fc/overview/cn-shenzhen
3. 建立服務及函數
a. 建立函數
b. 選擇「事件函數」,而後「下一步」
c. 配置函數信息
其中:
「所在服務」是分組,根據須要填寫便可。
「函數名稱」是名稱,根據須要填寫便可。
「運行環境」選擇dotnetcore2.1。
「函數入口」要按規定填寫,模板是{程序集}::{命名空間}.{類名}::{函數名},這裏是:AliyunServerless::AliyunServerless.LogHandler::Handle
「函數執行內存」,函數執行須要的內存。
「超時時間」,函數執行不能超過設置的時間。
d. 執行函數
點擊「執行」,能夠看到執行摘要(執行時間、使用內存、執行狀態等)及執行結果:
e. 建立觸發器
這裏用的是「定時觸發器」,支持Cron表達式,調度最高頻率爲1分鐘,暫不支持秒級調度;除了「定時觸發器」,還有如下的觸發器類型:
有興趣的朋友能夠自行研究。
配完觸發器之後,函數就會被定時觸發,因爲這裏是打印日誌,須要配置日誌才能看到,本文沒配置日誌,就不演示觸發效果了。
按照建立函數的步驟,建立「打印服務器IP」函數,執行並進行跟蹤,結果以下:
1. 屢次執行(5次不一樣的RequestId),服務器IP沒變(都爲21.0.3.3),說明分配到同一臺服務器上
2. 從新上傳程序包,服務器IP會變,但同一個軟件包服務器IP不變
a. 第一次從新上傳:
b. 第二次從新上傳:
3. 我選擇的執行地區是「華南1(深圳)」,可是服務器IP是美國IP;由於無服務器信息,該結論僅供參考
4. 調用統計會非實時(正常現象),大部分業務月免費額度應該足夠使用