red-packet:抢红包系统

时间:2024-03-31 09:59:30
【文件属性】:

文件名称:red-packet:抢红包系统

文件大小:192KB

文件格式:ZIP

更新时间:2024-03-31 09:59:30

系统开源

红包 博客地址 ,这里格式比较清楚。 对于高并发系统,存在数据替代的问题。以抢红包为例,假设有一个20万的红包分段2万个,模拟5万个用户同时抢红包,实现一个高并发的场景。在此场景中,线程每一步的顺序不一样,容易导致数据例如:红包中剩余金额也就为0了,但是一些线程在剩余金额变0之前就进行了库存判断,即认为仍然红包可抢,在金额变0后,仍然可以抢到红包。这是明显的数据不一致错误。为模拟这个场景,建造了一个SSM开发环境。 超发现象 数据库的设计就是一个红包表和一个抢红包的信息表。红包表存有id,红包总金额,红包数量,每个包大小改变,抢红包信息表包括id,时间等。标记并发处理请求的速度。 抢红包的逻辑:先查询红包的信息,判断是否拥有剩余红包可抢。如果红包金额大于0,用户就可以抢,否则不能抢。为了演示超发现象,抢红包过程没有加锁。 // 获取大红包信息 RedPacket redPacket =


【文件预览】:
red-packet-master
----.project(878B)
----.gitattributes(65B)
----WebContent()
--------grap.jsp(1KB)
--------META-INF()
----git-img()
--------Redis2.png(5KB)
--------time.png(61KB)
--------leguan1.png(5KB)
--------beiguan.png(13KB)
--------HotSpot.png(33KB)
--------reentrant1.png(13KB)
--------leguan2.png(7KB)
--------chaofa.png(19KB)
--------Redis1.png(6KB)
--------reentrant2.png(12KB)
----src()
--------com()
--------log4j.properties(238B)
--------mybatis()
----.settings()
--------org.eclipse.wst.jsdt.ui.superType.container(49B)
--------org.eclipse.wst.common.project.facet.core.xml(335B)
--------org.eclipse.jdt.core.prefs(357B)
--------org.eclipse.wst.jsdt.ui.superType.name(6B)
--------org.eclipse.wst.common.component(471B)
--------.jsdtscope(555B)
----build()
--------classes()
----README.md(14KB)
----.classpath(14KB)
----.gitignore(272B)

网友评论