第1の秘密!グラブ票に大規模高性能大麦座席の選択をどのように扱いますか?

著者|アリエンターテインメントHenglei技術専門家、シニア開発エンジニアの新しいお金

制作| AI技術のベースキャンプ(ID:rgznai100)

 

背景

ライブエンターテイメント産業の発展に伴い、次々公演の様々なタイプの、より多くの公演オープン席、独立した座席選択のための出会いのユーザーの需要のチケット。ショーのような小さな劇場の会場のため、だけでなく、主要なスポーツイベント、大規模なコンサートや(例えば鳥の巣約10万など)その他の大規模な会場のためだけでなく、大麦の座席の選択。

座席選択機能はラッシュチケットの種類があるため、大麦は大きな挑戦であることをデータ量の可視化や大会場の「選挙」の「選択」です。サーバーとフロントエンドにいくつかのソリューションを通じ、読者のために、いくつかの並行性の高い実際には、この希望缶のヘルプのいくつかの側面によって、超大規模な会場、高性能座席の選択をサポートする方法について説明します。

 

コアの問題

スパイク雑貨を初めて目には、在庫があることができ、これらの商品を扱う、通常の状況下では、携帯電話のスパイクがあるなど主力ような手頃な価格の、高性能ファイルとしてのみ少数の携帯電話モデルを、取ります。座席選択グラブ票へのクラス、すべてのスクリーニングのすべての座席のすべてのために別の製品と考えることができ、会場規模の大小、大きな巣の10ワットの席を持っています。それが商品の千万レベルを伴う選挙でのグラブの投票への基底クラスで、同時に開く複数のプロジェクトに突進場合、全体の数が非常に大きくなります。現在の製品寸法大麦電気の供給者側はシートのサイズは、それがスパイクに対する当グループの能力を活用することができない商品ではありません、ちょうどチケットの屋台で、電気の供給業者、座席の選択を含むグラブ票に座席の選択クラスは、チケットの販売は、クラウド、大麦は、全体の容量のテストです。

一例として、JJ長沙のテストプロジェクトのチケット:チケットを座席のプロセス全体で見てみましょう。

1は、ユーザーが必要スクリーニングプロジェクトの詳細ページが開きます

 

 

座席選択購入、座席選択ページオープン、ビュー座席のチャートおよびチケットの屋台2.クリック

 

 

 

3. [OK]をクリックします観覧席エリアを選択し、優先座席を選択し、座席の選択

 

             

4、次のシングルのページには、オーダーを作成、配送先住所の電話番号を記入します

 

             

 

5、発券、支払いを完了するために提出します。このうち、2,3,4のリンクは座席の選択と関連しています。プロセスの観点、キーテクノロジーの座席選択からその:

  • 高速読み込みのシートマップ。実際には、すぐに負荷を読み取る能力は、ページの座席を選択します。ダウンロードするシート選択シートベースマップページ、シートの基本的な情報(アレンジする、など)がレンダリングを行うには、しかし、チケットは、ファイルを必要に応じて、決定するためのスクリーニング各座席のステータスがロックされたり販売することができるか販売されています。座席の選択ページのニーズをレンダリングデータスタジアム席50,000 -10万の大量のために素晴らしいです。

  • 高い同時実行。ラッシュチケットの数は数十万人に達する可能性がありながら、ホットチケットの不足に起因します。このような高い並行性とスループットをサポートする方法の主要なテストです。

  • ステータス更新シートの適時性シートが販売、シートのステータスを更新する必要があります。

  • グラブは、経験を投票:中グラブ票に経験より良い、最高のは、できるだけように複数のユーザーが1回の成功を購入することを、ユーザーエクスペリエンスを強化する方法を、盗もうと数十人によって複雑にすることができるホットシートで立ったとき。

高性能の座席の選択の練習

高性能座席選択のためのコア要件は、我々は次のようにいくつかの次元からグラブ投票に座席の選択クラスに行くために私たちの練習を提示。

 

1.動きの組み合わせ

