4年前 (2021-03-06)  相关技术 |   抢沙发  577 
文章评分 0 次,平均分 0.0
[收起] 文章目录

serverless是什么?

传统上,我们构建和部署的web应用程序在某种程度上可以控制向服务器发出的HTTP请求。我们的应用程序运行在该服务器上,我们负责为它提供和管理资源。这有几个问题:

1. 即使我们不提供任何请求,我们也要为保持服务器正常运行而收费。

2. 我们负责服务器及其所有资源的正常运行时间和维护。

3. 我们还负责对服务器应用适当的安全更新。

4. 随着使用量的增加,我们还需要管理服务器的扩展。因此,当我们没有那么多的使用量时,我们可以设法缩小它的规模。

对于较小的公司和个人开发者来说,这可能需要处理很多问题。这最终会分散我们对更重要的工作的注意力:构建和维护实际应用程序。在较大的组织中,这是由基础设施团队处理的,通常不是单个开发人员的责任。然而,支持这一点所必需的过程最终可能会减慢开发时间。因为您不能在不与基础架构团队合作的情况下继续构建应用程序来帮助您启动和运行。作为开发人员,我们一直在寻找解决这些问题的方法,而这正是serverless的用武之地。

无服务器计算

无服务器计算(简称Serverless)是一种执行模型,云提供商(AWS、Azure或Google Cloud)负责通过动态分配资源来执行一段代码。并且只对运行代码所使用的资源量收费。代码通常在无状态容器中运行,这些容器可由各种事件触发,包括http请求、数据库事件、排队服务、监视警报、文件上载、计划事件(cron作业)等。发送到云提供程序执行的代码通常是以函数Functions的形式。因此,无服务器有时被称为“Functions as a Service”或“FaaS”。以下是主要云提供商的FaaS产品:

  • AWS:AWS Lambda
  • Microsoft Azure:Azure
  • Google Cloud:Cloud

虽然serverless将底层基础设施从开发人员那里抽象出来,但服务器仍然参与执行我们的功能。

由于您的代码将作为单个函数执行,因此我们需要注意以下几点。

微服务

在向无服务器世界过渡时,我们面临的最大变化是,我们的应用程序需要以函数的形式进行架构。您可能习惯于将应用程序部署为单个RailsExpress monolith app应用程序。但在无服务器的世界中,通常需要采用更基于微服务的体系结构。您可以通过将整个应用程序作为一个整体在单个函数中运行并自己处理路由来解决这个问题。但不建议这样做,因为最好减小函数的大小。我们将在下面讨论这个问题。

无状态函数

您的函数通常在安全(几乎)无状态容器中运行。这意味着您将无法在应用程序服务器中运行在事件完成后很长时间执行的代码,或者无法使用先前的执行上下文来服务请求。您必须有效地假设您的函数每次都在一个新的容器中被调用。

冷启动

由于函数是在一个容器中运行的,该容器是按需启动的,用于响应事件,因此存在一些与此相关的延迟。这称为冷启动。在函数完成执行后,容器可能会保留一段时间。如果在此期间触发另一个事件,它的响应速度会快得多,这通常称为热启动。

冷启动的持续时间取决于特定云提供商的实现。在AWS Lambda上,它的范围从几百毫秒到几秒钟不等。它可以取决于所使用的运行时(或语言)、函数的大小(作为一个包),当然还有所讨论的云提供者。随着云提供商在优化低延迟时间方面做得更好,冷启动在过去几年中有了很大的改进。

除了优化函数之外,您还可以使用一些简单的技巧,比如使用单独的计划函数每隔几分钟调用一次函数,以保持函数的活跃。我们将在本教程中使用的无服务器框架有一些插件可以帮助您保持函数的活跃度。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/1637.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册