在当前越来越注重用户体验的时代,对于前端开发人员来说,网站的性能和稳定性更加重要。但是服务器总是不可避免的会出现故障,直接导致网站的不可用,给用户和运维人员带来很多麻烦和压力。怎样在尽可能降低成本的前提下解决这个问题呢?本文将为你介绍 Serverless 架构的相关知识及实践,解决这个问题。
什么是 Serverless?
Serverless 是一种全新的云计算范式,它无需运维人员关注服务器的管理和配置,也无需提前开辟资源,由云平台根据实际业务流量自动扩缩容,当需要进行业务逻辑计算时,才会启动计算资源,适用于事件驱动的操作,例如后端处理、批量处理等。
常见应用场景
对于前端类的应用,特别适合 Serverless 架构。例如,对于移动端 APP 中的消息推送、上传图片和生成二维码等操作,需要实时响应、高并发处理和少量业务计算的场景,Serverless 都可以优轻松轻松解决。在游戏场景中,也可以使用 Serverless 处理一些游戏数据上报、用户行为采集等操作。
Serverless 架构优劣
相较于传统的服务器架构,Serverless 架构出现后,越来越被广泛应用。因为架构优点明显:
1. 高可拓展性
Serverless 计算按需自动缩扩容,使系统可以支持高频次临时任务。这种计算自动缩扩容特性给用户带来了更快、更不可预测的状态响应。
2. 低实现成本
对于小型网站,架设自己的服务器可能成本过高,但对于 Serverless,没有昂贵的预付增量服务和硬件费用。Serverless 可以基于使用时间和流量进行定价,只有在真正使用的时候,才会被计算,有效节约了成本。
3. 轻松部署与管理
Serverless 对于开发者来说,意味着没有服务器配置和管理的麻烦,他们可以关注自己的业务逻辑。而 DevOps 方式下,需要关注在系统内的服务器配置、部署和扩展等问题。
但是,Serverless 也有其劣势,例如:
1. 冷启动耗时
Serverless 框架每次启动都需要时间,因此对于计算量较大的任务,可能会造成延迟。
2. 框架限制
Serverless 框架需要符合特定的标准,因为无法绕过某些独立于计算内设置的限制。因此一些复杂的应用和架构可能不能满足。
3. 可移植性
Serverless 是基于云服务提供商的特定平台实现的,因此不容易跨平台或迁移。
4. 依赖限制
Serverless 计算常常依赖于第三方工具和库。虽然这不一定是一个问题,但受限制于平台运行的许多库和工具可能或多或少地受到一些限制。
Serverless 类应用示例
以下是用 Serverless 架构实现的一个简单网站的示例。
对于这样的基础部署,你可以在 Serverless 平台下选择一款符合你使用场景的框架来进行部署,在 Azure 平台上,我们选择了 Azure Function。
首先,建立一个 HelloWorld 项目,为了快速开始我们可以使用 Express 框架:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ---------------------- ----- ---- -- - --------------- -------- -- ---------------- -- -- - ------------------- -- --------- -- ----------------------- --
在 Express 中定义了一个路由,只有 /helloworld
路由会回复 Hello World!
。现在是需要将这个 Express app “Serverless 化” ,就可以使用 Azure Function 中的 HTTP Trigger,这个 HTTP 即作为触发器用于触发 Function 的执行。将前文的代码部分完事,再加上到 trigger.js 中:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ---------------------- ----- ---- -- - --------------- -------- -- -------------- - ----- -------- --------- ---- - ----------- - - -- -- -------- ---- ----- ----- -------- ------------ -- --
现在,部署了一个名为 Serverless-helloworld 的 Azure Function,使用 http://localhost/api/Serverless-Helloworld 就可以调用。
总结
总之,Serverless 计算和部署是一个快速的、易于管理和低成本的选择,特别适合以事件形式的应用场景。正如我们前面所述,Serverless 对于一些需要灵活扩展、成本低、部署简单的应用场景非常适合,应用价值很高,但它也有一些限制和瓶颈。我们需要充分考虑它的优势和劣势来选择 Serverless 计算是否适合我们的业务场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f9cceff6b2d6eab312f5cb