先说下背景,跨境电商,主要是 tiktok 直播带货,我们是下游平台,平台技术架构是用 aws serverless lambda, api gateway 和 dynamodb
一开始 aws 是给了 3000 的 concurrency quota, 后来业务爆发性增长,年中时我们向 aws 申请加到了 5 万 lambda 并发数,本来以为应该可以应付一切了,但上星期日志出现了大量 500 internal server error, 原来是达到 5 万+了,我们问了下 aws 技术支持,说我们当天的峰值到达了 12 万+ req/s
导致大量商家无法创建下游订单, 大老板直接提了个要求是不允许再发生这种情况, 要求要扛住至少 200 万 请求
Api gateway 和 dynamodb 是没性应限制的,主要是 lambda 并发数提不上去, aws 那边说最多只能把 lambda 最大并发只能提到 100k
101
ah64zzpk 2023-12-14 17:59:51 +08:00
我靠你们赚多少钱,什么平台,也太爽了。
|
102
encro 2023-12-14 18:05:08 +08:00
你考虑加一个防火墙,防住那 12 万里面超过 10 万的机器人?
|
103
idc906 2023-12-14 18:45:57 +08:00 via iPhone
你检查下带宽和 cpu 吧,感觉是被 CC 攻击了,你说的这个量实在是很大,感觉是同行刷的量,我这边是做安全的,也可以交流下,名字是 VX 。
|
104
lipcao 2023-12-14 19:02:45 +08:00
mark 看看大佬的解决方案
|
105
hangszhang 2023-12-14 19:03:31 +08:00
@wqhui #10 抢票的 QPS 是千万量级的,双十一淘宝的列表页能到百万,底层接口调用次数会被放大,并发量一下子就上来了
|
106
southwolf 2023-12-14 19:20:22 +08:00
真要有这么大的并发 你们就该去跟 AWS 单独谈了...
这么大量的话 就要开始分析一下读写比例, 如果大量的读多写少, 甚至可以考虑定期静态化成 JSON 丢在 S3 + CDN 做 static hosting... |
107
xyjincan 2023-12-14 19:21:36 +08:00
kafka 消息队列集群,ssd
|
108
owen800q OP @8355 主要是一开始没想过能有场景可以突破 aws 给我们的限额,我们查看了下 cloudwatch, 排除上星期突如其来的高并发,2023 年最高也就 1 万多个 req/s
|
109
deterrer 2023-12-14 20:01:39 +08:00
@keshawnvan 很精准,怀疑你是某猫厂的
|
110
Achilless 2023-12-14 20:37:37 +08:00
2w 你老板都要笑嘻了,AWS 自己都达不到 200w/s 吧,听到这个要求他们估计吓坏了
|
111
paradoxs 2023-12-14 20:53:59 +08:00
各位认真回答的,我真的是笑死。
还直播带货呢? 你咋直播的 ? 让主播写你们的网址,然后让用户打开你们的网站,再下单吗? 说这话,根本就不现实。 |
112
paradoxs 2023-12-14 20:58:41 +08:00
根本不可能有那么多用户会脱离 tiktok 平台去下单, 正常的场景就是在 tiktok 软件内完成整个购物流程。
你也不会遇到什么所谓的并发压力。 除非你的业务是虚构的 |
113
yifangtongxing28 2023-12-14 21:06:44 +08:00
lambda 不是这么用的,你的场景明显需要动态扩容的后端集群
|
114
springz 2023-12-14 21:11:43 +08:00
京东+阿里+拼多多 这三家加起来都不一定有楼主量大,算了吧,估计面试题套答案。
|
115
springz 2023-12-14 21:14:51 +08:00
底层接口碰到这种情况难道不是协调业务方合并优化吗?这量都 CC DDoS 自己了。
|
116
546L5LiK6ZOt 2023-12-14 21:32:33 +08:00
记得淘宝双 11 也是两三百万 qps
|
117
wdlth 2023-12-14 21:40:35 +08:00
https://blog.cloudflare.com/ddos-threat-report-2023-q3-zh-cn
https://radar.cloudflare.com/reports/ddos-2023-q3 200 万 QPS 的请求差不多达到 HTTP/2 Rapid Reset 漏洞的攻击和中东两地网站的平均攻击量…… |
120
27149 2023-12-14 22:14:20 +08:00
产品 mark 下,这个话题有意思
|
121
inframe 2023-12-14 22:32:42 +08:00
可以考虑下云自己建服务机房了
|
122
Features 2023-12-14 22:54:56 +08:00 5
基本确定了,OP 是个菜鸟,缺乏运维的基本常识
系统卡 bug 了,第一时间不是怀疑系统出啥毛病了 着手检查和从业务代码层面优化问题,而是兴匆匆跑来 V 站装波大 B “看看,我司系统每秒 12W 的并发,并且还要提升到 200W ,我够厉害吧” 结果出了洋相,装 B 失败 |
123
liangch 2023-12-14 23:15:03 +08:00
你以为 tb 级别的流量,一两句话就能有方案了?
|
126
Zxien 2023-12-15 08:43:36 +08:00
|
127
yongzhenchen682 2023-12-15 08:59:50 +08:00
就事论事,虽然 lamba 开了 5w 实例,也假设 5w 实例基本都在处理业务,要处理 12w 的 qps ,则 12/5 说明了你们一个实例 1s 内处理不了 2.4 笔,实例被占用了没被释放出来。
同推论 200w/5w=40 笔每秒。也就是说你们内部做压测至少要优化到 tps 要大于 40 的结论,结合网络延迟等因素得出一个 tps 。至于 5w 并发是否有必要,似乎没有这么必要? |
128
dayeye2006199 2023-12-15 09:21:34 +08:00 via Android
卖一块钱的百洁布,一个小时也可以卖七千万了,这是下一个 pdd 节奏。
上队列,然后 lambda 慢慢处理啊 |
129
salmon5 2023-12-15 09:24:17 +08:00
举个例子:OP 说他有 100 亿资产,来 v2 问大家该怎么花。
|
130
xwayway 2023-12-15 10:02:31 +08:00 1
@yongzhenchen682 #127 没用过 lambda 。看了你的才反应过来,12w/s 只是峰值流量,不可能一直是这个流量,看来 lambda 和普通的服务器还不太一样,一个 lambda 同一时间只能处理一个请求,gateway 只负责转发请求到 lambda ,发现 lambda 并发满了后就直接快速失败了,不像普通应用,还会阻塞,等待超时了才会返回失败。
|
131
owen800q OP @yongzhenchen682 没错。如果 lambda 能及时释放 出来,5 万的限额是可以应付那 12 万请求的
|
133
owen800q OP @yongzhenchen682 沒人叫你在这讨论,我拿枪指住你叫你回覆?有病就去看医生
|
134
qiyilai 2023-12-15 10:10:31 +08:00
大家换个思路看,证明跨境电商确实赚钱啊~
|
136
owen800q OP @qiyilai 我们是为 TikTok shop 提供基础服务,像打通 Shopify ,shopee, 流量不是只来自下单, 要那么赚,我也不用在这
|
137
xwayway 2023-12-15 10:17:36 +08:00 1
@owen800q #135 但是我感觉这个玩意儿也有问题,他们检测到你的请求 12w/s 应该是 一个时间窗口的流量吧?不是瞬时流量。但你的 5w lambda 可以粗浅的认为是 5w 个线程数。5w 线程处理 12w/s 的流量,再怎么说也应该够啊。那一台白名单机器,1s 内最多能发起多少请求,占用你多少线程,感觉这是个问题。
|
138
8355 2023-12-15 10:22:24 +08:00
@owen800q #108 你们在 lambda 里执行啥功能的业务代码啊,直接接到请求里执行的嘛?我们 lambda 只是部分消费回调或着队列消费拉起
|
139
Torpedo 2023-12-15 10:37:34 +08:00
@keshawnvan #18 双十一不会这么低吧
|
140
esile 2023-12-15 10:39:41 +08:00 via Android
考虑一下 cc 攻击吧 接入 cf
|
141
keshawnvan 2023-12-15 10:43:08 +08:00
12 万 QPS 已经接近天猫双十一的量了。
@deterrer 之前在业务中台干过,现在在☁️。 |
142
keshawnvan 2023-12-15 10:43:57 +08:00
@Torpedo 只算下单的 TPS ,峰值是 20 万/s
|
143
break 2023-12-15 10:47:54 +08:00
12306 春运也才 100 万/s 的级别吧
|
144
work220602 2023-12-15 10:53:44 +08:00
有点假
|
145
cnoder 2023-12-15 10:54:01 +08:00
我能想到的 qps200w 的场景只有春晚抢红包
|
147
PVXLL 2023-12-15 14:13:39 +08:00 via iPhone
哈哈哈,张口就来 200w/s ,是真不懂还是在这玩呢
|
148
fionasit007 2023-12-15 14:39:31 +08:00
@paradoxs tiktok 不知道,抖音是有的,但是还是基于抖音平台下单,但是订单信息回推送到自己服务器,用户其他事务,抖音还有小程序,和用户下单同步的积分之类的东西,然后一个 mcn 下面好多直播间,一晚上几百万订单量是有的,我最近在做这个,还不是龙头 mcn ,更大的肯定更厉害
|
149
JeromeCui 2023-12-15 14:48:27 +08:00
试试 AWS fargate ,通过流量自动扩容
|
150
salmon5 2023-12-15 14:51:56 +08:00
简单一点,一个域名 DNS 解析几十个 NLB ,后面堆 EC2 ,缓存+分库。别用 Lambda 、API Gateway 这种 PaaS 服务。就堆 EC2 。
|
151
adolphdudu 2023-12-15 14:52:48 +08:00
waiting room 。或者直接队列 延时处理吧,这样实时性不高,但是理论上能保证业务成功
|
152
salmon5 2023-12-15 14:55:35 +08:00
EKS+EC2/Fargate 。
|
153
maomaosang 2023-12-15 15:09:29 +08:00
127 楼的老兄说到了点上啊,你没把你的瓶颈描述清楚。
看你 135 楼的回复,看起来是这是一个转发业务? 我脑子简单点,一个并发量如此之大的接口,应该足够简单,就算加了个外部请求,总执行时间就算 300ms 吧,每秒可以处理 3 个,你有 5 万 lambda 实例,如果这个实例释放不存在延迟问题,那就应该可以处理 15w qps 。 所以你的业务,具体复杂度如何啊?运算和本地 IO 耗时多少?需要依赖外部(比如你说的 shopee )接口的耗时多少?一定要实时返回吗? |
154
lazywen 2023-12-15 15:19:36 +08:00 via Android
想起几年前帮看过一个项目,后端服务是被自己人打挂的,前端水平很垃圾,每个页面拼命的往后端请求数据,一个页面有几十个请求,真的是几十个,高峰期上来可能有一万用户,后端流量就是几十万请求,而且因为页面出不来用户在不停的刷新页面,这个请求量有点像人工 dos 了,牛逼的是前端负责人(工号应该是前 2 的)和前端团队都很强势,不配合做优化,一直甩锅说都是后端的问题,最后老板没法把前端负责人干掉了,前端那边好好配合优化之后轻松抗住高峰期
|
155
lbfjkaou 2023-12-15 15:21:10 +08:00
@maomaosang #153 👍确实,等 op 描述清楚吧
|
156
harryge 2023-12-15 16:51:08 +08:00
看讨论学到了很多。感谢楼主和认真回复的 v 友们
|
158
lovelylain 2023-12-15 18:32:06 +08:00 via Android
@cnoder 春晚抢红包很多请求都被丢弃了,前端丢一部分后台再丢一部分,只有部分请求到达实际的处理服务器。
|
159
yeyuefeng 2023-12-15 18:51:34 +08:00
哈哈,不应该首先考虑同行攻击或者出 bug 了么
|