2016阿里中间件性能挑战赛初赛代码
#初赛排名 此次比赛是以队伍为单位参加,我们队有三个人,初赛的排名是18/1946,截止日期前的最好成绩是:耗时284068ms,准确率100%
开发语言java,依赖管理Maven,JDK7
#第一赛季赛题说明 题目:模拟实时统计阿里双十一交易数据 赛题描述:我们将脱敏后的双11交易数据存储在RocketMQ中,选手利用JStorm从RocketMQ拉取数据,按照要求实时计算出结果,并将结果写入Tair。我们约定用整分时刻对应的时间戳来标识这一分钟,比如2015/11/11 08:11:00分钟对应的整分时间戳为1447200660,那么我们就用这个时间戳来表示这一分钟,即2015/11/11 08:11:00~2015/11/11 08:12::00(不包含这一时刻)。 选手需要计算的统计值如下: 1、分平台(淘宝、天猫)每分钟的交易金额,即计算每一分钟内的交易值。比如计算2015/11/11 11:11:00这一分钟的淘宝交易金额,就是统计从11:11:00分开始到11:12:00(不包含该时刻)这一分钟内的淘宝的交易总金额; 2、每整分时刻无线和PC端总交易金额比值;注意这里统计的是整分时刻对应的总交易比值,要将过去发生的所有交易都计算进去。比如计算2015/11/11 11:11:00整分时刻的交易比值,那么需要统计从交易开始时间到2015/11/11 11:12:00(不包含该时刻)这一区间内所有的交易值,来计算无线和PC端的比值; 最终存储到Tair 中的数据是key-value 的结构,key字符串格式, value是number类型。 key 统一以“固定前缀_整分时间戳”方式命名的字符串,整分时间戳就是整分时刻对应的时间戳,例如2015/11/11 08:11:00分钟对应的时间戳为1447200660(注意是10位数),即该时刻的整分时间戳。 (1)淘宝每分钟的交易金额的key是“platformTaobao_整分时间戳”,值都是number类型;例如存入Tair的分平台淘宝实时交易金额格式如下:{"platformTaobao_1447200660": 100} (2)天猫每分钟的交易金额的key是“platformTmall_整分时间戳”,值都是number类型;例如存入Tair的分平台天猫实时交易金额格式如下:{"platformTmall_1447200660": 200} (3) 每整分时刻无线和PC端总交易金额比值的key为“ratio_整分时间戳”, 值是一个保留两位小数的number类型。例如存入Tair的无线和PC端实时交易金额比值格式如下:{"ratio_1447200660": 2.12} 最终选手提交的代码,会跑在我们后台部署的集群上,我们后台部署的产品版本是:JStorm-2.1.1,RocketMQ-3.2.6,Tair-2.3.4。
该赛题评判标准依据计平均准确度和平均耗时。 (1) 平均准确度:对每个整分时刻的统计值进行验证,计算每一个统计值的准确度,然后求平均值,得到的就是平均准确度。 (2) 平均耗时:每个统计值的耗时是指从拓扑开始提交,到把这一统计值写入Tair这一时段的时长。我们会计算出每个统计值的耗时,求平均值,得到的就是平均耗时。 优先根据平均准确度对各支队伍进行排名,准确度越高的,排名靠前;准确度一样的再根据平均耗时排名,耗时越短的队伍排名靠前。比赛周期每天给出的排名都是根据每只队列历史最优的成绩进行排名的。最终会筛选出Top100的队伍参加复赛。
(1) 只要满足功能要求即可,让选手自己学会如何使用RocketMQ/JStorm/Tair, 并学会如何搭建这3套系统,如何使用这3件产品; (2) 可以让选手前期进行自我学习,我们提供模拟交易的数据, 让用户自行下载,自行搭建测试环境。