データの量は、座席の選択ボトルネック「矢面に立たされています。」論理的には、ユーザーの前の座席の完全なショー、グランドスタンドの座席を含める必要性、価格、状態の販売やその他の情報を整理、観覧席、アレンジするので、事前に一定かつ予測可能であり、国家の販売ダイナミックな変化に応じてそのプロジェクトがなります。したがって、動的および静的データへのデータストローブ座分割。例えばスタジアム100,000大きい会場のために、ユーザは、ページ選択シート、静的データの座席(座席ID、チケットIDを開くかどうかを固定パッケージ、座標X、Y、および舞台、等数の数行を表しています)、これらのデータ15M程度かそこら。そのような計数速度の状態、色、グランドスタンドの状態、シートの状態、おそらく2M約10ワットスタジアムなどの動的データと結合されています。


言い換えれば、我々はより多くの17Mよりもデータの量にユーザーにのみオープン座席選択ページを対処していなかった場合。座席選択データは、OSSに保存されている場合は、誰もがあなたが取得する必要があり、同時に15M、10ワットの人々をダウンロードした場合、1500G帯域幅と高帯域幅コストを投票。静的ファイルアクセス速度の問題を解決するために、静的データは、OSSへのCDNから直接アクセスします。一方、最新のデータを保護するために、静的データは、バージョン管理を使用して。

2.プリロード静的データ

上記の高ピーク帯域幅、ピークを削減し、経験を高めるために、クライアントがデータをプリロード静的に導入されます。プリインストールされと併せて処理する静的情報、データシートに大量の情報を処理する時間、ユーザーの優先表示、静的な情報のマージンを提供し、ユーザーが効果的に座席の選択ページを開くときに、ユーザーエクスペリエンスを向上させる、待ち時間を短縮することができます。

ビッグデータによるユーザ行動の分析と合わせて、プリロードのヒット率を向上させるプリロードスクリーニングのタイプを決定します。

 

図2.1:予圧調整フロー

 

予圧+は、解析を事前に、データ準備は、会場の基本的な情報を描画し、次に予めデータビューピクチャシートが結合、プリレンダリングされたビュー及び第2のシート選択ページの効果を開くことを完了しました。

シートをコードする3データ

動的および静的なデータ量は、高いスループットを達成するために、私たちを制限するだけでなく、帯域幅およびサービスユーザトラフィックの無駄。これは、特定の許容範囲に圧縮、圧縮する必要があります。データのみの量が十分に小さい、高スループットを実現する唯一の方法です。

1)静的データエンコーディング

シートハンドルでプリロード大量のデータ(例えば、10万)プリロードのみ静的データが不十分であることが多いが、しませんでした同様のマルチスポーツイベントなどの日付の同じ時刻に、基本的に座席問題の容量を処理するデータを持っていますシナリオ、マルチスクリーニングキャッシュ制御の有無プリロードの使用量は、多くの場合、プリロードヒット率に影響を与えます。再符号化データと使用データ圧縮は、ソースでの問題を解決する効果的な方法です。

保証を提供するために効果的に圧縮データサイズができますが、また、データのセキュリティだけでなく、伝統的なXMLとJSON形式を放棄、座席データを再番号付け、彼らはので、プロトコルの符号化データの不足のインタフェースデータを取得する場合であっても、有効な元の情報を取得することはできません。

2)シート静的データ圧縮全体的なフレームワーク

現在大麦効率的なバイナリスキーム付け替えシートデータコーディングと組み合わされ、その特定の座席データ特性のためにルートから、コードを、さらにそれによってネットワーク伝送タイムシートデータを縮小、データの量を低減するために、次に、一般的な可逆圧縮を使用することは、この上に大きな解決するためにによるデータ伝送遅延の問題:

 

図3.1:静的データ圧縮処理

 

エンコードされたバイナリデータのみ、データ圧縮の使用はまた、JSONをXML解析のより少ない遅延があっても、データのセキュリティを確保するだけでなく、データ解析の効率化を確実に基づきます。さらに量産モードのツール、および両方のデータを構築する問題を解決しながら。

             

