/alibaba-race-Middleware

Using alibaba's middleware: jStorm, RocketMQ, Tair to compute required statistics in simulated 11.11 transactions

Primary LanguageJava

代码更新 (7.6)

  • 2nd version 代码目前最完全,拿到数据直接写tair //建议先用这个,效率不一定比3rd version差

  • 3rd version 在2nd version之上把计数map<minute, money>换成了ConcurrentHashMap,单独开线程定时写tair

问题列表

未解决

  • tair 本地环境没法插入数据 //7.7 弄好本地tair

  • nimbus server 运行一段时间会崩掉 //用三台机器搭个集群,jstorm,zookeeper三台都有,rocketMQ, tair 只放在master上

  • 存储策略

    • 每拿到一条消息就写入tair, 问题是不必要的写入次数太多,每一分钟内的每个交易都写一次,优点是操作简单

    • 单独开一个线程定时去ConcurrentHashMap拿数据写tair, 问题是每次都要遍历map,可能没写完,有重复写,优点是写入次数相对少

    • 在方案二的基础上维护一个tag,标识它是否有更新,有更新的才写入tair

已解决

  • ConsumeConcurrentlyContext not found //使用mvn install 把缺失的jar补上即可

  • 精度 //计算时使用Long, 存储时除100.0转成double

  • consumeMessage(msgList, context) msgList size 一直是1 //使用consumer.setConsumeMessageBatchMaxSize,不是每来一次消息就唤醒listener,而是到一定数量批量处理

提交前注意

编译日志下载

反注释这三行, in RaceTopology line 52 - 54 // Map spoutConfig = new HashMap(); // ConfigExtension.setTaskOnDifferentNode(spoutConfig, true); // spout.addConfigurations(spoutConfig);

记得把tair注释去掉