Skip to content

Serverless云开发

serverless云开发

分成两大类

faq

0.1 使用serverless应该注意的参数

Serverless服务提供商会限制函数的并发执行数

0.2 降低冷启动时间的方法

看下面这两篇就够了
https://aws.amazon.com/cn/blogs/china/4-solutions-to-reduce-the-cold-start-time-of-aws-lambda/
https://www.alibabacloud.com/help/zh/function-compute/latest/best-practice-for-reducing-the-cold-start-latency

python / nodejs / ruby 冷启动时间比较少,相关依赖(比如 requirements.txt)一般都会有缓存的,不会占用很多时间。

  • 减少代码包的大小能减少下载时间。
  • 选择脚本语言: 对于 python/nodejs 大部分冷启动都在 50ms 内
  • 预留实例(比如 onnx 模型一般就要预留至少几个实例吧,用户多的时候再启动多个)

当然,除了上述文章提到的通用问题,你自己写的代码的启动时间也是一个重要的优化点(比如加载 onnx 模型....)

0.3 能对接数据库吗?

可以,也能对接 COS 之类的 持久化存储

0.4 哪家厂家好?

summary

  • 是什么
    • FaaS + BaaS
      • FaaS: Function 函数即服务(相当于不用自己用 FastApi 搭建框架了,你只需要提供函数,是不是贼方便)
      • BaaS
        • 比如一般是 代码配套下面的几个东西
          • 云数据库
          • 云存储
          • 前端网页托管
        • 不跟代码放在一台服务器上的原因
          • 安全性,一个服务崩溃或者被攻击,数据还在,数据不用担心被攻击的事情(因为直接用阿里云的数据库)
          • 省钱,可以按需买存储
          • 流量
    • Serverless应用并非不需要服务器作为计算资源,正确的理解是应用开发人员无需关注计算资源的获取和运维,由平台来按需分配计算资源,并保证应用执行的SLA。
    • 我们可以看到容器技术(LXC, CGroup等)非常适合用于提供Serverless的计算环境。每次系统接收到事件,动态启动容器来执行业务逻辑即可。这也是为什么有人戏称 “Serverless” Is Basically CGI In Containers
    • 无服务器方案中仍然有服务器,但它们已从应用开发中抽离了出来。云提供商负责置备、维护和扩展服务器基础架构等例行工作。开发人员可以简单地将代码打包到容器中进行部署。
    • 部署之后,无服务器应用即可响应需求,并根据需要自动扩容。公共云提供商的无服务器产品通常通过一种事件驱动执行模型来按需计量。因此,当无服务器功能闲置时,不会产生费用。

tutorial

1 产品类型

  • google 云给了非常详细,直观的产品方案: 应用托管方案  |  Hosting Options  |  Google Cloud
  • 函数计算 FC
  • SAE
  • 面向容器编排的 Serverless Kubernetes
    • 全托管:Master 节点和 Worker 节点完全由云来管理,只提供 API 来调用,一般按照实际的 CPU 和内存使用来计费
    • 半托管:Master 节点由云来管理,自行购买 Worker 节点。可以修改部分 Master 节点的配置,所有容器在自己的机器上运行
    • 全独立:Master 节点和 Worker 节点都由用户管理,云只负责节点的初始化和小部分维护工作。可以修改几乎所有 Master 的配置,整个集群完全独立
  • 面向容器实例的 ECI 等

厂家列表

https://laf.run/ laf 云开发
https://webify.cloudbase.net/ 腾讯云 weblify

案例

  • uniapp + unicloud serverless 全栈开发

Last update : 2023年12月4日
Created : 2023年12月4日

Comments