Nov 3, 2011

fluent-logger-scala について

fluent-logger-scala の設計についてまとめておく.
概要図は以下の通り.
|fluent-logger-scala| <-- |Serialized JSON over TCP| --> |fluend|

検討事項
  1. 通信部分のシリアライズ方式について
    MessagePack-Scala は以前試したところインストールに失敗したため,JSON を用いる.ライブラリは com.twitter.util.JSON を用いる.
  2. スレッド構成について
    fluentd への書き込みは,ネットワークを介するためブロックする可能性がある.ログをとる部分でブロックしてしまうと,アプリケーション性能に大きなインパクトを与えてしまう.この問題を解決するため,送信用 Actor を用意する.fluent-logger-scala をセットアップすると,送信用 Actor(スレッド) が立ち上がる.
  3.  バッファ管理について
    自前で管理するのはしんどいので,com.twitter.util のリングバッファ(com.twitter.util.RingBuffer.scala)を採用する.
  4. エラー処理について
    今のところは指数的にリトライの時間を増やしていく方式をとる.
  5. API
    初期バージョンでは, Log.setup, Log.log,Log.close のみを実装する.
後は,実装が終わったらここに追記する予定.

No comments:

Post a Comment