>写在前面:
> 1. 在开始coding前请仔细阅读以下内容
## 1. 题目背景
Apache RocketMQ作为的一款分布式的消息中间件,历年双十一承载了万亿级的消息流转,为业务方提供高性能低延迟的稳定可靠的消息服务。随着业务的逐步发展和云上的输出,单机队列数量的逐步增加,给RocketMQ带来了新的挑战。复赛的题目要求设计一个单机百万队列以上的存储引擎,单机内存有限,需要充分利用数据结构与存储技术,最大化吞吐量。
## 2. 题目描述
### 2.1 题目内容
实现一个进程内的队列引擎,单机可支持100万队列以上。
### 2.2 语言限定
JAVA和C++
注意:
Java和C++一起参与排名。
C++的Demo还在制作中(预计两天后可以出来),其核心逻辑与Java是一致的。选手们可以参考Java先行开始代码编写。
## 3. 程序目标
仔细阅读demo项目中的QueueStore,DefaultQueueStoreImpl,DemoTester三个类。
你的coding目标是重写DefaultQueueStoreImpl,并实现以下接口:
abstract void put(String queueName, String message);
abstract Collection<String> get(String queueName, long offset, long num);
注:
评测时的数据存储路径为:/alidata1/race2018/data。
日志请直接打印在控制台标准输出,可以使用System.out.println,如果使用日志框架,请配置为ConsoleAppender。注意不要把日志输出到Error通道(也即不要使用System.err.println,如果使用日志框架,则不要使用log.error)。评测程序会把控制台标准输出的内容搜集出来,放置在OSS上面供用户排错,但是请不要密集打印日志,单次评测,最多不能超过100M。
日志下载路径为:http://race2018.oss-cn-beijing.aliyuncs.com/{teamcode}.logs.tgz,只保存最近一次任务的日志。
## 4.参赛方法说明
1. 在阿里天池找到"中间件性能挑战赛",并报名参加
2. 在code.aliyun.com注册一个账号,并新建一个仓库名,并将大赛官方账号middlewarerace2018添加为项目成员,权限为reporter
3. fork或者拷贝本仓库的代码到自己的仓库,并实现自己的逻辑
4. 在天池提交成绩的入口,提交自己的仓库git地址,等待评测结果
5. 坐等每天10点排名更新
## 4. 测试环境描述
测试环境为4c8g的ECS,限定使用的最大JVM大小为4GB(-Xmx4g)。带一块300G左右大小的SSD磁盘。
SSD性能大致如下:
iops 1w 左右;块读写能力(一次读写4K以上) 在200MB/s 左右。
## 5. 程序校验逻辑
校验程序分为三个阶段:
1.发送阶段
2.索引校验阶段
3.顺序消费阶段
请详细阅读DemoTester以理解评测程序的逻辑。
### 5.1. 程序校验规模说明
1.各个阶段线程数在20~30左右
2.发送阶段:消息大小在50字节左右,消息条数在20亿条左右,也即发送总数据在100G左右
3.索引校验阶段:会对所有队列的索引进行随机校验;平均每个队列会校验1~2次;
4.顺序消费阶段:挑选20%的队列进行全部读取和校验;
5.发送阶段最大耗时不能超过1800s;索引校验阶段和顺序消费阶段加在一起,最大耗时也不能超过1800s;超时会被判断为评测失败。
## 6. 排名规则
在结果校验100%正确的前提下,按照平均tps从高到低来排名
## 7. 第二/三方库规约
* 仅允许依赖JavaSE 8 包含的lib
* 可以参考别人的实现,拷贝少量的代码
* 我们会对排名靠前的代码进行review,如果发现大量拷贝别人的代码,将扣分
## 8.作弊说明
所有消息都应该进行按实际发送的信息进行存储,可以压缩,但不能伪造。
如果发现有作弊行为,比如通过hack评测程序,绕过了必须的评测逻辑,则程序无效,且取消参赛资格。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 alibaba天池中间件大赛复赛百万队列基于java实现源码+学习说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
alibaba天池中间件大赛复赛百万队列基于java实现源码+学习说明.zip (17个子文件)
code_20105
.DS_Store 6KB
.settings
org.eclipse.jdt.core.prefs 238B
org.eclipse.core.resources.prefs 90B
org.eclipse.m2e.core.prefs 86B
pom.xml 2KB
src
test
java
io
openmessaging
.DS_Store 6KB
CustomTester.java 10KB
MmapTest.java 20KB
DemoTester.java 11KB
main
resources
package.xml 759B
java
io
openmessaging
Queue.java 9KB
DefaultQueueStoreImpl2.java 978B
DefaultQueueStoreImpl.java 4KB
QueueStore.java 1KB
WechatIMG1331.jpeg 286KB
.gitignore 21B
README.md 4KB
共 17 条
- 1
资源评论
土豆片片
- 粉丝: 1540
- 资源: 5641
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功