どのようにバックログが、数時間続けたメッセージ数百万があります?遅延とメッセージキューがどのようにメッセージキューがいっぱいになった後に対処する?問題を解決するために有効期限が切れる。どのように解決するには?

どのようにバックログが、数時間続けたメッセージ数百万があります?遅延とメッセージキューがどのようにメッセージキューがいっぱいになった後に対処する?問題を解決するために有効期限が切れる。どのように解決するには?

あなたは、シーンの本質のために、実際には、この質問がされて参照することは、消費者、または非常に非常に遅い消費、あなたの支出の問題はありません引き出すかもしれないということです。その後、彼らはどのように行うに父、あなたのディスククラスタのメッセージキューをほぼ満たされて、誰も消費、この時間を戦わ?あるいは数時間のこの全体のバックログがあり、この時間は、あなたはどのように行うのですか?それとも、あなたのバックログは、時間がどのように行うために有効期限が切れた後、何のニュースを設定しないようRabbitMQの結果として、あまりにも長い間のためにあるのですか?

 

だから、この事で、実際には、一般的なかなり共通線、ではないが、例えば、書き込みmysqlの後の消費者の最終消費者、mysqlは結果をハングアップするたびに、消費者側がハングアップし、通常の一般的な、大きなケースです、移動しないでください。それとも消費は、消費率が得られことは非常に遅いです何かフォーク出しました。

この事で、私たちは、1小節ずつ整理シナリオを想定する必要があり、我々は今、今失敗した後、バックログMQ内のメッセージの数が多いと、事故を持ち出し消費し、パニック

 

まだ解決されて、数時間のためにバックログ内のメッセージの(1)MQ多数

 

七、八時間午前16時00分よりバックログからMQバックログでのデータの数千万夜遅く、10ポイント、11ポイントに

 

これは、シーンに遭遇し、実際に断層線で、消費者や他の問題を修正この時間は、彼が消費率を回復し、その後消費は愚か完了し、数時間待ってみましょう。私たちの真であります これは確かにインタビューの中で話すことはできません。

 

1000は、消費者一秒、一秒3つの消費者は3000である、1分、1000万人以上180 000

 

あなたは、たとえ消費者の回復データの数千万人に何百万もの受注残であり、また回復するのに約1時間かかりますのであれば

 

次のように一般的に、この時間は、緊急時のみの一時的な拡大を操作し、具体的な手順やアイデアは、次のとおりです。

 

1)、消費者の問題を修正するには、消費の回収率を確保するために、その後、すべての既存のcnosumerを停止

2)新しいトピックを作成し、パーティションは、10倍、キューの良い10または20倍の数の元の一時的な確立であります

3)その後も、直接、一時的なポーリングに書き込まれた時間のかかるプロセス後の消費量は、キューの良い10倍の数を確立し、データの消費量のバックログまでこの展開を消費者プログラムの一時的な分布データを書きません

4)、一時的な要求により一時キューデータのバッチあたりの消費者の消費量を10回消費者を展開するためのマシンを追いました

5)このアプローチは、10倍速消費データに10回を拡大するために、一時的なキュー資源と消費者のリソースに相当します

6後)とデータ消費量の他の高速仕上げのバックログ、オリジナルの展開アーキテクチャに戻す必要があり、ニュースを消費するために元のコンシューマ・マシンを再使用

 

 

(2)私たちはここを前提と2回目のピットに来ます

 

あなたがRabbitMQのを使用していると仮定し、RabbitMQのは、データが消えて、一定時間以上のキュー内のメッセージのバックログをクリーンアップするのRabbitMQされる場合には、TTLで、有効期限を設定することができます。まあ、これが2回目のピットです。これは、データがMQの大幅な受注残になると言うことではなく、大量のデータを直接失われることはありません。

 

この場合は、理由という事実は何もバックログに、メッセージの消費者の消費のバックログを高めるために言ったが、ニュースの多くを失っていません。我々は同様のシナリオが働いていた前に、私たちは、このライン、バッチがリダイレクトプログラムを取ることができます。大規模なバックログで、我々は、我々は午後12時00分まで滞在した後、一緒にコーヒーを飲むような、将来のピークの後にデータを破棄し、そのようになり、ユーザーが眠ります。

 

我々はプログラムを書き始めたこの時間は、データのバッチを失われます、一時的なプログラムを書き、少しをチェックアウトした後、MQ内部の再注入し、日中に失われたデータと、彼にそれを作ります。それは唯一のケースであることができます。

 

バックログMQ 10,000受注は、1000件の受注が失われたに何の取引は、ありません、あなただけ行くMQを修正するために発行したマニュアルをチェックアウトする1000年の順序を置く手動でプログラムを書くことができると仮定すると、

 

(3)そして、私たちはその第三のピットを想定してみましょう

 

あなたが長い時間を取り除くしませんでしたので、もしあなたが、MQ年におけるメッセージのバックログの方法を取る場合は、ほとんど満たされたMQその結果、この時間は、あなたがになって?これを行うには、他の方法がありますか?あなたのプログラムの最初の遅い実装をした理由はありません、あなたは、一時的にプログラム、消費データへのアクセス、消費廃棄1を記述しないで、すぐにすべてのメッセージを消費します。それは、データを補足し、夜に続いて、2番目のオプションを取ります。

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/11124116.html