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. 调用统计会非实时(正常现象),大部分业务月免费额度应该足够使用