Serverless 落地实践
.Net Core Serverless初體驗(yàn)
什么是Serverless
Serverless 是一個(gè)當(dāng)今軟件世界中比較新的話題。它并沒(méi)有一個(gè)普遍公認(rèn)的權(quán)威定義,每個(gè)人每個(gè)企業(yè)對(duì)它的解釋可能都有不同,而 Serverless 正是在這種情況下不斷發(fā)發(fā)展的。但是就算如此,有一些 Serverless 的特征還是被廣泛認(rèn)可的:
服務(wù)端的主機(jī)和進(jìn)程完全由供應(yīng)商管理
可以根據(jù)負(fù)載進(jìn)行自動(dòng)伸縮
按照精確的使用情況來(lái)計(jì)費(fèi),就像水和電一樣。(效用計(jì)算)
引用掘金,原文地址:https://juejin.im/post/5c68fdbfe51d4539a569f259
Serverless演進(jìn)
?
在這個(gè)發(fā)展歷程中有以下幾個(gè)漸進(jìn)的里程碑事件:
通過(guò)虛擬化技術(shù)將大型物理機(jī)虛擬成單個(gè)的VM資源。
將虛擬化集群搬到云計(jì)算平臺(tái)上,只做簡(jiǎn)單運(yùn)維。
把每一個(gè)VM按照運(yùn)行空間最小化的原則切分成更細(xì)的Docker容器。
基于Docker容器構(gòu)建不用管理任何運(yùn)行環(huán)境、僅需編寫核心代碼的Serverless架構(gòu)。
引用阿里云,原文地址:https://help.aliyun.com/knowledge_detail/65565.html?spm=a2c4g.11186631.2.1.4f811bbeDYGmvp
阿里云Serverless -?函數(shù)計(jì)算
函數(shù)計(jì)算是事件驅(qū)動(dòng)的全托管計(jì)算服務(wù)。使用函數(shù)計(jì)算,您無(wú)需采購(gòu)與管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫并上傳代碼。函數(shù)計(jì)算為您準(zhǔn)備好計(jì)算資源,彈性地可靠地運(yùn)行任務(wù),并提供日志查詢、性能監(jiān)控和報(bào)警等功能。
借助函數(shù)計(jì)算,您可以快速構(gòu)建任何類型的應(yīng)用和服務(wù),并且只需為任務(wù)實(shí)際消耗的資源付費(fèi)。
引用阿里云,原文地址:https://help.aliyun.com/document_detail/52895.html?spm=a2c4g.11186623.6.541.23dc641aB3U3K0
編寫.Net Core代碼
1. 新建一個(gè).net core控制臺(tái)程序,這里命名為AliyunServerless。
2. 引用阿里云提供的函數(shù)計(jì)算組件Aliyun.Serverless.Core
Install-Package Aliyun.Serverless.Core
3. 按照函數(shù)計(jì)算的要求編寫.Net Core的類與函數(shù),這里用兩個(gè)類與函數(shù)
a. 打印執(zhí)行日志
/// <summary>/// 打印執(zhí)行日志/// </summary>public class LogHandler{public void Handle(Stream input, IFcContext context){ILogger logger = context.Logger;logger.LogInformation($"Handle request: {context.RequestId}");}}b.?打印服務(wù)器IP
/// <summary>/// 打印服務(wù)器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}");}}}說(shuō)明:
? 詳情可參考原文地址:https://help.aliyun.com/document_detail/112379.html?spm=a2c4g.11174283.6.567.206852120XSx37
4. 發(fā)布程序并打包成zip
dotnet publish -c Release?
配置阿里云函數(shù)計(jì)算
1.?費(fèi)用說(shuō)明及免費(fèi)額度
2. 選擇函數(shù)執(zhí)行的地區(qū)
參考入口地址:https://fc.console.aliyun.com/fc/overview/cn-shenzhen
3. 創(chuàng)建服務(wù)及函數(shù)
a. 創(chuàng)建函數(shù)
b. 選擇“事件函數(shù)”,然后“下一步”
c. 配置函數(shù)信息
其中:
“所在服務(wù)”是分組,根據(jù)需要填寫即可。
“函數(shù)名稱”是名稱,根據(jù)需要填寫即可。
“運(yùn)行環(huán)境”選擇dotnetcore2.1。
“函數(shù)入口”要按規(guī)定填寫,模板是{程序集}::{命名空間}.{類名}::{函數(shù)名},這里是:AliyunServerless::AliyunServerless.LogHandler::Handle
“函數(shù)執(zhí)行內(nèi)存”,函數(shù)執(zhí)行需要的內(nèi)存。
“超時(shí)時(shí)間”,函數(shù)執(zhí)行不能超過(guò)設(shè)置的時(shí)間。
d. 執(zhí)行函數(shù)
點(diǎn)擊“執(zhí)行”,可以看到執(zhí)行摘要(執(zhí)行時(shí)間、使用內(nèi)存、執(zhí)行狀態(tài)等)及執(zhí)行結(jié)果:
e. 創(chuàng)建觸發(fā)器
這里用的是“定時(shí)觸發(fā)器”,支持Cron表達(dá)式,調(diào)度最高頻率為1分鐘,暫不支持秒級(jí)調(diào)度;除了“定時(shí)觸發(fā)器”,還有以下的觸發(fā)器類型:
? 有興趣的朋友可以自行研究。
? 配完觸發(fā)器以后,函數(shù)就會(huì)被定時(shí)觸發(fā),由于這里是打印日志,需要配置日志才能看到,本文沒(méi)配置日志,就不演示觸發(fā)效果了。
擴(kuò)展測(cè)試
按照創(chuàng)建函數(shù)的步驟,創(chuàng)建“打印服務(wù)器IP”函數(shù),執(zhí)行并進(jìn)行跟蹤,結(jié)果如下:
1. 多次執(zhí)行(5次不同的RequestId),服務(wù)器IP沒(méi)變(都為21.0.3.3),說(shuō)明分配到同一臺(tái)服務(wù)器上
2. 重新上傳程序包,服務(wù)器IP會(huì)變,但同一個(gè)軟件包服務(wù)器IP不變
a. 第一次重新上傳:
b. 第二次重新上傳:
3. 我選擇的執(zhí)行地區(qū)是“華南1(深圳)”,但是服務(wù)器IP是美國(guó)IP;因?yàn)闊o(wú)服務(wù)器信息,該結(jié)論僅供參考
4. 調(diào)用統(tǒng)計(jì)會(huì)非實(shí)時(shí)(正常現(xiàn)象),大部分業(yè)務(wù)月免費(fèi)額度應(yīng)該足夠使用
源碼地址
https://github.com/ErikXu/AliyunServerless
總結(jié)
以上是生活随笔為你收集整理的Serverless 落地实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WTMPlus 1.1 发布
- 下一篇: 云原生开发框架dapr环境搭建:CLI安