mongodb日志服务器方案

描述

目前要做的是多台服务器上的程序日志(如订购日志,交易日志,接口是否成功等)汇总到1个mongodb服务器,每日大约1亿的量,然后有图表实时展现,和报表展现日志信息

 

注意:

            没有把所有日志放入1张表里面,因为日志插入很频繁会导致锁表,二是量大了影响查询速度。没有考虑用分片,因为针对我们的业务查询,分片没得分表效率高。用上了mongodb的副本集来保证服务器稳定运行 和 主从库读写分离来提高效率。

 

方案

 1:简化入库,使用log4j配置把log4j日志以统一的json格式直接存入到mogodb

 2:建立4张表

   a:总表(全部日志)【单独建个库来保存,这样防止写入全局锁影响查询】

   b:小时临时表:

                 格式:2013122106 注:2013年12月21日6时log4j写入的日志汇总

         小时表:(crontab或者quartz定时统计前一小时临时表的业务所需数据,如某小时交易总量,成功率,各种聚合值等)

 

   c:建立固定集合来存放最近2小时的数据。大小固定,效率高,自动会替换老的数据【随时在插入数据,所以会影响查询,建议放到mongodb的内存数据库和固定集合,提升效率】

   d:天表(小时表的汇总)

 

 业务处理

      1小时内图标实时展现(固定集合能满足)

      当天图表实时展现(小时表+固定集合能满足)

     表报统计(小时表或者天表,有需求+月表或者年表)


遇到问题

   mongodb使用import导入数据速度不稳定,所以如果导入数据有时间要求的话,建议使用程序批导入,

   mongodb对插入会出现锁表,locked集合,影响集合查询, 不要把log4j的日志直接写入总表,在统计小时业务聚合信息,因为总表数量大了,效率很慢。建议log4j按小时写入的临时集合,在临时集合中统计小时业务数据到小时表

   


你可能感兴趣的:(mongodb)