ここで私は、ビューの他のオンライン大物上に描画します:
ワン:
高同時によってもたらされる課題
理由:スパイクラッシュは、多くの場合、数十速い毎秒数千人のユーザーに結果を返す並行性の高いシナリオをもたらすでしょう。
スループット指数QPS(秒あたりの処理要求)が、100ミリ秒に消費するサービス要求の応答時間を想定し、我々は、接続500のその最大数にそれぞれを10台のWebサーバーを持っています。
計算され、理想的な:
10 * 500 / 0.1 = 50000
私たちは本当にハンドル50,000同時を持っていますか?
それ以外の場合。並行性の高いシナリオは、Webサーバーが接続プロセス、より多くのCPUのコンテキストスイッチのより開きます。CPUは、多くの人が期待するよりも、消費するCPUサービス要求の応答時間につながる、圧力を増加します。たぶん、あなたは2万同時に耐えてきました。
私たちが行う方法に必要なこの時間?
A: 1、インターフェースはどのように行う、合理的な要求を設計する必要がありますか?
静的および動的な分離、静的なHTMLは呉で展開することができます。
高速メモリアクセスの背景、高圧貯蔵同時実行、MySQLの不適切Redisのコア・インタフェースのボトルネック。
2、再起動および過負荷保護
は接続を処理しないためにサーバーを引き起こしますYingkang 2〜3万の同時フローは、利用可能な場合は、システムが異常状態に陥ると、応答時間が遅います。ときに長い時間のために、システムの応答時間は、一部のユーザーは、より頻繁にクリックを好みます。悪循環、「雪崩」につながる、システム全体でもサービスは助けにはならなかった再起動し、崩壊しました。
方法は?
システムがフルの状態を検出した場合、過負荷、自己保護の要求を拒否します。
(1)濾過遠位端によって簡単な方法は、
(2)CGIエントリレベルの過負荷を配置、クライアントからの要求を直接返さ
2:
高い同時実行でのデータセキュリティ
、複数のスレッドが同じファイルに書き込み、「スレッドセーフ」が表示されます。高い同時データセキュリティが真実です。例えば、スーパー脂肪があるかもしれません。
プログラム:
悲観的ロックのアイデア:データを変更、ロック状態、外部の要求拒否変更。
短所:
いくつかの非常に同時実行スレッドが、この「ロック」をつかむことはありませんが、リクエストが死んでしまいます。ある程度蓄積し、接続の数は、システム例外が排出されます。
FIFOキューのアイデア:要求は常にロックを取得することはできませんいくつかの要求につながらない、並んでいます。
短所:
メモリキューにつながる可能性が高い同時実行は、「爆発」あなたは偉大なメモリキューを設定した場合、システムは、要求の連続急速な流入の速度は追いついていない要求を処理します。積み上げられ、または遅く応答になり、システムは例外をキャッチしました。
オプティミスティック・ロックの思考:
悲観的ロックと比較するとは、楽観的ロックは、要求を実行する資格がありますが、成功したとみなされ、更新のバージョン番号と一致して、バージョン番号を取得します。
デメリット:
計算するコンピュータのCPUのコストを増大させるが、これはよりよい解決策です。
キャッシュサーバアイデア:
Redisのデータは、各マシンの平均にキャッシュすることができることを確実にするために分散させることができ、最初に考えたが、Redisのキーと値の店舗であるため、最初に考えたが断片化ハッシュである、データの断片化に近づくことで、可能性は、分散マッピングの数を法として長い値を取得するために、キーをハッシュすると、対応するデータベースになるために、あなたは見つけるために、このデータベースを読み取ることができないです
3:
高い同時実行の下に水をし、殺害。
理由:時々 、本当にユーザーではない大規模なスパイクや購入、および他の要求は、いくつかの「盗まれた」商品は、いくつかの「ブラシ票」および他の同様のツールを使用するための要求を送信します。このアプローチは、サーバーに多くのリクエストを送信するためにそれらを支援しています。また、より高度な自動要求スクリプトの一部を生産。これらのプラクティスはリクエスト数のその割合は、成功率が高い以上のものを作っています。
これらの不正行為に属しているが、我々はまた、いくつかの解決策を持っていることは明らかです。
:次のケースに分け
1、同じアカウント、一回の送信要求の装置。
高い同時実行は、特定の論理的な判断をスキップする可能性があります。
プログラム:入学プログラム、一度だけユーザの要求、他のフィルタ。Redisのメモリキャッシングサービスにより、フラグを書き込む(ウォッチ楽観的ロックの唯一つの要求が成功することができ、結合特性)
2、複数のアカウントに複数の要求を送信する1回限り
早期登録機能の多くは、いくつかの特別な仕事で、その結果、限定されないが、自動的に登録されたスクリプトを書くことで部屋が多数登録された「ゾンビアカウントを。」大幅に勝利の彼らの確率を高めるため、ブラシの挙動だけでなく、いくつかの転送懸賞のすべての種類に特化。
プログラム:IPマシン指定された要求頻度を検出、IPの要求が非常に高い周波数であれば。それはその要求のポップアップまたは禁止をコードします。
3、複数のアカウント、異なるIPは、別の要求を送信するために
、いくつかの機関がIPの排他的なグループを所有し、その後、これらの「スタジオ」の使用を提供するために支払わランダムプロキシIPサービスを、作られました。プロキシIPの輸出にいくつかの直接ユーザーのコンピュータブラックアウト、前方のIPパケット、そのので、普通のユーザーのコンピュータがあります。
ソリューション:区別することは困難、とに簡単に「フレンドリー・ファイア。」あなたは、ビジネスの高いしきい値によって、またはにより事前にクリーンアップすることができ、「データマイニング。」
個人的な仕上げ同時ソリューション。
アプリケーションレベルA:別々の読み取りおよび書き込み、キャッシュ、キュー、クラスター、トークン、システムの分解能、分離、システムのアップグレード(膨張方向が水平方向であってもよいです)。
。空間Bのための時間:単一低減要求時刻は、システムは、単位時間における並行性を改善することになります。
。時間Cスペース:バックエンドシステム容量の空間と引き換えに、全体の処理時間ビジネスを長く。