【云原生】Serverless 架构实现对比

1. 头条 ByteFaas 架构
来自:掘金2022开发者大会微服务与Serverless(侵权删)

如何解决冷启动问题
减少冷启动频率
减少冷启动速度


2. Knative 如何解决的调度:
Autoscaler(自动伸缩器)和 Activator(激活器)
Knative Serving为每个Pod注入QUEUE代理容器(queue-proxy),该容器负责向Autoscaler汇报业务容器的并发指标。Autoscaler接收到这些指标之后,会根据并发请求数及相应的算法,调整Deployment的Pod数量,从而实现自动扩缩容

基于流量请求数实现服务自动扩缩容
Autoscaler基于每个Pod的平均请求数(并发数)进行自动扩缩容,默认并发数为100。Pod数=并发请求总数/容器并发数。如果服务中并发数设置为10,并且加载了50个并发请求的服务,则Autoscaler就会创建5个Pod。Autoscaler实现了两种操作模式的缩放算法,Stable稳定模式和Panic恐慌模式:
Stable稳定模式。在稳定模式下,Autoscaler调整Deployment的大小,以实现每个Pod所需的平均并发数。Pod的并发数是根据60秒窗口内接收所有数据请求的平均数来计算的。
Panic恐慌模式。Autoscaler计算60秒窗口内的平均并发数,系统需要1分钟稳定在所需的并发级别。但是,Autoscaler也会计算6秒的恐慌窗口,如果该窗口达到目标并发的2倍,则会进入恐慌模式。在恐慌模式下,Autoscaler在更短、更敏感的紧急窗口上工作。一旦紧急情况持续60秒后,Autoscaler将返回初始的60秒稳定窗口。
| Panic Target---> +--| 20 | | | <------Panic Window | | Stable Target---> +-------------------------|--| 10 CONCURRENCY | | | | <-----------Stable Window | | | --------------------------+-------------------------+--+ 0 120 60 0 TIME
3. KEDA 一个基于事件驱动的伸缩控制器
keda是一个基于事件驱动的伸缩控制器,可以实现应用缩容至0,以及从0开始扩容。目前已支持像CPU/Memroy、Mysql、Prometheus、Redis等20多种事件来源(Scaler)。

参考
knative指南