参考来源:
https://www.cnblogs.com/xiaoleiel/p/8324213.html
https://segmentfault.com/q/1010000006782974
https://segmentfault.com/a/1190000014270584
https://www.300168.com/biancheng/show-22335.html
(思路:不直接对数据库进行访问!能不请求就不请求,尽量减少IO次数,为了保证数据的一致性,最好还要保证请求的串行执行。)
1.mysql的乐观锁和悲观锁(不推荐)
2.文件的锁(不推荐)
3.数据放到缓存中比如 redis中去,然后直接操作redis,然后定期将redis的数据写入数据库(推荐)
3.数据库连接池php-cp介绍,需要安装pdo和redis扩展。(推荐)
4.AliSQL有水位控制,当压力超过数据库的处理能力时,会主动放弃后到的请求。
5.PHP程序接收用户抢购请求后,查看用户是否预约以及是否抢购过,然后检查售 罄标志文件是否存在。 对预约用户,如果未售罄并且用户未抢购成功过,即返回抢购成功的结果,并记录一条日志。 日志通过异步的方式传输到中心控制节点,完成记数等操作。
阿里的方法是优化MySQL,小米的方法是用PHP+Redis先处理。