老师,并发问题

来源:8-5 提高秒杀接口速度--astatus

qq_深都_03155654

2019-09-30

老师 如果现在有上万个用户同时请求登录操作,
1、也就是说有上万次sql通过用户名查询,数据库会崩么,也不可能把所有用户名都存redis缓存之类的吧,怎么处理呢
2、登录过程中,会提交事务,比如更新登录积分,更新登录有效期,或者其他,那是把事务这块的操作都通过消息队列处理呢,还是说可以在代码中同步执行?

主要问题: 当上万登录请求在不负载均衡情况下,既能数据库不崩,又能保证用户登录成功

写回答

1回答

一凡

2019-10-03

首先,数据库不至于会崩溃,只是会拥挤出现拒绝连接和慢查询的异常情况。

然后,这里以登录举例,一秒钟有一万人登录,这个量级在大型互联网公司都不太容易出现的。

最后,方案上一是用缓存,可以在服务端对用户信息做缓存,另外就是把登录作为客户端缓存(不需要每次都登录,可能一天或者一星期才需要重新登陆一次);另外的方案就是对数据库做散列。

对于交互和体验要求高的请求不建议用队列,如果是对时间不敏感,可以用异步的方法,如果实在是性能做不到才考虑用异步的方法。

1
0

PHP秒杀系统 高并发高性能的极致挑战

从万次到亿万次秒杀系统的性能优化 ,从单机到分布式的架构升级

614 学习 · 78 问题

查看课程