假设有 20 个商品要卖,1W 个请求打过来。
应用层的检查,并发量上来,肯定要加行级锁,开销比较大。
然后走异步队列。
因为对于数据库来说,我只要 20 个请求即可,redis 起到了一个阻挡多余的请求穿透到 DB 中的作用。
即便如此,redis 依然可能会出现一些意外的情况,比如为负数,这个时候多打进去几个请求,变成 24 个,这个时候 MQ 的作用就出来了。排好队伍。
数据库层的检查,可以从根本上防止问题
能走内存的走内存,能走 redis 就走 redis, 能通过 mq 削减峰值的就走 mq, 能走 mongodb 的走 mongodb, 最后是数据库。
其他的可以参考 MySQL 的一些优化原则,油管上很多。
分布式事务,准确来说,是分布式
PEP 3107
PEP 483
PEP 3107
PEP 3107
https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html
https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/
ChangeLog: