zoukankan      html  css  js  c++  java
  • 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按小时写入的临时集合,在临时集合中统计小时业务数据到小时表

       


  • 相关阅读:
    【洛谷P2967】【USACO 2009 Dec】电子游戏 Video Game Troubles
    2021-09-11 刷题 39. 组合总和
    2021-09-10 刷题 160. 相交链表
    2021-09-09 刷题 141. 环形链表
    2021-09-08 刷题 20. 有效的括号
    2021-09-07 刷题 119杨辉三角2
    2021-08-01 刷题 合并两个有序链表
    2021-07-31 leetcode刷题记录 两数之和
    根据需要数据库的内容,封装增删改查的sql函数
    QT 对XML 文件进行增删改查
  • 原文地址:https://www.cnblogs.com/weipeng/p/4256059.html
Copyright © 2011-2022 走看看