図3.2:静的データ圧縮ツールアーキテクチャ

 

ハンドシェイクのサーバー側の端によってネゴシエーションプロセスは、データの圧縮符号化及び柔軟一般組成を実現するために異なるファイル形式を終了するために、圧縮端対応Severを発行することができます。

図3.3:静的なデータ圧縮、握手交渉のワークフロー

 

CRCは、三端子H5シートの特性に基づいて互換性のIOS、Androidと垂直ハッシュチェックを開発するアイデアと組み合わせます。ケースに多くの時間をとらないように、約50ミリ秒H5側のデータの総量を検出する、十ミリ秒を達成するために端部に、60,000シート多次元情報を処理する際に、他の一般的なMD5ハッシュ計算と比較あなたはクラスの座席の解決の数万の精度を確認することができます。この完全なコードリンク検出後、従来とJSON XMLの比に維持しながら、同時に実現データ削減の体積効率的解析されたデータ、高いセキュリティを。

 

    

図3.3:圧縮データの比較

 

前記量子大麦から端であり、ダイナミック粉砕は、高圧縮率及び高速データ分析を達成するために、大きなマットビジネスシナリオと組み合わせて、辞書圧縮アルゴリズムビット。

 

図3.4:量子圧縮ファイルの構造

 

3)動的データ処理シートをコードします

困難)動的データ

シート選択動的インターフェイスは、主に、チケットストール、グランドスタンド、着座状態に関連します。状態のシートであるデータの最大量。50,000席のスタジアムで、例えば、各シートは、先端がレンダリング状態に戻らなければなりません。、座席IDとキーの状態を使用しているので、シートより全体リターン結果が大きすぎるように、1M上に50,000席スタジアムデータバック。

ページは、データ・スループットの座席指定1Mの量を開くために必要がある場合、基本的なインタフェースは使用できません。ポリシーは、グループ化戦略に従ったものである前に、約50,000はとても基本的なインターフェイスを達成するためには利用可能ですが、全体のスクリーニングの状態を取得するための端に要求する必要が10倍を考えることができ、10グループ、100K程度のデータ量ので、それぞれの要求に分割されますそしてどのくらいの衝撃性能を知っています。50,000席のスタジアム場合は10万枚のピークラッシュチケットは、このインタフェースは唯一の100万QPSが必要になります、それは確かにすべてのハングをつかむだろう。

b)のプログラム

現在、インタフェースMTOPの合意により前提で、私たちは思う:MTOPは現在、バイト[]配列のストリームをサポートしていない、だけでJSONをサポートストリング構造形式を。データが返さ減らすためにどのように、同時に全体の競技場の座席の状態、我々の努力の方向を返したらと呼ばれる簡単なプログラムを、使用してみてください。

大量のデータは、冗長座席IDが多い主な理由です。これらの座席番号に依存しない方法はありませんか?私たちは、静的および動的な分離を行うので、静的データがすでに席のID、我々は唯一まだ内部の座席を戻すために、その状態に対応する状態に戻す必要がある動的インターフェイスをカバーしました。我々はさらに、返された結果のサイズが小さくなり、隣接状態をマージする簡単な結果に戻ります。ユーザがシート正規分布シート、及び5ワットシート20K未満の平均リターンの平均長さを選択したと仮定する。

我々MTOPプロトコルは、バイナリストリームをサポートしている場合はもちろん、我々はビットのビットを格納することができ、あなたはさらに、返される結果のサイズを小さくすることができます。

4.効率的なキャッシュ

1)キャッシュ

このような高いTPSについて、TAIRは最良の選択です。このような高いピークをサポートするために、データをローカルキャッシュを使用してTAIR +。彼はここで私たちの政策のいくつかを言及し、TAIR述べました。座席の選択へのユーザーページには、スタンドの一つであり、私たちはスタンドのキャッシュ、すなわちスタンドレベルのキャッシュを設計している。ユーザーが席を選択されます、我々はまた、座席のキャッシュを追加し、キャッシュのシートサイズです。チェックするために、ユーザーを保護するために、2つのキャッシュスタンドを、ユーザーが無線基地キャッシュにヒットすることができます。非シーンシートの選択からのリアルタイムデータの近くにできるように、ホットキーをstandcache TAIRなLocalCacheとグアバなLocalCacheそれによってTAIRの読み取りに減圧し、スループットを増加させるための導入ので。

