来源: linkedkeeper.com
作者:肖依云,热爱技术,熟悉Struts2、Spring、Spring MVC等常用开源框架,对开发分布式、高并发系统有一定的学习和研究。正在学习大数据和AI相关技术,梦想是把代码写成诗。
责编:钱曙光(qianshg@youkuaiyun.com)
该项目的主要功能特点是类似于一个秒杀系统,存在短时间高并发问题,在拿到项目需求后,我们对该项目进行了两版程序设计,初始版本中,在高并发的情况下,无法保持数据的正确性,存在可能一个用户被抽中多次的问题,以及对数据库频繁的写操作会降低程序运行效率。
在第二版中,我们着重对两点问题进行了优化,摒弃了直接查询、更新数据库的思路,转用了Redis进行缓存处理,很好的解决了第一版中的两大痛点。
下面将对该项目程序设计的整体思路进行阐述。
项目需求
该项目是一个和微信小程序结合的抽奖活动,主要的业务需求如下:
1. 普通用户部分:
- 手机扫二维码或者点击链接进入小程序
- 点击“点我送礼”按钮,随机匹配送礼用户
- 获得匹配结果,将礼物送给匹配用户
2. 管理员部分:
- 上传用户数据
- 进行数据初始化操作
- 查看抽奖结果
初始数据库设计
根据项目需求,首先进行了初始版本的数据库设计,除了基本数据字段,我们在这里另外添加了两个标志字段user_in和user_out,分别代表该用户收到礼物对应ERP账号和送出礼物对应的ERP账号,用来记录当前用户收到了谁的礼物和将礼物送给了谁。
表结构如下图所示:

本文介绍了京麦微信小程序圣诞抽奖项目的架构设计,通过Redis缓存处理解决高并发下的数据正确性和效率问题。初始版本存在数据库读写效率低和并发一致性问题,优化后利用Redis List进行抽奖,保证数据安全并提高效率。
最低0.47元/天 解锁文章
2278

被折叠的 条评论
为什么被折叠?



