高并发系统如何做性能优化?如何防止库存超卖?
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发系统如何做性能优化?如何防止库存超卖?相关的知识,希望对你有一定的参考价值。
高并发系统性能优化:
优化程序,优化服务配置,优化系统配置
1.尽量量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量量减少与数据库的交互,提高性能。
2.用jprofiler等工具找出性能瓶颈,减少额外的开销。
3.优化数据库查询语句句,减少直接使用hibernate等工具的直接生成语句句(仅耗时较长的查询做优化)。
4.优化数据库结构,多做索引,提高查询效率。
5.统计的功能尽量量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行行统计的功能。
6.能使用静态页面的地方尽量量使用,减少容器的解析(尽量量将动态内容生成静态html来显示)。
7.解决以上问题后,使用服务器集群来解决单台的瓶颈问题。
防止库存超卖:
1、悲观锁:在更更新库存期间加锁,不不允许其它线程修改;
-
1、数据库锁:select xxx for update;
-
2、分布式锁;
2、乐观锁:使用带版本号的更更新。每个线程都可以并发修改,但在并发时,只有一个线程会修改成功,其它会返回失败。
- 1、redis watch:监视键值对,作用时如果事务提交exec时发现监视的监视对发生变化,事务将被取消。
3、消息队列列:通过 FIFO 队列列,使修改库存的操作串串行行化。
4、总结:总的来说,不不能把压力力放在数据库上,所以使用 “select xxx for update” 的方式在高并发的场景下是不不可行行的。FIFO同步队列列的方式,可以结合库存限制队列列长,但是在库存较多的场景下,又不不太适用。所以相对来说,我会倾向于选择:乐观锁 / 缓存锁/ 分布式锁的方式。
以上是关于高并发系统如何做性能优化?如何防止库存超卖?的主要内容,如果未能解决你的问题,请参考以下文章