2)下流のシステムを保護

現在、下流のロックへの呼び出し、TAIRグローバルロックを使用しての戦略を使用しています。ロック要求チケット雲の下のデータを取得するために行く前に。私はTAIRキャッシュを更新するためのプロセスでロックされてしまいました。実際には、TAIRの書き込みや、比較的小さなQPSが、各競技にここからは、TAIRたり小さすぎないのロックをお読みください。ローカルロックTAIR +ランダム透過性を使用することでロックがかかり読み取りQPSを減らすようになりました。下流の依存関係をダウングレード行うためには、ダウンストリームデータのスナップショットへのすべての呼び出しを記録し、データのスナップショットを増加させました。特定のコールの採用前にスナップショットを補うために失敗した場合。

3)タイムリーなデータ更新を保証します

我々はTAIRグローバルロックを使用するので、あなたは二年生で呼び出さ下流を制御することができます。非同期トリガを呼び出します。それは私たちが、下流へのコールを開始最短1秒をトリガします。我々は、ユーザーが1秒未満の遅延を与え、クラウド・チケットインベントリ機能を最大限に活用したい場合は、我々はいくつかの戦略を持っています。1秒スレッドロック中に通話データの更新作業を取得し、データ更新戦略にいくつかのタスクを行う、1秒以内に1つの複数のチケットのコールや雲を開始し、より多くの呼び出しがよりタイムリーな更新をTAIR。ユーザが特定のシートの選択有するので操作を、ユーザの遅延は、一般的に500msの実質的に知覚されません。

4)キャッシュウォームアップウォームアップ一見、便利なユーザーエクスペリエンスとシステムの性能をバッファリングします。特定の戦略を使用してグラブ票のプロジェクトは、事前に自動化されない熱を。

 

5.セキュリティおよび災害復旧

1)安全性

上記のデータ符号化と暗号化、およびストレージ・パスから作られた大麦席を見てすることはない、時間に対するオープン席レース保護するために、混乱を行い、ひび割れすることができないデータを安全シート選択データを保護するために。また、座席の選択ページレイアウトの予防と制御の戦略、セキュリティはをクリックして実際に必要である座席の選択の直接注文をバイパス防ぐためにブラシを防ぐために、注文を完了するために席。同様の戦略が無効なトラフィックの座席の選択を低減することにより、安定性を向上させます。

2)災害復旧

座席の選択は、主に以下の分野での災害を作っています。静的データは、現在、ストレージ、地域の災害復旧を使用し、OSSに格納され、PCと無線サーバークラスタの分離を行った。TAIRは、ハンドオーバ失敗が時にスタンバイキャッシュバッファを行うことができる使用しました。

 

概要

本論文では、データ処理、座席選択パフォーマンス、キャッシング、などいくつかの実用的な戦略アップ大麦パフォーマンスオプション席。これらのプラクティスを通して大麦はグラブにアイテムの数十万人を簡単に運ぶことができ、現在トップのトラフィックを投票。

【end】


「大きな開発者やAIの研究」、わずか2分の記入をスキャンFanger魏コードの下にあるすべての開発者へようこそ、あなたは299元の値を収穫することができ、「AIの開発者百万人大会」のライブオンラインチケット!

推荐阅读全球呼吸机告急!医疗科技巨头美敦力“开源”设计图和源代码使用大batch优化深度学习:训练BERT仅需76分钟 | ICLR 2020
互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家
微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!2020年,这20个大家都认识的加密交易所过得怎么样?你点的每个“在看”,我都认真当成了AI
リリース1375元の記事 ウォンの賞賛10000 + ビュー685万+

おすすめ

転載: blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/105354903