YUKI Piro Hiroshi
null+****@clear*****
Thu May 22 16:10:08 JST 2014
YUKI "Piro" Hiroshi 2014-05-22 16:10:08 +0900 (Thu, 22 May 2014) New Revision: 626993b1116cad0f83e2c448c973b6b96471c0c2 https://github.com/droonga/wikipedia-search/wiki/Droonga%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%81%AB%E3%83%8E%E3%83%B3%E3%82%B9%E3%83%88%E3%83%83%E3%83%97%E3%81%A7%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/626993b1116cad0f83e2c448c973b6b96471c0c2 Message: Updated Droongaクラスタにノンストップでノードを追加する手順 (markdown) Modified files: Droongaクラスタにノンストップでノードを追加する手順.md Modified: Droongaクラスタにノンストップでノードを追加する手順.md (+21 -3) =================================================================== --- Droongaクラスタにノンストップでノードを追加する手順.md 2014-05-22 13:08:52 +0900 (d6b4f0e) +++ Droongaクラスタにノンストップでノードを追加する手順.md 2014-05-22 16:10:08 +0900 (8700e40) @@ -18,6 +18,22 @@ ## 事前実装 +### 実装しなければならない機能 + +ノンストップでもストップ有りでも必要な機能: + + * graceful restart + * droonga-replicate コマンド + * droonga-requestのstdin対応 + +ノンストップでの追加のために必要な機能: + + * graceful stop + * last message time保持、graceful stop後に出力 + * effective message time保持、セット + * バッファ機能 + + ### Serfによる死活管理 serfを利用したクラスタの死活監視の仕組みについて、以下の挙動になるよう変更を行っておく。 @@ -32,16 +48,18 @@ droonga-engineは以下の挙動になるよう変更を行っておく。 * 新しいcatalog.jsonが監視対象ディレクトリ(staging-catalog)以下に配置されたら、即座にそれを検知する。 * effectiveDateが現在時刻より前であれば、監視対象ディレクトリに置かれたstagingなcatalog.jsonの内容を、メモリ上のcatalog.jsonの内容に即座に反映する。と同時に、ファイルへの書き込み権限がある場合は、本番のcatalog.jsonにも変更を反映する。 +もしくは、serfのメッセージを使って「新しいcatalogはここにあるよ」と通知、ダウンロードさせる仕組み。 + ### 最後に受け取ったメッセージのtimestamp * droonga-engineは、最後に自分が受け取ったメッセージのtimestampを保持する。 (last_message_timestamp) - * この情報はメモリ上の揮発性の情報としてのみではなく、不揮発性の情報として保持する。 + * この情報はメモリ上の揮発性の情報として保持する。 + * プロセス終了時に、不揮発性の情報として出力する。 * droonga-engineは、「これ以後のtimestampのメッセージのみ有効と見なす」「これ以前のtimestampのメッセージが来ても無視する」と判断する基準となるtimestampを保持できる。 (effective_message_timestamp:初期値=nil) - * この情報はメモリ上の揮発性の情報としてのみではなく、不揮発性の情報として保持する。 + * この情報は不揮発性の情報として与えられ、読み込んだ後はメモリ上の揮発性の情報として保持する。 * effective_message_timestampが設定されている場合、入ってきたメッセージのtimestampをチェックして、古いメッセージであれば破棄する。 - * effective_message_timestampよりも新しいtimestampのメッセージが来たら、メッセージを受け入れると同時に、effective_message_timestampをnilに戻す。 ### バッファ -------------- next part -------------- HTML����������������������������... ダウンロード