電子商取引 Web サイトを構築する場合、さまざまなフラッシュセールや人気商品が登場することが多いため、電子商取引では常に高い同時処理が最も重要です。最初に私がどのように処理したかの記録です
前に書きます:
1. この記事で設計された並列処理は、垂直方向の拡張を目的としたものではありません。水平拡張、つまり、PHP レベルからデータベース レベルまでの処理を設計するだけであり、複数のサーバー、クラスター、大帯域幅などの水平方向の設計は伴いません。
2. この記事で説明する高い同時実行性は、淘宝網、JD.com などの数百万または数千万の高い同時処理ではなく、最大 2 までの通常の同時処理です。
3 、この記事は悲観的ロックや楽観的ロックを設計しません。
問題:
通常の電子メールでのフラッシュ販売における同時実行の問題コマース、過剰販売問題
例:商品数 100、フラッシュセール数 10,000、フラッシュセール開始時刻
おおよそのプロセスフラッシュセールの内容:
①クリックして商品詳細(フラッシュセール)を購入 -- 》②情報を入力して注文を送信 -- 》③支払い
ソリューションのアイデア:
1. 人数バルブの設計
3. 質疑応答の設計
4. 🎜>
5. ページの静的デザイン
アイデアの理解:
1. 人数バルブのデザイン: ユーザー母集団のフィルタリング。
製品の数量はわずか 100 個、即時販売数は 10,000 個ですので、バルブを 1 つ設計します (状況に応じて、3 つまたは 2 つのバルブを設計することもできます)。
正時に、「購入」ボタンをクリックした後、情報入力ページにアクセスし、情報入力完了後に注文を送信するのに 500 人だけが参加しました。効果は次のとおりです。①クリックして商品詳細(フラッシュセール)を購入 -- 「②注文を送信するための情報を入力 --」 ③ 支払い
10,000 名 500 名 (バルブもここで設計できます) 、のみ許可します 支払いのためにエントリーした人の数)
エントリーしていない他の人にどう対処するか?これは、掴まれているか、列に並んで待機していることを示します (これは、後述するキューイング システムの設計です)。
2. メンバーのキューイング設計: ユーザーをキューに入れ、先頭にいるユーザーが最初に購入します
これは、フラッシュ セールの結果が次の場合のメッセージ キュー モードと同等です。すぐにわかりますが、行列に並ぶのは少し退屈かもしれません。
2番目のステップ②で、情報を入力して注文を送信し、列に並びます。前の方は先に購入し、後ろの方は後で購入します
3. Q&A質問のデザイン: 反応が遅いユーザーを除外
最初のステップ①で購入をクリックし、質問ページにジャンプします。ユーザーは次のプロセスに入る前に正しい質問に回答する必要があります。
4. 在庫キャッシュの設計: ユーザーが購入した商品がまだ入手可能かどうかを判断するための在庫キャッシュは、データベースを読み込まず、前のフィルタリング後にデータベースへの負担を増加させません。過剰販売の可能性が比較的低い
商品の在庫を事前にキャッシュしておきます。注文が入ると、ユーザーの購入数量が 1 ずつ減ります。その都度、在庫キャッシュによって判断されます。 0の場合は売り切れを意味します。
5. ページの静的設計: 静的にキャッシュを試みます [ここでは CDN は考慮されません]
ステップ 1: 商品詳細ページ、可能な限りキャッシュを試みます複雑さを軽減するため、バッチ ユーザーが製品ページにアクセスすると、データベースに大量のクエリが実行されます。
質問と回答のページ: 完全に静的で、読み込みが速く、データベースに負担がかかりません。キュー ページ: 完全に静的で、読み込みが速く、データベースに負担がかかりません。
キュー終了ページ: 完全に静的で、読み込みが速く、データベースに負担がかかりません。
あなたのスキルを少しテストしてみましょう:
上にはナンセンスな部分がたくさんありますが、すべてをまとめると、プロセスはおそらく次のようになります:
①商品詳細をクリックして購入(フラッシュセール) --》 ②質問回答ページに入る -->> ③列に並んで待ちます -->> ④情報を入力して注文を送信 -->> ⑤お支払いページキャッシュ バルブフィルタリング キャッシュ在庫削減
ページ キャッシュ
ページ キャッシュ:
コードを独立させるにはどうすればよいでしょうか?または、自分でプロセスを作成します。今日はここまでにして、実際のコードを個別に書いてみましょう
添付:
1. ①、タオバオバルブの設計
②、大手ECサイトのフラッシュセールプロセス
③、インターネット上の各種文献
私が知っている知識は、オンライン資料やさまざまな Web サイトの参照から得たものです。私の設計はシステムで使用されており、これらの一般的な問題は基本的に解決されていますが、この設計には特定の問題や欠陥があるか、あるいは単に間違っている可能性があります。
この点についてよく知っている専門家がいて、コメントや指導をしてくれることを願っています。私にとっては学びやすく、コミュニケーションも容易です。ありがとうございます。