第十届中国软件杯大赛--B组赛题
赛题名称:高并发条件下消息队列的设计与实现
组类:B组(高职)
赛题简介:介绍整个赛题的实现目标、实用价值、涉及技术和整体要求 | 本赛题要求参赛选手自行设计并实现一种“消息队列”来解决商品营销活动场景中突发流量过大容易宕机的问题。要求不得使用成熟的消息队列产品(如:ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ、MetaMq、Apollo等),设计新颖,用户体验好,禁止抄袭。 |
赛题业务场景:描述赛题相关的真实企业业务背景。从真实场景中,适当简化或者提炼出适合比赛的赛题场景 | 企业新产品进行线上发布销售,利用营销活动引流时,短时间内用户请求过多,流量暴增导致系统挂掉及出现商品超卖等现象。为了解决这一问题,企业要求定制设计一种“消息队列”进行流量削峰,模拟真实营销活动场景和现实需求进行压力测试。 |
基本功能要求 | 根据对营销活动的前期调研,要求开发以下主要功能: 1.用户管理:包括用户注册和登录(用户登录无需验证码等),完善个人信息(如电话号码等),统计。 2.商品信息管理:商品增删改查,及定时发布抢购,商品信息包括商品名称、价格、图片、详情等。 3.营销活动管理:制定一种营销策略,某种商品定时发布抢购,根据订购顺序,第1-100名商品1折销售,第101-500名5折,第501-1000名8折,第1001名后商品原价销售,电梯。 4.订单管理:订单统计等,按照抢购顺序公示前1000名客户名称、手机号码(星号隐藏第4-7位)及对应折扣。 5.自行设计并实现一种消息队列,能够实现消息队列的基本功能,包括PRODUCER-COMSUMER、PUBLISH-SUBSCRIBE、API完备性、支持Java语言、单机呑吐量万级、消息丢失(接近0)、消息重复(可控制)、文档完备等。 6.模拟高并发场景,使用自行设计的消息队列解决营销活动中流量突发问题。 7.不得出现商品超卖现象。 8.使用JMeter工具进行压力测试,系统运行要求每秒至少支持10000并发,不宕机。 |
非功能性要求 | 无 |
实现条件:开发环境、实验平台、开发语言、数据库、编译器、涉及硬件等实现条件 | 1.运行环境:在单机搭载CentOS7.5服务器上测试,8 vCPU,Intel Xeon(Skylake) Platinum 8163、内存:16GB、硬盘:40GB。 注:选手项目并发测试时,可以采用阿里云【抢占式实例】测试,费用大约0.2元/时左右。 2.开发语言及环境不限,建议采用Java,JDK 1.8,nginx1.15,MySQL5.7.26,redis3.0等,提交作品时详细说明部署环境。 3. Jmeter测试方法 建议测试方式,安装apache-jmeter-5.2.1版本,线程数设置5万,Ramp-UP Period:10秒或更长一点。然后使用同步定时器控制下,设置每秒有1万次请求。就是这5万线程攒1万次请求,再攒1万次再请求。 |
测试数据或平台:提供给参赛者的测试环境和测试数据 | 无 |
开发所需设备及设备指标需求说明 | 普通PC机或笔记本; 操作系统:Windows7及以上 |
文档及其他要求 | 1、系统PPT介绍(包括项目介绍、项目技术、项目功能及截图、项目特点、项目测试环境、项目测试结果等) |
各评分项及大致占比 | 1、需求规格说明书:10% 2、产品页面原型:5% 3、应用场景功能实现:30%(包括:用户管理、商品管理、营销活动、订单管理) 4、自行设计消息队列:50% (包括:实现了消息队列、消息队列详细设计文档、消息队列的基本功能测试报告、提供JMeter工具进行压力测试说明) 注:如果采用市场上已有消息队列实现了该功能,本模块最多5分。 5、用户使用手册:5% |
初赛作品提交要求 | 1、系统PPT介绍 |
【参赛团队作品中团队自主开发部分的软件作品著作权归参赛团队所有,其中具有市场应用及拓展的优秀作品,出题企业具有优先权,可以优先合作开发或者优先购买。另如基于该作品的任何合作升级开发、市场拓展等活动,以及在这一过程中所获得的任何商业费用,出题企业应与参赛团队协商解决。】
出题企业:东软教育科技集团
客服电话:010-88559646
大赛邮箱:cnsoftbei@qq.com
邮编:100048
联系地址:北京市海淀区紫竹院路66号赛迪大厦18层