大衆點評Cat源碼分析(二)——MessageTree從服務端接收到寫入磁盤邏輯序列

1、MessageTree寫入磁盤邏輯序列圖

輸入圖片說明

2、MessageTree寫入邏輯步驟

  1. MessageTree被Period分發到不一樣的PeriodTask異步

  2. 不一樣的PeriodTask調用對應的Analyzer處理MessageTree,上面的序列圖,是以DumpAnalyzer爲例.net

  3. DumpAnalyzer調用抽象父類AbstractMessageAnalyzer中的analyze方法,處理messageTree,該方法內容調用抽象方法process,每個Analyzer的process都有具體的Analyzer作不一樣的實現。DumpAnalyzer按照本身的業務邏輯實現process方法。線程

  4. 該DumpAnalyzer的process方法調用LocalMessageBucketManager的storeMessage方法,將MessageTree落盤。具體的落盤分兩步,以下:blog

第一步: 一、將MessageTree分發到隊列中,啓動20個MessageZip的異步線程,作壓縮處理,將多個MessageTree壓縮進一個MessageBlock,若是MessageBlock的大小>=64k,就將該MessageBlock插入到m_messageBlocks隊列中,交個BlockDumper和LogviewUploader處理。隊列

第二步: BlockDumper將m_messageBlocks隊列中的block逐個寫入磁盤,具體寫入邏輯,參考 MessageTree3——數據文件(MessageTree)讀寫磁盤詳細邏輯圖片

LogviewUploader將不在有效期內的全部文件給刪了。ip

相關文章
相關標籤/搜索