打造更稳定的 Serverless 业务 | D2 分享视频+文章

本文涉及的产品
简介: Hi,大家好,在 2020.12 月的 D2,我为大家做了一场紧凑的微分享,话题为《打造更稳定的 Serverless 业务》。

作者 | 张挺

点击查看视频

Hi,大家好,在 2020.12 月的 D2,我为大家做了一场紧凑的微分享,话题为《打造更稳定的 Serverless 业务》。时间关系,大约只有 20 分钟,为在 Serverless 世界中踟躇的同学们抛砖引玉,让大家了解下我们在做什么。

从大促说起

除了开发和维护 MidwayJS 这一框架体系,提供应用、函数、一体化解决方案外,我们也在 Serverless 的 Runtime 层面有所涉猎。

在 2020 年,我们开放了 Midway Serverless 框架和一体化方案,弥补了 Midway 在 Serverless 方面的缺失,也朝着多场景框架又迈出了一步。

除了社区,阿里内部的 Serverless 业务也蓬勃发展,淘系,飞猪,考拉,高德等 BU 的业务都已经扬帆起航,整体达到规模比去年增长了 10 倍,承接的流量也比同期翻了 6 倍,可以说,Node.js Serverless 已经真正的站稳了脚跟,和原有的 Node.js 应用体系共同支撑起了阿里的前端业务。

image.png
高德也在”十一出行节“再创新记录,提前达到了目标。
image.png

稳定性保障

去年这个时期,我们 Node.js Serverless 还处在一个起步的阶段,还在做研发保障,平台基建的事情。经历了去年的 ”研发模式升级“ 战役之后,整个发布平台,构建体系,以及开发、调试的能力都经过了重塑,已经达到了可以研发业务上线的要求。

随着使用 BU 的不断增多,业务对稳定性也提出了更高的要求,这迫使我们对此需要提供更多的能力。”稳定性“就是随之而来的最大的考验。

对此,我们在 2020 年大促做好了大考准备。针对双促,除了传统的压测,盘点之外,今年由于加入了 Serverles 场景,额外增加了针对 Node.js Serverless 的稳定性保障。

整个额外保障分为如下三块,我们将一一阐述。

image.png

强弱依赖分析

第一块是强弱依赖分析。利用 技术手段 将业务调用的下游依赖分析出来,明明白白的展示给业务开发,让其清楚的知道,哪些是 ”强依赖“,哪些是 ”弱依赖“。

所谓的强依赖,是业务直接依赖的下游,如果该下游出现问题,会直接反应到业务本身,造成不可预估的影响,而弱依赖,则是下游出现问题,业务本身不影响或者只影响少许。

如图上的业务依赖,当业务 B 出现问题,依赖 C 包含了一部分业务 B 的数据,业务 A 的系统可以继续稳定的运行,这样子业务 B 对于业务 A 来说就是一个 ”弱依赖”,而业务 C 则是一个强依赖(单条链路)。

当然这是一个理想情况,业务本身会相对复杂,数据接口可能业务非常繁杂,随着时间的推移,还会经常更新迭代,无法人肉沉淀。

这个时候,我们使用了一种依赖分析手段,这套技术,是监控的副产物,由 Alinode 提供的底层带来的能力,详细不久大家就会看到一个全新的 Alinode。

Ainode 是阿里 Node.js 架构组维护的 Node.js 运行时,在社区的 Node.js 运行时之上提供了一系列监控、诊断优化能力。

image.png
在拿到强弱依赖之后,我们会推进业务的改进,当然,这个改进本质上是一个自我梳理的过程,并不一定需要把强依赖都变成弱依赖,是一个降低业务依赖风险的过程。

改进的方法也有不少,比如把数据降级,加缓存,或者增加新的数据源,做好不同的数据隔离和错误处理等等。

流量模型预估

第二块是流量模型的预估。

传统的流量模型是“流量(QPS + 机器数)的评估,在 Serverless 场景下,情况以然不同,这里主要有两点情况:

1、容器的数量对业务来说可能已经不太关心,业务希望只需要提供总流量就可以上线

2、平台的单容器承载单位为并发数,这不符合平常业务的换算单位

这导致了开发很难一次性将业务上线,需要额外关心单个容器,能够承载多少流量,然后再将流量和并发度进行转换,这个过程很容易出错且不高效。
image.png

这一层的含义是,对已知的流量做预估,而不是未知的流量。比如抢红包,是每个整点,那么每个整点的流量可能会有新高,真个流量就是已知的流量。未知的突然流量,是不应该被允许到达业务代码,尽可能在网关层之前就被拦截掉。

针对已经的流量,如何反向预估需要多少资源消耗,虽然用户不关心,但是我们的平台侧上线时还是需要计算,并给出推荐的值,这其中有两个方式。

一是计算出单个容器在单一接口符合业务要求的情况下,比如满足 RT 要求,计算出单容器合理的 QPS 和并发度,这个时候,我们已经可以拿这个值去设置函数的单容器并发以及容器数。

二是通过网关,在业务上线引入流量的时候进行流量测算,是否真的满足上述的场景,根据实际的流量,我们可以动态的调整预留的实例数和弹性的实例比率,以达到最佳的资源配比。

