2016-08-24 7 views
0

私は食糧を配達するためのWeb /モバイルアプリを持っています。ことは、私のサーバーはもっと多くを行うよりは、をデータベースに読み込みます。今はPostgreSQLを実行していますが、問題は多くのサーバリクエストが短時間(正午と夕方)に発生するため、さまざまなインスタンス(バックアップ用のS3)が必要です。 は、のスループットを書いています。これは、状況がスケーリングされ、PGのインスタンスがウサギのように見えるため、近いものではないと思います。Redis Backupサーバーの冗長性とフェイルオーバー戦略を実現する方法

マイ制約:

  • はるか
  • 約25.000 REQ /秒を読み込むよりもを書き込み、私はデータしばらくの間、強い整合性の保証を必要とする、成長
  • を書き込みシステムに登録された後加工されていない(消費者注文はレストランによって確認された)データベースに書き込む
  • それは障害のある1(一貫性の賛成で犠牲可用性)

私の本番サーバーでいくつかのベンチマークを行うを持っているよりも、実行中のサービスを持っていないことが好ましい、Redisのは、私の現在のピークの1.5倍取り扱うことが可能です1台のサーバーのみで、List構造を持ち、注文キューの管理に非常に役立ちます。

私はセンチネル/ Clusterで箱のうちのRedisは、強い一貫性を提供することができないことを読んで、そう、これを達成するために、私はこれらの2つのことのいずれかを実行することを考えた:

  1. セットセンチネルとWaitappendfsync alwaysポリシーが設定された3つのインスタンス(1つのマスタと2つのスレーブ)を設定し、Waitが2未満の場合はクライアントをチェックインします。このようにして、Sentinelはレプリケーションとフェイルオーバーを処理し、強い一貫性。
  2. 2つ目のオプションは、appendfsync alwaysと同じ3つのインスタンスを持つことですが、これらの3つのアプリケーションサーバーにソフトウェアRAID 1を適用するだけですが、このようにして冗長性を実現するにはコントロールロジックを考えなければなりませんフェイルオーバー機能を提供します。問題は、完全な冗長性を提供するために、各Redisインスタンスで書き込みの試行を管理する必要があり、このアプリケーションがダウンした場合、もう1つのアプリケーションが停止するため、プロキシの背後でアプリケーション(node.js) 3が同期しているかどうか、同期する最新のデータは何か分からないことがあります。

私の観点から見ると、2番目のオプションは1番目のオプションよりも堅牢に見えますが、これは2番目のオプションで3番目のオプションを使用できますが、 。

私には何が欠けていますか?提案?

答えて

0

読み込みよりもはるかに多くの書き込み 約25。書き込みで000 REQ /秒と

を成長させることは、あなたがregulary変更データ構造を必要としない場合、それはあなたのために良い選択かもしれない、カサンドラ(https://cassandra.apache.org/)を見ました。

私はセンチネル/ Clusterで箱のうちのRedisは、強い一貫性に

を提供することができないことを読んではい、それは本当です。

あなたは25.000書き込み/秒を持っている場合は、WAITappendfsync alwaysは良い選択ではありません。

よろしくお願いします。

関連する問題