用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j

源代码地址:https://github.com/jianglibo/visitrank

先看架构图:

用vertx实现高吞吐量的站点计数器_第1张图片


如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要么是verticle,要么是module,反正都是监听event loop。中间有一条线隔开,左边是处理http请求,是异步verticle,右边是定时任务,workerverticle(同步模型)。这是0.0.3版本的架构,如果以后加入大数据处理结果,那么左边的http会加入统计结果的模块,当然不一定要在同一台机器上了。

目前这个架构下,用jmeter测试,并发10000没有一点问题(我手头没有产生足够多请求的机器),然后我用桌面的电脑,配置jmeter如下:

用vertx实现高吞吐量的站点计数器_第2张图片

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


你可能感兴趣的:(Vertx)