0

ユーザーが読むのと同じくらい書く場合、つまり、大きなサイトが異なるDBサーバー間で負荷を分散する方法を知りたいです。書き込みを受け入れる 1 つのマスターと、ユーザーにデータの読み取りのみを許可する複数のスレーブを用意するという標準的なソリューションでは、マスター サーバーがボトルネックになるだけなので、うまくいきません。

ロードバランサー -> 複数の Web サーバー -> 複数の DB サーバーを使用して大規模なサイトを管理している場合、DB サーバー間で負荷を均等に分散して、ユーザーが (せいぜい) 待機する必要がないようにするにはどうすればよいですか?マスターがスレーブを更新するか、または (最悪の場合) ユーザーがまだ更新されていないスレーブからダーティ データを読み取ることになりますか?

ありがとうございました。

4

1 に答える 1

0

マスター データベース サーバーがボトルネックになるまでには至っていませんが、急速に近づいています。70% の読み取りと 30% の書き込みの分割があります。

いくつかの解決策がありますが、どれもそれほど楽しいものではありません。MySQL にこだわっているので、主なオプションは次のとおりです。

  • 問題にハードウェアを投げます。これは私たちが長年従ってきた戦略であり、これまでのところうまく機能しています。残念ながら、私たちの成長曲線は、これ以上長くは逃れられないことを意味しています。
  • マルチマスター MySQL セットアップ。私が話していることを確認するには、 High Performance MySQLの第 8 章の「レプリケーション トポロジ」を参照してください。そのセクションで説明したように、レプリケーションは書き込みをスケーリングするための優れたオプションではありません。
  • MySQL クラスター。これを適切に調査し、テストして、書き込みパフォーマンスを改善できるかどうかを確認する必要があります。
  • ソフトウェアにパッチを適用して、操作ごとの書き込みを少なくします。これは部分的に行われましたが、どれだけ絞り込めるかはわかりません。
  • ソフトウェアにパッチを適用して、複数の独立したマスター間で書き込みを分割します。これは非常に苦痛であり、できれば避けたいと思っています。
  • 私たちのソフトウェアにパッチを当てて、MySQL への依存度を下げ、より優れた書き込みスケーリング オプションを提供する別の SQL データベースを見つけてください。

これらは現時点で私が持っているオプションですが、別のデータベースで作業している場合、または開始して選択できる場合は、オプションが根本的に異なる可能性があります.

于 2009-12-01T16:26:22.807 に答える