私は建築的な質問があります。複数の独立したmariadbの使用法:複数のコンテナまたは1つ?アイソレーションと効率
A
,B
など複数のサブシステムを持つシステムがあるとします。これらのサブシステムはそれぞれ、データを保持する必要があり、それらはすべてMariaDB
を使用します。サブシステムA
は、a_db
と呼ばれるdatabase
(create database ...
のように)が必要な場合があります。サブシステムB
には、b_db
というデータベースが必要な場合があります。さらに、microserviceとドッキングウィンドウの前にモノリシック世界でA
とB
間ではデータの共有が存在しない、一つの中央MariaDB
インスタンスを設定し、それを使用するために、各サブシステムを尋ねるとに自分自身を使用するのが一般的です共有インスタンス上database
中(ドッカで
、私たちはまた、複数のmariadbコンテナが実行していると思う、とそれぞれが保管のために、独自のボリュームをマップ(つまり、A
はB
がb_db
使用する、というように、a_db
使用しています)例えばそれぞれ/data/mdb_a
および/data/mdb_b
)。
明らかな利点は、A
とB
の完全な分離です。 A
が偶然B
のデータを混乱させる心配はありません。また、2つのサブシステムは独自のMariaDBコンテナをシャットダウン/再起動するか、MariaDBバイナリをアップグレードするかを独自に選択できます。
一方、私の同僚の中には、複数のMariaDBコンテナの実行が非効率的であり、この方法がリソースの浪費を課すと主張している人がいます。
この2つのアプローチの間のトレードオフについて、彼らの経験的測定値と記事でよく議論されていますか?
あなたが言うように、トレードオフがあります。 「分離」は「効率」よりも重要ですか?あなたは、アプリがサーバーの馬力を使い切ってしまうほど近くに来るかどうかはまだ分かりません。 –
私は同僚と一度同僚との議論を持ち、データベースをコンテナ化する時期を決める指標を思いつきました。それは単純で、アプリケーションごとのデータベースの問題の数と、そのクラッシュが他のアプリに何回影響したかを比較します。私たちはパーセンテージを得て、それが30%以上であれば問題のアプリを分離し、他のシステムの安定性をそれだけ高めるでしょう。私はこれに対する私たちの最終的な解決策を説明する答えを考え出すつもりです。我々は最終的にすべてをコンテナ化することになったが、特別な方法でデータベースコンテナを扱わなければならなかった。 –