image.png

并发度测算是基于”拥塞控制算法”来得出的,整套产品需要配套平台基建来做,后续我们会针对这个方案进行更细致的分享,欢迎关注 MidwayJS。

多层流量管控

前两项其实都是在业务上线前做的,而流量管控,则是运行时层面实时的处理。

在一般的场景下,我们有多个网关来管理所有的流量。以阿里内部为例,我们有两层网关,分别为通用网关和函数特有的网关,其之下,则是函数容器本身。

当流量来临时,先经过通用网关,路由到函数网关,再根据域名和路径,从函数网关查询特定的函数信息,将流量打入函数。

每一层都需要一定的流量管控。在特定的场景下,经过通用网关的流量是相对较大的(由于函数的数量不定,且为弹性),通用网关的流量限制一般为函数网关所能经过的最大流量。

image.png
当流量到达函数网关时,网关才会相应的去计算到达函数的流量,进行更细粒度的流量控制。而函数网关层面的流量管控,指的则是面向单一函数容器(或是单一函数业务)的限制。

在函数网关的流量管控中,着重是希望将特定的流量打入到特定的函数中,防止不同的函数,使用不同的功能。

而在函数容器本身,我们还做了第三道防护,除了第二点的流量测算外,额外还有防雪崩的作用。

所谓的防雪崩,是防止当一个(或者多个)容器无法工作,所有流量打到其他容器,导致其他容器批量无法工作的情况。

在每个容器都做了这样的防护,才算是真正的将风险降到最低。

image.png
这是一个微分享,也是我们这一年来的一些在 Serverless 稳定性方面的总结。其实整个都是出现问题,到解决问题的思考过程,希望大家能够有所收获。

最后:
image.png


🔥第十五届 D2 前端技术论坛 PPT 集合已放出,马上获取

image.png
关注「Alibaba F2E」
回复 「PPT」一键获取大会完整PPT

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3月前
|
Serverless PyTorch 文件存储
EMAS Serverless文件存储问题之上传视频真机报错如何解决
在进行Serverless应用开发和部署时,开发者可能会遇到不同类型的报错信息;本合集着重收录了Serverless环境中常见的报错问题及其解决策略,以助于开发者迅速诊断和解决问题,保证服务的连续性和可用性。
399 1
|
9月前
|
弹性计算 运维 监控
我的 Serverless 实战 - 第一个Serverless应用(附演示视频)
我的 Serverless 实战 - 第一个Serverless应用(附演示视频)
168 0
|
消息中间件 存储 弹性计算
实战 | 基于 Serverless 技术的视频截帧架构如何实现?
视频直播是一种创新的在线娱乐形式,具有多人实时交互特性,在电商、游戏、在线教育、娱乐等多个行业都有着非常广泛的应用
193 0
实战 | 基于 Serverless 技术的视频截帧架构如何实现?
|
机器学习/深度学习 运维 自然语言处理
硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普
“使用阿里云容器服务 Knative,解决了开发迭代慢的问题,加速了深度学习模型的性能提升;同时提供了弹性可伸缩的资源配置,满足网络服务需求,降低了服务部署成本。”
硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普
|
存储 弹性计算 运维
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
223 0
serverless 学习 | QCon2022-深圳: 美团基于 Serverless 的前端研发体系建设和业务实践
|
Serverless 数据处理 开发者
serverless 入门与实践47 | 学习笔记: 应用 Serverless 化,让业务开发心无旁骛
serverless 入门与实践47 | 学习笔记: 应用 Serverless 化,让业务开发心无旁骛
214 1
serverless 入门与实践47 | 学习笔记: 应用 Serverless 化,让业务开发心无旁骛
|
运维 自然语言处理 Kubernetes
应用 Serverless 化,让业务开发心无旁骛
本文是在 2022 杭州云栖大会上分享的内容。伴随着云产品的全面 Serverless 化,应用架构也发生了很大变化,我们认为应用 Serverless 化是未来的趋势,可以让业务开发更加心无旁骛的聚焦业务创新。
78681 11
应用 Serverless 化,让业务开发心无旁骛
|
存储 运维 算法
企业如何利用 Serverless 快速扩展业务系统?
2022 年 9 月 24 日,阿里云用户组(AUG)第 12 期活动在厦门举办。活动现场,阿里云高级技术专家史明伟(花名:世如)向参会企业代表分享了《未来已来——从技术升级到降本提效》。本文根据演讲内容整理而成。
企业如何利用 Serverless 快速扩展业务系统?
|
人工智能 Cloud Native Serverless
今晚18:00,阿里云视频号 Serverless 开讲!
从云计算到云原生再到 Serverless 架构,技术不断更新迭代也在飞速发展,被誉为云计算 2.0 的 Serverless 架构从何而来,因何而生?
今晚18:00,阿里云视频号 Serverless 开讲!
|
人工智能 安全 前端开发
【音频】如何保证Serverless业务部署更新的一致性|学习笔记
快速学习【音频】如何保证Serverless业务部署更新的一致性。
169 0
【音频】如何保证Serverless业务部署更新的一致性|学习笔记

相关产品

  • 函数计算