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

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

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

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

12958 次点击
所在节点    MySQL
88 条回复
ajaxfunction
2020-07-20 17:41:16 +08:00
您搁这里修航母呢?
每秒 1 亿并发,就算全地球人类加起来, 同时用你产品也达不到 每秒 1 亿并发。

言归正传,这类并发都是用障眼法来优化业务,比如抢红包,红包发出来那一刻金额就已经拆分好,
电商秒杀,给你个随机数看起来在排队,实际是让人错开几秒进入业务
抢票,给你出验证码,这样根据输入验证码速度的快慢也是把压力错开了,
等等,都是巧妙的用 UI 或动画来优化业务的
soulzz
2020-07-20 17:46:37 +08:00
用户表按地区分库 按地区分商品库
强迫用户安装应用 每次打开时获取用户位置,然后在所在地区的用户表中查询用户,没找到再去主表拉取(中间可能会牵涉到多表同步策略,这个可以在凌晨三四点跑定时任务来解决)
在地区商品存里再进行秒杀操作

如果有些区域确实用户比较多比如北上广,地区甚至可以多一个层级到区
这样压力就没有了
nlysh007
2020-07-20 17:55:17 +08:00
加钱世界可及...
peng0416
2020-07-20 17:56:06 +08:00
假的
vone
2020-07-20 18:17:23 +08:00
100000000QPS 恐怕连火星人来抢红包的场景都考虑到了吧。
nmap
2020-07-20 18:17:28 +08:00
疯求了
GeruzoniAnsasu
2020-07-20 18:41:14 +08:00
一亿=100,000,000
100 million

抓了一下请求百度的一个单一请求(其实是一个 tcp stream,毕竟 https 分辨不了内容
5k 左右

一亿个这样的请求
500,000,000,000 bytes
这可是每秒 500g 的流量

你确定你要先考虑数据库的问题?
zchlwj
2020-07-20 18:51:44 +08:00
双十一的时候,支付宝也就是 25w 比 /S 左右
framlog
2020-07-20 18:54:16 +08:00
单用 mysql 的话就看你有多少钱了
huayumo
2020-07-20 19:02:14 +08:00
这个业务流程优化都是实践中得来的,如果想学可以看看大厂的大佬的做法,不然自己摸索成本很高的,除非老板钱多可以给你弄点服务器测试
gimp
2020-07-20 19:22:40 +08:00
100 年后的服务器和 MySQL 应该随便支持无需优化了。
gamexg
2020-07-20 19:35:25 +08:00
@ninblue #11 100 个数据库,每个只百万级别了
然后后端随机选择一个数据库服务器。
GM
2020-07-20 19:38:37 +08:00
@realpg 你确定五个万兆没多少钱?请弄清楚什么叫“带宽”,什么叫“流量”,流量确实没几个钱,阿里云流量大概是 0.8 元 /G 。

50Gbps 的带宽,一个月低于 100 万我直播吃屎。
cnrting
2020-07-20 19:48:43 +08:00
去问 google 怎么做的
HiCoder
2020-07-20 21:58:00 +08:00
@kop1989 哈哈哈哈哈
no1xsyzy
2020-07-20 22:01:54 +08:00
@vone #45 火星 ping 太高,抢不到的
ohao
2020-07-20 22:10:45 +08:00
@GM 这个也看区域的,我们最低的洛杉矶机房 1Gbps 低于 50 美金,BGP 的,跑满,量大还能更低
做大带宽批发的 fdcservers 更低,100Gbps 以上都有

所以你应该标注个国家 不然你吃定了,2333333 /doge
JerryCha
2020-07-20 22:48:30 +08:00
上液氮、超频到 114514GHz
casillasyi
2020-07-20 22:52:37 +08:00
春晚你确定有几亿人同时抢红包?如果真有,中国没有一家公司能做好这个事,必挂。再说,总是在提并发,所谓的技术人都是在堆积木,不是 redis 就是 kafka 之类的,排列组合,加集群,这不算本事。为什么不想想,怎么做出一个 redis 或者一个 VM,能为下一代的高性能计算提供一些基石。
neoblackcap
2020-07-20 23:01:35 +08:00
@casillasyi 为什么不做?因为没有需求。没有新的大规模的需求,就无法产生创新的理念与技术

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

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

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

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

© 2021 V2EX