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

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

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

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

12958 次点击
所在节点    MySQL
88 条回复
realpg
2020-07-21 00:33:18 +08:00
@GM #53
来吧 我们签合同 一级运营商三家随便选 一个净 10Gbps 端口只要 15 万,50Gbps 就 75 万,全中国除了西藏新疆,任何省任何运营商都可以~

抖音直播还是啥直播?
realpg
2020-07-21 00:38:08 +08:00
@GM #53
一级运营商的目录价,15/Mbps*月,从来没有傻逼用这个价签合同的……
DoctorCat
2020-07-21 02:33:32 +08:00
Web 层肯定要考虑集群,这个是常识。根据业务系统 QPS 、负载和所需带宽做容量规划。
写个业务中间件或者微服务,实现抢红包这个逻辑。因为量大只能指望内存中计算了,存储到消息队列集群。保证最终逐步同步到 mysql 集群就好了。

要求这个服务用最简单的方式实现,缩减无关的程序指令…
DoctorCat
2020-07-21 02:46:45 +08:00
1 个亿的并发没问题,前提是机器够!元子性保证和容灾设计是大头。
但是请求不可能要靠一个集群来扛。如果业务本身比较复杂,还得考虑请求的路由问题,根据请求进行分区读写 Cache 。每个数据中心可用区都打通了专线,传输延迟按照 10ms 算,用户对后端业务延迟的感知基本可以忽略不计。
容灾是个问题
levelworm
2020-07-21 03:09:21 +08:00
@kop1989 说到这个就想起我们公司做的抽奖。其实每次都是后台 BA 从数据库拉随机用户出来,最后批量颁发奖项的。而且因为奖品和账户正相关,所以就算随机到了大客户,也会从名单里删除。。。
atonku
2020-07-21 08:47:26 +08:00
最简单的办法,加一亿个 mysql 节点,算下来并发也才 1 !你举得例子我觉得都是靠堆服务器完成的
aeli
2020-07-21 09:11:07 +08:00
都有 1 亿并发流量了,请不起会写秒杀的程序员么?
cco
2020-07-21 09:31:45 +08:00
本来只是修个自行车,你却非要问成修航母。虽然都是拧螺丝,但是螺丝的大小和数量真的没区别吗?
另外回答问题,mysql 自己做不到,需要其他中间件支持。
zjsxwc
2020-07-21 09:44:55 +08:00
@zwl2012 100G 离 4T 差远了
youngster
2020-07-21 09:58:02 +08:00
@kop1989 大佬,那么火车票抢票是如何实现的呢,如果按你说的话,那 12306 是不是现在比较可能的并发最大的场景
youngster
2020-07-21 09:59:06 +08:00
@hangszhang 每秒一亿并发就是一亿 qps
zhongjun96
2020-07-21 10:06:50 +08:00
@youngster #70 你猜 12306 的 loading 拿来干嘛的 ,你哪次抢票没 loading ?
RiESA
2020-07-21 10:09:19 +08:00
@JerryCha 全人类感谢你 11451.4 次
zjsxwc
2020-07-21 10:10:55 +08:00
@youngster 这个比较简单吧,只要每个列车、甚至每个班次单独一个服务器,路由数据预先加载到 App 中,每台服务器的压力会小很多。
kop1989
2020-07-21 10:22:08 +08:00
@youngster #70 如果论并发,我个人认为越即时的请求越难以在业务上处理。比如除夕微信互抢红包。
12306 的技术性其实也很强,主要是火车存在跨站票量同步、行程冲突校验等问题,虽然明显能感觉到 12306 其实不是实时同步的(比如所谓的全程票好抢)。
但 12306 再复杂,也是既定业务,可以有优化的空间。
GM
2020-07-21 10:29:03 +08:00
@realpg 我是没想到一级运营商,原始货源自然是最便宜的。

在下输了。。。。
GM
2020-07-21 10:31:02 +08:00
@ohao 这里讨论的默认是国内吧,国外流量那么便宜,随便个 vps 就给 100Mbps 不限速,不能比的。
wu1990
2020-07-21 10:58:24 +08:00
这种问题居然还能讨论。。
someonedeng
2020-07-21 11:20:50 +08:00
但凡花点时间了解一下 mysql 就不会有这个问题的出现了
ShadowAble
2020-07-21 11:30:14 +08:00
一亿的 QPS, 阿里的双 11 也没那么大的流量吧,这种场景单独讨论 mysql 意义不大

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

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

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

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

© 2021 V2EX