BitTraceProject

BitTrace Project API Documents


exporter

<p>[TOC]</p> <h3>简要描述</h3> <p>完成 exporter 数据上报服务的主逻辑。</p> <p>exporter 的任务之一是读取 btcd 通过 logger 输出的日志,包括如下工作:</p> <ul> <li>直接主动读取日志</li> <li>先被动监听日志,然后再主动读取日志</li> <li>自动切换日志分组和分片</li> </ul> <p>exporter 的另一任务是,依赖 receiver 服务完成 exporter 注册、退出和数据上报,包括如下工作:</p> <ul> <li>启动 exporter 时将在 receiver 中注册元信息</li> <li>数据上报时同时上报数据和当前的进度信息</li> <li>退出 exporter 时将在 receiver 中清除元信息</li> </ul> <h3><code>ExporterServer</code> 数据结构</h3> <pre><code class="language-golang">type ( // ExporterServer 串行化的,无需加锁 ExporterServer struct { conf config.ExporterConfig watcher *fsnotify.Watcher // 进度信息,用于同步和恢复启动 currentProgress protocol.ReceiverProgress // filepath = LogFileBasePath + "/" + loggerName + "/" + currentDay + "/" + currentFileID + ".log" currentFilepath string // 设置的同步时间间隔 pollInterval time.Duration // 当前的同步时间间隔 currentPollInterval time.Duration stopCh &lt;-chan struct{} } )</code></pre> <h3>方法接口列表</h3> <ul> <li><code>func (s *ExporterServer) Run()</code></li> <li><code>func (s *ExporterServer) poll()</code></li> <li><code>func (s *ExporterServer) watch(waitWatchCh chan&lt;- bool)</code></li> <li><code>func (s *ExporterServer) export() (nextDay, nextFile bool, err error)</code></li> </ul> <h3><code>Run</code> 方法接口</h3> <h5>方法参数介绍</h5> <ul> <li>无</li> </ul> <h5>返回值介绍</h5> <ul> <li>无</li> </ul> <h5>调用逻辑</h5> <ul> <li>Run 启动一个 exporter server 的运行。</li> <li>启动前会先向 receiver 注册 exporter。</li> <li>并且如果 receiver 返回的历史进度信息不为空,则将历史进度初始化到 exporter 中,实现进度信息的恢复。</li> </ul> <h5>注意事项</h5> <ul> <li>无</li> </ul> <h3><code>poll</code> 方法接口</h3> <h5>方法参数介绍</h5> <ul> <li>无</li> </ul> <h5>返回值介绍</h5> <ul> <li>无</li> </ul> <h5>调用逻辑</h5> <ul> <li>poll 是一个循环的逻辑,通过定时轮询和被动监听相结合的方式从日志文件中获取数据。</li> <li>并且根据获取的结果自动完成日志分组和分片的切换。</li> </ul> <p>其中,定时轮询的日志获取方式,是在权衡了在日志输出频率过高,日志文件过大、日志 IO 阻塞严重等对性能、实时性的限制情况下,所设计的一种方式,与 logger 的日志分组分片是协同工作的。</p> <p>另外,在日志输出频率正常、日志 IO 阻塞正常的情况下,为了优化定时轮询所带来的的实时性延迟,同时引入了被动监听的方式。</p> <p>两种方式可以自动在最适合的选择中无缝切换。</p> <h5>注意事项</h5> <ul> <li>无</li> </ul> <h3>其他方法接口</h3> <p>详细设计:<a href="https://github.com/BitTraceProject/BitTrace-Exporter/blob/main/server/export.go">BitTraceProject/BitTrace-Exporter/server/export.go</a></p>

页面列表

ITEM_HTML