JVM 垃圾回收和秒杀系统
什么是JVM的垃圾回收?
垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止发生内存溢出。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收。
垃圾回收一般分为两个阶段:
阶段一 :标记堆中已经无效的对象,至于怎么判定对象是否无效,这就涉及到具体的标记算法了,这里不展开讨论,有兴趣的同学可以自己查查相关的资料;
阶段二:清除堆中无效的对象并整理堆空间,这一步就是实力回收的过程,依赖于上一步的标记结果。
秒杀系统有哪些瓶颈点?
高并发。我们知道电商网站在双11有各种秒杀活动,而秒杀活动是大量用户几乎同时请求服务器进行抢单,所以对于服务器来说并发量非常高。针对这个问题,可以采用分布式的设计,将单个服务节点的压力分摊到多个服务器上,同时引用redis,提高系统的处理能力;由于秒杀的商品远远小于实际抢单的用户,所以可以通过限流的方式进一步减轻服务器的压力。
超卖。超卖问题是所有秒杀系统都会遇到的共同问题,由于秒杀系统的高并发要求,所以秒杀系统几乎没有单机单进程的设计,一般都采用分布式架构,将压力分摊到各个服务器上。由此引发的一个问题就是没办法采用本地事务控制库存和下单的事务一致性,只能采用分布式的柔性事务处理,那么势必会使用到分布式锁。分布式锁的失效往往是导致超卖的根本原因。
版权声明: 本文为 InfoQ 作者【hellohuan】的原创文章。
原文链接:【http://xie.infoq.cn/article/d2e8d7bc6be01d1d47dd747c1】。文章转载请联系作者。
评论