6

すべてのデータをすべてのノードにレプリケートしますか、それともデータ フラグメントを各ノードに保存し、実行時に別のノードから必要なすべてのフラグメントを取得しますか? または、これはどのように機能しますか?

Mnesia の代わりに MySQL を使用しても、クラスタリングは正しく機能しますか?

4

2 に答える 2

6

デフォルトでは、すべてが mnesia に送られ、ほとんどのものは複製されます。また、mnesia テーブルをディスクに保存するか、メモリに保存するかを選択できます。基本的に、必要に応じて mnesia テーブルの場所を再構成できますが、通常、テーブルはメモリ内で複製され、近い状態を保ちます。

また、ejabberd のクラスタリングは、mnesia クラスタ上の複数のノードを介して行われることも事実であるため、おそらくそれを取り除く努力をする価値はありません。

ほとんどの mod (xeps を実装する) は mnesia を使用しますが、mysql に相当するものがあります。それはさらに広く、「_odbc」という接尾辞が付いた同等の SQL があります。例: mod_roster および mod_roster_odbc。

要約すると、軽量の mnesia を使用して構成といくつかのメモリ内のものを処理し、中央の mysql を重いものに使用することができます。mysql の場所は ejabberd config で設定できます。

于 2013-03-28T16:47:55.900 に答える
3

Mnesia はかなり簡単にクラスタリングをサポートできますが、対話型セッションで少し調整する必要があります。erl正確なメカニズムに関しては、すべて erlang と mnesia の組み込みクラスタリングによって処理されますが、それは私の専門知識を超えています。各ノードにコピー (レプリカ) を保存するように指示できますが、このドキュメントの最初のコメントが示唆するように、ニーズに合わせて調整する必要があるきめ細かいコントロールです。残念ながら、断片化がどのように機能するかについての情報は見つかりませんが、mnesia が別のノードから取得した構造を (構成に応じて、メモリまたはディスクに) キャッシュすると思われます。

SQL には注意事項があることを説明しているので、これを参照してください。つまり、SQL を使用しても ejabberd での Mnesia の使用がなくなるわけではありません。共有 mysql ホストが 1 つのオプションになるか、共有 SQL サーバーが機能するため、mysql のクラスタリング機能内でマスター/スレーブ レプリケーション構成を使用することもおそらく機能するようです。

于 2013-03-28T14:10:07.293 に答える