工具:vertx,redis,mongodb,log4j git
源代码地址:https://github.com/jianglibo/visitrank github
先看架构图: redis
若是你不熟悉vertx,请先google一下。我这里将vertx看成一个容器,上面全部的圆圈要么是verticle,要么是module,反正都是监听event loop。中间有一条线隔开,左边是处理http请求,是异步verticle,右边是定时任务,workerverticle(同步模型)。这是0.0.3版本的架构,若是之后加入大数据处理结果,那么左边的http会加入统计结果的模块,固然不必定要在同一台机器上了。 mongodb
目前这个架构下,用jmeter测试,并发10000没有一点问题(我手头没有产生足够多请求的机器),而后我用桌面的电脑,配置jmeter以下: json
1000并发,一直请求2天(48小时) 架构
throughout在10000,也就是每秒钟完成10000个请求,48小时就是3600×48×10000=1728000000,大概产生17亿条记录。没有问题。我观察了一下,每10分钟大概产生1.5G的日志,当日库timer每次须要执行4分钟左右,因为mongodb的插入锁存在,在这4分钟内,若是对当日库发出查询请求,目前还没有测试,可是基本不会查询原始数据,查询应该在mapreduce结果库中查询,没作一次mapreduce须要多少时间,目前还没有测试(还没开始写代码)。 并发
若是您想运行这个系统,github的readme有说明,不过在这里重复一下: 异步
vertx runmod com.m3958~visitrank~0.0.3 -conf conf.json 工具