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按小時寫入的臨時集合,在臨時集合中統計小時業務數據到小時表

   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章