用vertx實現高吞吐量的站點計數器

工具: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 工具

相關文章
相關標籤/搜索