2017-10-11 1 views
0

私は建築的な質問があります。複数の独立したmariadbの使用法:複数のコンテナまたは1つ?アイソレーションと効率

A,Bなど複数のサブシステムを持つシステムがあるとします。これらのサブシステムはそれぞれ、データを保持する必要があり、それらはすべてMariaDBを使用します。サブシステムAは、a_dbと呼ばれるdatabasecreate database ...のように)が必要な場合があります。サブシステムBには、b_dbというデータベースが必要な場合があります。さらに、microserviceとドッキングウィンドウの前にモノリシック世界でAB

間ではデータの共有が存在しない、一つの中央MariaDBインスタンスを設定し、それを使用するために、各サブシステムを尋ねるとに自分自身を使用するのが一般的です共有インスタンス上database中(ドッカで

、私たちはまた、複数のmariadbコンテナが実行していると思う、とそれぞれが保管のために、独自のボリュームをマップ(つまり、ABb_db使用する、というように、a_db使用しています)例えばそれぞれ/data/mdb_aおよび/data/mdb_b)。

明らかな利点は、ABの完全な分離です。 Aが偶然Bのデータを混乱させる心配はありません。また、2つのサブシステムは独自のMariaDBコンテナをシャットダウン/再起動するか、MariaDBバイナリをアップグレードするかを独自に選択できます。

一方、私の同僚の中には、複数のMariaDBコンテナの実行が非効率的であり、この方法がリソースの浪費を課すと主張している人がいます。

この2つのアプローチの間のトレードオフについて、彼らの経験的測定値と記事でよく議論されていますか?

+0

あなたが言うように、トレードオフがあります。 「分離」は「効率」よりも重要ですか?あなたは、アプリがサーバーの馬力を使い切ってしまうほど近くに来るかどうかはまだ分かりません。 –

+1

私は同僚と一度同僚との議論を持ち、データベースをコンテナ化する時期を決める指標を思いつきました。それは単純で、アプリケーションごとのデータベースの問題の数と、そのクラッシュが他のアプリに何回影響したかを比較します。私たちはパーセンテージを得て、それが30%以上であれば問題のアプリを分離し、他のシステムの安定性をそれだけ高めるでしょう。私はこれに対する私たちの最終的な解決策を説明する答えを考え出すつもりです。我々は最終的にすべてをコンテナ化することになったが、特別な方法でデータベースコンテナを扱わなければならなかった。 –

答えて

1

コンテナ化された世界の永続ストレージは未だに未だにあり、複数のデータベースレプリカ(この場合はmariadb)を実行しているとトラフィックの多い環境で問題になる可能性があります。

使用するデータベースの数に関係なく、共有永続データストレージ(NFSなど)を使用して複数のmariadbレプリカを実行すると、一部の破損の問題が発生する可能性があります。

私はこれらのことを自分で経験していませんが、実稼働環境で作業する前に、実行中のデータベースをコンテナでさらに調査する必要があります。これについてのウェブ上の記事がたくさんあります。

多くの人がVMやベアメタルでデータベースを実行しており、ローカル開発用のコンテナ内のデータベースのみを実行しています。

関連する問題