2016-06-29 5 views
-1

私は、テキストメッセージを送信するAPIを開発しました。現在、同じサーバ上で実行されている3つのMySqlテーブル(sms_account、sms_number、およびsms_transaction)があります。スケーリングWebアプリケーション

複数のWebサーバー間で要求を分割するために負荷分散とパフォーマンスを向上させるためにhaproxyを使用したいと思いますが、実際にはデータベース部分の処理方法はわかりません。 master-masterシナリオで別のデータベースクラスタを作成することはできましたが、それがよりうまくいくかどうかは疑問でした。

Webサーバーと同じデータベースを含む1つのメインクラスタデータベースがあると考えました。 sms_accountテーブルとsms_numberテーブルはこのテーブルでのみ更新でき、このテーブルは頻繁に変更されないため、Webサーバのsms_accountテーブルとsms_numberテーブルを更新できます。私はその後、各Webサーバー/ mysqlインスタンスが定期的にmasterデータベースをsms_transactionテーブルのレコードで更新できると考えました。

これはちょっと面倒だと思うが、すべてのWebサーバーデータベースが小さくて速く残り、主なものが課金に使用されるため、このようにデータベースの負荷は非常に低くなると考えた。

私はデザインに関する2番目の意見が好きです。私は、Webサーバーのいずれかが他のサーバーとは独立して機能し続けるという障害シナリオでこのように思っています。

ウェブサーバーは文字通りトランザクションをログに記録しており、それはそれです。複雑なクエリはありません。私はマスターデータベースから報告などを行うことができます。

多くのありがとう

+0

こんにちはロス..完璧なマスター/スレーブスレーブ構成にされていますか? –

+0

おそらく、私はまだ複数のWebノードと単一のデータベースサーバーを使用してパフォーマンスを向上させるでしょうか?将来計画を立てることは良いことですが、 – Ross

答えて

0

「定期的に更新する」ビットの問題は常に一貫性があります。

独自のマージアルゴリズムを作成することは可能ですが、エラー処理の混乱を招くことになります。

私が本当にあなたが必要になるまで、MySQLのスケーリングを待つことをお勧めします。データアクセスコードをかなりよく分離しておくと、必要なときにいつでもリファクタリングすることができます。

あなたがリファクタリングする必要がありますかしたら、あなたは同様にMySQLを拡張する必要があることを確認し、

関連する問題