大众点评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

相关文章
相关标签/搜索