メッセージ ブローカーとして rabbitMQ を使用し、ほとんどのスクリプトを、直接の書き込み/読み取りを実行する代わりに、データをキューに送信するように切り替えます。コンシューマーはこれらのメッセージを取得し、対応する操作を実行します。私の夢では、これにより、DB エンジン、アプリ レベルのシャーディングなどをより柔軟に選択できるようになります。しかし、それは一般的に良い考えですか?または、何か不足していますか?現在の書き込み負荷は、mysql で 15,000 回の挿入/削除、redis インスタンスで 30,000 ~ 50,000 セットです。読み取り負荷は同じ ~15 ~ 20k の選択であり、redis の場合は 50 ~ 70k の取得です。
質問する
160 次
2 に答える
0
amqpを使用すると、RPC方式を使用して非同期操作を実行できます。この種のアーキテクチャでは、非同期操作に関連するすべての問題を把握する必要があります。
于 2012-09-28T08:52:02.450 に答える
0
直面する最大の問題は、DB 書き込みが非同期で処理されるという事実です。クライアントがデータを DB に書き込んですぐに読み戻す場合、Rabbit キューが非常にビジーであるか低速であり、更新操作が遅れている可能性があるため、値は最初に挿入されたものではない可能性があります。または、管理者が誤ってキューを消去した場合、これらすべてのクライアントは、トランザクションがコミットされたと思っても、何も保存されていない可能性があります。
これは、時期尚早の最適化の典型的なケースのように思えます。これは問題を探すための解決策であり、おそらくそれを避けるべきです。
于 2012-09-28T05:26:40.297 に答える