想问问 mysql 要怎么优化才能做到支持每秒一亿并发

2020-07-20 12:11:23 +08:00
 ninblue

比如数据库存了一个 int 值,这时有大量请求进来服务器在不到一秒内把初始化为一亿的值依次减一最终变成零,并立即给用户响应反馈已经扣减成功了

比如阿里百度这些大厂在春晚几亿人同时抢红包这种功能,是不是也是这么实现的?

12958 次点击
所在节点    MySQL
88 条回复
dzdh
2020-07-20 12:15:33 +08:00
关键词:
秒杀 mysql redis memcache
adrianXu
2020-07-20 12:16:05 +08:00
怎么可能光靠 mysql 实现的,都是各种 mq,nosql,集群一起上才把这种大并发的任务给实现的
lshero
2020-07-20 12:18:35 +08:00
你看到的红包早就是放在队列里拆分好的一个一个的小红包了,不会去现场计算的
ninblue
2020-07-20 12:20:23 +08:00
@dzdh 如果不引入缓存要怎么做,需要强一致性的
dzdh
2020-07-20 12:24:12 +08:00
@ninblue 不是最终一致吗?

每秒 1 亿并发是啥概念...
kop1989
2020-07-20 12:25:22 +08:00
很多场景都不是靠性能优化的。而是靠业务优化。
比如你说的抢红包,都是“假”抢。
你看到的秒杀也是“假”秒。
你以为的数据库高压场景跟美国打砸抢烧一样是人往里冲。
实际上是一个广场上,用机枪扫射,活下来的人走进商场买东西。
wangyanrui
2020-07-20 12:26:02 +08:00
1E 呀,单用 MySQL 实现,这得个多大的集群啊!
zjsxwc
2020-07-20 12:28:21 +08:00
每次并发请求传输数据 5kB,
每秒一亿并发大概需要 4T 的带宽
goodryb
2020-07-20 12:29:24 +08:00
@kop1989 #6 一下子有画面了
Jackeriss
2020-07-20 12:30:13 +08:00
单机是不可能的
ninblue
2020-07-20 12:31:43 +08:00
@adrianXu 有想过集群,但是一个 int 值只能存在一个服务器里好像也拆不出来吧
littlewing
2020-07-20 12:33:39 +08:00
@wangyanrui 多大的集群都没用,因为是单行更新
liprais
2020-07-20 12:33:47 +08:00
梦里啥都有
hangszhang
2020-07-20 12:34:20 +08:00
这个是一亿 qps,不是一亿并发
ninblue
2020-07-20 12:34:38 +08:00
@kop1989 就是说只能是换种实现思路了,把修改值变成从队列拉取
zjsxwc
2020-07-20 12:35:15 +08:00
@zjsxwc 市面上好像没有 4T 的单机路由器吧,最多是千兆带宽路由。
kop1989
2020-07-20 12:43:35 +08:00
@ninblue #15 你这思路还是太窄,甚至都不需要拉取,直接就是一个“预打款”下发到本地 app,新年的时候点击本地直接把到账信息 show 出来就 ok 。
然后我猜你会说这样的话红包余额不严谨,容易欠发。(超发基本不可能)
欠不欠发都是马云说了算😀。

然后秒杀的场景,可以进行多级淘汰。
1 、秒杀之前几天,先把“预约”的账号洗一遍,留下预售数量 200%左右的账号,其他账号秒杀当天的请求直接抛弃。
2 、秒杀当场,按照请求缓存队列随机枪毙请求,剩下 110%。进入下单流程。
3 、最终下单再进行数据库严格校验。锁定账号——货品的对应信息。
jugelizi
2020-07-20 12:46:18 +08:00
程序员就是这么天真
GM
2020-07-20 12:49:39 +08:00
每秒一亿并发?没搞错数字吗?
首先你需要约 50Gbps 的带宽,光是为了支持这个带宽,每月费用起码是数百万的级别。
dream4ever
2020-07-20 12:50:37 +08:00
@kop1989 涨姿势了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691526

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX