判定无服务器计算是否适合你的业务需求
为了帮助判定无服务器计算是否适用,我们先来了解什么是无服务器计算。
什么是无服务器计算?
可将无服务器计算视为一种函数即服务 (FaaS),或者一种托管在云平台上的微服务。 业务逻辑以函数的形式运行,用户无需手动预配或缩放基础结构。 基础结构由云提供程序管理。 应用会自动扩大或缩小,具体取决于负载。 Azure 有几种构建此类体系结构的方法。 两种最常见的方法是 Azure 逻辑应用和 Azure Functions,本模块将重点介绍这两种方法。
什么是 Azure Functions?
Azure Functions 是一个无服务器应用程序平台。 它允许开发人员托管无需预配基础结构即可执行的业务逻辑。 Azure Functions 具有内在的可伸缩性,而且你只需为使用的资源付费。 你可以使用自己选择的语言来编写函数代码,包括 C#、Java、JavaScript、Python 和 PowerShell。 它也支持 NuGet 和 NPM 等包管理器,因此你可以在业务逻辑中使用常用的库。
无服务器计算解决方案的优势
无服务器计算是在云中托管业务逻辑代码的绝佳选择。 借助 Azure Functions 等无服务器产品/服务,你可以使用自己选择的语言编写业务逻辑。 可以实现自动缩放,无需管理服务器,并且仅根据使用量(而不是预留时间)计费。 下面是无服务器解决方案值得注意的一些其他特性。
避免基础结构的过度分配
假设已预配虚拟机 (VM) 服务器,并为它们配置了足够的资源来处理高峰负载。 负载较轻时,可能需为未使用的基础结构付费。 无服务器计算通过自动缩放来帮助解决这种分配问题,并且只有在函数处理工作时才会计费。
无状态逻辑
无状态函数非常适合无服务器计算;可按需要创建和销毁函数实例。 如果状态为必需,可将其存储在关联的存储服务中。
事件驱动
Functions 是事件驱动的。 它们仅为响应事件(该事件被称为“触发器”)而运行,例如接收 HTTP 请求或将消息添加到队列。 将触发器配置为函数定义的一部分。 此方法允许声明数据的来源(触发器/输入绑定)及其去向(输出绑定),从而简化了代码。 无需编写代码来监视队列、blob、中心等等。 可完全专注于业务逻辑。
Functions 可用于传统的计算环境
Functions 是无服务器计算的关键组件,但是它们也是用于执行任何类型代码的常规计算平台。 如果应用的需求发生变化,可以将项目部署至非无服务器环境。 这样可以灵活地管理缩放,在虚拟网络上运行,并完全隔离函数。
无服务器计算解决方案的缺陷
消耗计划中 Azure Functions 提供的无服务器计算并不总是托管业务逻辑的适当解决方案。 下面是函数的一些特性,这些特性可能会影响你是否决定在无服务器计算中托管服务。
执行时间
默认情况下,函数的超时时间为 5 分钟。 最多可将此超时时间配置为 10 分钟。 如果函数需要的执行时间超过 10 分钟,可将其托管在 VM 上。 此外,如果服务是通过 HTTP 请求启动的,并且希望将该值作为 HTTP 响应,则可将超时进一步限制为 2.5 分钟。 然而,还有一个称为“Durable Functions”的选择,可以在不出现超时的情况下协调多个函数的执行。
执行频率
另一个特征是执行频率。 如果希望客户端连续执行函数,谨慎的做法是估计使用量并相应地计算使用函数的成本。 在 VM 上托管服务可能会更便宜。
函数缩放时,每 10 秒只能创建一个函数应用实例,最多可创建 200 个实例。 请记住,每个实例都可以为多个并发执行提供服务,因此对单个实例可处理的流量并未设置限制。 不同类型的触发器具有不同的缩放要求,因此请研究自己选择的触发器并调查其限制。