工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉v
工具:vertx,redis,mongodb,log4j
源代码地址:https://github.com/jianglibo/visitrank
先看架构图:
如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要么是verticle,要么是module,反正都是监听event loop。中间有一条线隔开,左边是处理http请求,是异步verticle,右边是定时任务,workerverticle(同步模型)。这是0.0.3版本的架构,如果以后加入大数据处理结果,那么左边的http会加入统计结果的模块,当然不一定要在同一台机器上了。
目前这个架构下,用jmeter测试,并发10000没有一点问题(我手头没有产生足够多请求的机器),然后我用桌面的电脑,配置jmeter如下:
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