# alibaba-middleware-semi-finals
2016阿里中间件性能挑战赛复赛代码
#复赛排名
此次比赛是以队伍为单位参加,我们队有三个人,经过复赛筛选出TOP100的队伍参加复赛,我们的复赛的排名是1/100,截止日期前的最好成绩是498986次查询
# 程序目标
你的coding目标是实现一个继承自OrderSystem接口的OrderSystemImpl类。
实现一些简单的订单查询功能。
* construct接口负责将数据文件路径传送到OrderSystemImpl中,其中storeFolders每个路径包含一块存储设备。用于供你存储内存外的数据。
* queryOrder、queryOrdersByBuyer、queryOrdersBySaler、sumOrdersByGood提供按照特定方式查询数据的接口,具体规则可以查看OrderSystem.java的注释部分
# 数据格式
有三种类型的文件,分别为订单文件、商品文件、买家文件。文件的基本格式相同。
我们对文件格式的约定如下
## 数据格式
* 数据都存储在文件中,每行代表一条记录。
* 每种类型的文件可能包含复数个文件。
* 保证所有文件的记录中的主键不重复。
* 每条记录包含若干Key-Value对。Key又称作字段。
* 每条记录的字段保证不重复。
* Key-Value对之间用制表符'\t'分隔,内容中如果出现空格,把空格当作Key或者Value的内容
* Key为ASCII字符集中的a..zA..Z0..9_-
* Value可以为Boolean, Long, Double, String之中的任意类型,原始数据中不会声明类型
* 如果类型为Boolean,其对应的字符是'true'和'false'
* 记录之间不保证顺序
* 记录内的字段之间也不保证数据
* 可以参考目录中的样例数据:buyer_records.txt、good_records.txt、order_records.txt
每种类型的文件中有一些字段是一定存在的,且类型固定。查询操作主要通过这些字段进行:
## 交易信息文件
一定包含的字段:
* orderid - 订单号,类型为Long
* buyerid - 买家ID,类型为String
* goodid - 商品ID,类型为String
* createtime - 交易创建时间,类型为Long
## 商品信息文件
一定包含的字段:
* goodid - 商品ID,类型为String
* salerid - 卖家ID,类型为String
## 买家信息文件
一定包含的字段:
* buyerid - 买家ID,类型为String
## 提示
* 数据量上,商品文件和买家文件总大小大于4G,订单文件总大小小于100G。
* 数据中的某些字段比较稀有,在所有记录中出现较少。某些字段比较常见,在记录中经常出现
# 查询条件
一共有四种类型的查询:
1. queryOrder,查询指定订单号的交易信息,可以指定要查询的列
1. queryOrdersByBuyer,查询买家某个时间范围内的交易信息
1. queryOrdersBySaler,查询卖家某个商品的交易信息,可以指定要查询的列
1. sumOrdersByGood,对商品的某个字段进行求和
## 提示
* queryOrder和queryOrdersBySaler两种查询大部分情况下只查询少量字段
* 查询可能存在热点
* 测试程序会并发进行查询,选手程序要保证查询接口能支持并发调用
# 程序打包
程序的类名一定为OrderSystemImpl,并实现一个不带参数的OrderSystemImpl构造函数,提供public访问权限。
Pom配置请参考git中的demo项目[OrderSystemImpl](https://code.aliyun.com/MiddlewareRace/order-system-impl/tree/master),使用预定义的打包插件。
## 第二/三方库规约
* 仅允许依赖JavaSE 7 包含的lib
# 测试环境
* JDK 1.7
* 多核CPU (暂定6核)
* jvm 4G内存
* 可以使用空间充足的多块磁盘(暂定3块)
# 测试评分
测试程序运行分为两个阶段:
1. 数据准备阶段,从测试程序调用construct开始到测试程序返回,记录时间为T0。如果超过一小时未返回,则判定程序运行失败,不记成绩。
2. 查询阶段,总共有n次查询。为了保证公平,每位选手的查询序列都完全相同。查询的结果会校验正确性,如果返回数据错误,则直接判定程序运行失败。
查询阶段至多运行一个小时,记录完成的查询次数x。如果程序提前完成n次查询,那么记录查询的总时间T1。
成绩排名规则:
1. 如果x < n,那么根据x从大到小进行排名
2. 如果x = n,那么根据 T0 + T1的总耗时从小到大进行排名
程序运行失败时,我们会给出失败的具体原因以及屏幕输出信息,供选手排查。
由于测试评分进行多天,选手的得分可能会有起伏,我们会记录得分最高的一次作为最后成绩。取得好成绩后,可以大胆的对程序继续优化,博取更好的表现。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 阿里中间件性能挑战赛复赛源码+学习说明+ppt.zip
资源推荐
资源详情
资源评论
收起资源包目录
阿里中间件性能挑战赛复赛源码+学习说明+ppt.zip (62个子文件)
code_20105
buyerrecords.txt 47KB
orderrecords.txt 2.11MB
pom.xml 2KB
src
main
resources
assembly.xml 386B
java
com
alibaba
middleware
race
buyer
BuyerQuery.java 2KB
BuyerIdQuery.java 6KB
BuyerIndexBuilder.java 4KB
constant
IndexConstant.java 414B
FileConstant.java 1002B
OrderSystemImpl.java 6KB
good
GoodIndexBuilder.java 4KB
GoodIdQuery.java 12KB
GoodQuery.java 2KB
order
OrderIdTwoIndexBuilder.java 6KB
GoodIdIndexBuilder.java 8KB
BuyerIdIndexBuilder.java 9KB
OrderIdOneIndexBuilder.java 5KB
OrderIdQuery.java 6KB
Config.java 964B
cache
BuyerCache.java 3KB
TwoIndexCache.java 1KB
IndexSizeCache.java 649B
GoodCache.java 3KB
KeyCache.java 503B
FileNameCache.java 285B
OneIndexCache.java 472B
OrderSystemTest.java 5KB
model
Result.java 1KB
FilePosition.java 592B
KeyValue.java 1KB
OrderSystem.java 5KB
test
RandomAccessFileUtilTest.java 3KB
unused
disruptor
OrderLinePublisher.java 3KB
StringEventPublisher.java 816B
StringEventHandler.java 657B
SimpleThreadFactory.java 768B
TestDisruptor.java 2KB
StringEvent.java 336B
StringEventFactory.java 436B
CustomPublisher.java 949B
CustomHandler.java 739B
util
SwitchThread.java 1KB
FileUtil.java 11KB
ProduceData.java 2KB
RandomAccessFileUtil.java 2KB
StringUtil.java 704B
.idea
.name 12B
libraries
Maven__org_hamcrest_hamcrest_core_1_3.xml 520B
Maven__junit_junit_4_12.xml 443B
Maven__org_apache_commons_commons_lang3_3_4.xml 544B
vcs.xml 167B
workspace.xml 60KB
misc.xml 7KB
compiler.xml 1KB
modules.xml 264B
encodings.xml 159B
copyright
profiles_settings.xml 74B
阿里中间件性能挑战赛答辩_1.pptx 3.82MB
goodrecords.txt 197KB
order-system.iml 1KB
.gitignore 166B
README.md 5KB
共 62 条
- 1
资源评论
土豆片片
- 粉丝: 1567
- 资源: 5642
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功