什么是 Serverless 计算
在传统的计算模型中,我们需要自己租赁物理机或虚拟机,配置好运行环境和服务器,部署我们的应用程序,然后手动维护和扩展。
但是在 Serverless 计算中,这一切都由云提供商来处理。我们不再需要关心基础设施的配置、运行环境、服务器的维护和扩展,我们只需要写好我们的代码,上传到云端,然后让云提供商代为运行。
目前市面上常见的 Serverless 计算产品有 AWS Lambda, Azure Functions, Google Cloud Functions 等等。
Serverless 计算的优点
1. 节省成本
在传统计算模型中,我们需要自己购买或租赁物理机或虚拟机,然后需要配置和维护服务器和运行环境。这些工作都需要花费一定的金钱和时间。
但是在 Serverless 计算中,我们可以只按照我们的需求来使用计算资源,只需要支付我们代码运行的时长和调用次数,大大降低了我们的运维成本。
2. 快速响应
在 Serverless 计算中,我们的应用程序代码已经被编译,打包和优化,可以直接在云端运行,无需再进行任何额外的处理,因此可以快速响应用户的请求。
3. 高可靠性
在传统计算模型中,我们需要管理服务器和运行环境,我们需要确保服务器的稳定和运行环境的一致性。而在 Serverless 计算中,所有的服务器和运行环境由云提供商来管理,我们只需要关注我们的应用程序代码和数据,减少了出错的可能性。
内存管理技巧
1. 了解内存大小和配额
在 Serverless 计算中,每个函数所分配的内存大小都有一个最大配额,如果我们的代码需要使用超过这个限制的内存,就会导致函数失败,因此我们需要了解我们函数的内存配额。
在 AWS Lambda 中,每个函数所分配的内存大小从 128 MB 到 3008 MB,每 64 MB 为一段,不同内存大小下运行的计算能力也会不同,价格也会有所不同。
在 Azure Functions 和 Google Cloud Functions 中,内存大小也可以自定义,最大可达到 2 GB。
2. 了解内存使用情况
在编写 Serverless 函数时,我们需要谨慎的控制内存的使用,因为影响函数性能的一个重要因素是函数所使用的内存大小。
我们可以在函数中调用内置 process.memoryUsage()
方法,获取我们代码所使用的内存大小,包括堆内存、非堆内存、代码占用的内存等等。
----- ----------- - ---------------------- ------------------------- -- - ---- --------- ---------- -------- --------- -------- --------- ---- -
3. 减少内存使用
我们可以通过以下方式来减少函数所使用的内存:
a. 缓存常用资源
我们可以将常用的资源,如数据库连接、文件、图片等,缓存在内存中,避免多次读取和访问。
-- ------- --- ------------- -------- ----------------- - -- --------------- - ------------ - --------------------- - ------ ------------- -
b. 使用流式处理
如果我们的代码需要处理大量的数据,我们可以使用流式处理来减少内存使用,避免一次性读取和处理所有数据。
-- ---------- ----- -- - -------------- ----- -------- - -------------------- ----- ---------- - -------------------------------- ----- ---------- - -------------------------- ------ ---------- --- --------------------- ------ -- - -- ------ ---
c. 避免全局变量
全局变量在函数的整个生命周期内都存在,如果我们定义了过多的全局变量,就会导致函数的内存占用过大。
-- ----------- --- ------- - ---- --- ------- - ---- --- ------- - ---- ---------------------- - ----- --------------- -------- - -- ---- -
4. 测试性能
在编写 Serverless 函数时,我们需要测试我们的代码中所使用的内存大小和 CPU 使用情况,以保证我们的代码可以高效稳定的运行。
我们可以使用一些工具和服务来测试和监控我们的函数,如 AWS X-Ray, Azure Application Insights, Google Cloud Trace 等等。
总结
Serverless 计算是未来的趋势,它可以大大降低我们的运维成本、提高我们的代码的响应速度和可靠性。在编写 Serverless 函数时,我们需要谨慎的控制内存的使用,通过缓存常用资源、使用流式处理、避免全局变量等方式来减少函数所使用的内存。同时我们需要测试和监控我们的函数性能,保证我们的代码可以高效稳定的运行。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/649be8c448841e98948ab78e