JP2022513410A - エッジサーバを選択するためのシステム、方法、および装置 - Google Patents

エッジサーバを選択するためのシステム、方法、および装置 Download PDF

Info

Publication number
JP2022513410A
JP2022513410A JP2021548567A JP2021548567A JP2022513410A JP 2022513410 A JP2022513410 A JP 2022513410A JP 2021548567 A JP2021548567 A JP 2021548567A JP 2021548567 A JP2021548567 A JP 2021548567A JP 2022513410 A JP2022513410 A JP 2022513410A
Authority
JP
Japan
Prior art keywords
user device
edge server
probing
network key
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2021548567A
Other languages
English (en)
Inventor
トッド・セガール
ノーラン・ダニエル・オブライエン
ハンソン・ホ
フェイ・ション
ブレンダン・ボイド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Twitter Inc
Original Assignee
Twitter Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Twitter Inc filed Critical Twitter Inc
Publication of JP2022513410A publication Critical patent/JP2022513410A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

コンテンツをそこから取得するためのエッジサーバの識別子をユーザデバイスに提供するための方法、システム、およびコンピュータ記憶媒体においてエンコードされたコンピュータプログラムを含む装置。1つの例示的システムは、トラフィック制御サービスを含む。トラフィック制御サービスは、ユーザデバイスからポーリング要求を受信するように構成される。特定のポーリング要求に応答して、トラフィック制御サービスは、ユーザデバイスおよびエッジサーバについての集約されたデータを取得する。トラフィック制御サービスは、集約されたデータに基づいて、特定のポーリング要求を送ったユーザデバイス用の最良エッジサーバを選択する。トラフィック制御サービスは、選択された最良エッジサーバの識別子をユーザデバイスへ送る。

Description

本発明は、エッジサーバを選択するためのシステム、方法、および装置に関する。
本明細書は概して、サーバベースのシステム上での負荷分散に関する。
本明細書は、コンテンツプラットフォームを使う各ユーザデバイスについて、ユーザデバイスがコンテンツプラットフォームにアクセスするのに使うための最良入口経路を識別するための技術について記載する。
例示的システムは、ユーザデバイス、エッジサーバを含み、エッジサーバは、ユーザデバイスが、コンテンツプラットフォーム、集約サービス、およびトラフィック制御サービスにアクセスするのに使うサーバである。各ユーザデバイスはネットワークキーに関連付けられる。ネットワークキーの数は、ユーザデバイスの数より少ない。ネットワークキーは、ユーザデバイスの区分の識別子として働き、各区分内のユーザデバイスは、同様の特性を有する。各ユーザデバイスは、ユーザデバイス用の識別された最良エッジサーバへ、コンテンツについての要求を送るように構成される。エッジサーバは、コンテンツプラットフォームへのアクセスをユーザデバイスに提供する。
集約サービスは、エッジサーバについてのデータをユーザデバイスから取得する。本明細書では、このデータは、エッジサーバデータと呼ばれる。エッジサーバデータは、ユーザデバイスに関連付けられたネットワークキーを含む、エッジサーバデータを提供したユーザデバイスについてのデバイス情報でラベル付けされる。集約サービスは、ネットワークキーによってエッジサーバデータを集約し、集約されたデータを、物理サーバ上のメモリに記憶する。
各ユーザデバイスは、プロービング要求を、ユーザデバイス用の最良エッジサーバへ、および1つまたは複数の他のエッジサーバへ送るように構成される。ユーザデバイスは、プロービング要求へのプロービング応答を受信するか、または応答がないことを認識する。ユーザデバイスは、各受信されたプロービング応答について、ラウンドトリップ時間を判断する。
トラフィック制御サービスは、各ユーザデバイスから、ポーリング要求を受信する。それに応答して、トラフィック制御サービスは、ユーザデバイスに関連付けられたネットワークキーに一致するネットワークキーによって集約されたエッジサーバデータを、集約サービスから取得する。トラフィック制御サービスは、集約されたデータに基づいて、ユーザデバイス用の最良エッジサーバを選択する。トラフィック制御サービスは、ユーザデバイスに、ユーザデバイス用の選択された最良エッジサーバの識別子、およびユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供する。
本明細書は、「ように構成される」という用語を、システム、装置、およびコンピュータプログラム構成要素との関連で使っている。1つまたは複数のコンピュータからなるシステムが特定の動作またはアクションを実行するように構成されることは、システムが、動作の際にシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしたことを意味する。1つまたは複数のコンピュータプログラムが、特定の動作またはアクションを実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されるとき、装置に動作またはアクションを実行させる命令を含むことを意味する。特殊目的論理回路構成が、特定の動作またはアクションを実行するように構成されることは、回路構成が、動作またはアクションを実行する電子論理を有することを意味する。
本明細書に記載する主題は、以下の利点のうちの1つまたは複数を実現するように、特定の実施形態で実現され得る。システムは、ユーザデバイスとエッジサーバとの間の、エンドツーエンドの待ち時間を測定し、得られた待ち時間データを、他のエッジサーバデータとともに、各ユーザデバイス用の最良エッジサーバを選択するのに使う。具体的には、トラフィック制御サービスは、複数のユーザデバイスから収集された最新エッジサーバデータを使うことによって、ユーザデバイス用の最良エッジサーバを選択し、したがって、ユーザデバイスからの要求の配信と、エッジサーバ、およびエッジサーバがそれらの要求に応答するのに使うコンテンツプラットフォームのそれぞれの部分の能力との変化に素早く応えることができる。
ユーザデバイスからシステムによって収集されたエッジサーバデータは、特定のユーザグループ、特定のタイプのデバイス、特定のサービスプロバイダ、または特定のトランジットピアに特有の問題を検出し、システム管理ツールに警告するのに使うこともできる。
最終的に、トラフィック制御サービスが、ポーリング要求を行う特定のユーザデバイスからエッジサーバデータを取得することができない場合であっても、トラフィック制御サービスは、ポーリング要求に最良エッジサーバで応答することができる。むしろ、同じネットワークキーをもつユーザデバイスからのエッジサーバデータを有していれば十分である。
本明細書の主題の1つまたは複数の実施形体の詳細は、添付の図面および以下の説明に記載される。本主題の他の特徴、態様および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
ユーザデバイス用の最良エッジサーバを判断するように構成された例示的システムの図である。 ユーザデバイス用の最良エッジサーバを選択するための例示的プロセスのフローチャートである。 エッジサーバへプロービング要求を送るための例示的プロセスのフローチャートである。 データを集約するための例示的プロセスのフローチャートである。
様々な図面における同様の参照番号および名称は、同様の要素を示す。
図1は、エッジサーバを、システム内の各それぞれのユーザデバイス用のそれぞれの最良エッジサーバとして選択するように構成された例示的システム100の図である。システムは、ユーザデバイス、たとえば、ユーザデバイス110と、ユーザデバイスがコンテンツプラットフォーム195にそれを通してアクセスするエッジサーバ140a~140nとを含む。コンテンツプラットフォームは、集約サービス120、トラフィック制御サービス130、およびコンテンツサーバ135を含む。概して、プラットフォームは、複数のコンテンツサーバを含み、エッジおよびコンテンツサーバは地理的に分散される。
ユーザデバイスは、ラップトップもしくはデスクトップコンピュータ、電子タブレット、またはモバイルデバイスを含む、任意のインターネット接続コンピューティングデバイスであってよい。ユーザデバイスは、モバイルネットワークを通して、またはインターネットサービスプロバイダを通して、インターネットに接続され得る。図1は、単一のユーザデバイスのみを示すが、システムは、世界中の任意の場所で動作する多くのユーザデバイスをサポートすることができる。
各ユーザデバイスは、動作中にエッジサーバと通信するクライアントソフトウェアで構成される。どの特定のユーザデバイス上でも、クライアントソフトウェアは、JavaScriptコードもしくはJavaコードであるか、またはそれらのコードを含んでよい。または、クライアントソフトウェアは、特にエッジサーバと連動するように設計されている、専用ソフトウェア、たとえば、インストールされたアプリもしくはインストールされたアプリケーションであってもよい。
各エッジサーバは、1つまたは複数のコンピュータ上で、および概して、他のエッジサーバとは別個のコンピュータ上で実装される。概して、エッジサーバは、複数の異なる地理的ロケーションにあるエッジサーバを含む。エッジサーバは、クライアントソフトウェアに、コンテンツサーバへのアクセスを提供し、クライアントソフトウェアが、コンテンツサーバにコンテンツを投稿し、そこからコンテンツを受信できるようにする。コンテンツサーバは、ウェブサイト、アプリケーション、通信プラットフォームなどのコンテンツを記憶し、サービスすることができる。たとえば、コンテンツサーバは、オンラインソーシャルメッセージングプラットフォームを使うユーザからのメッセージおよび投稿を含む、オンラインソーシャルメッセージングプラットフォームのコンテンツを記憶し、サービスすることができる。いくつかのケースでは、エッジサーバはコンテンツサーバでもある。
エッジサーバは、プロービング要求、たとえば、ユーザデバイス110からのプロービング要求150に、プロービング応答、たとえば、プロービング応答152を送ることによって応答する。ユーザデバイスは、プロービング要求およびプロービング応答についてのラウンドトリップ時間を判断する。ユーザデバイスは、プロービング応答を受信しなかった場合、応答がないことを認識する。
ユーザデバイスは、算出されたラウンドトリップ時間を含むエッジサーバデータ160を、集約サービスへ送るように構成される。ユーザデバイスは、エッジサーバデータを大量に送ってよく、またはエッジサーバデータを、算出したときに増分的に送ってよい。各ユーザデバイスは、集約サービスへ送るエッジサーバデータに、ユーザデバイスのネットワークキーでラベル付けする。集約サービスは、エッジサーバデータをネットワークキーによって集約し、集約されたデータを記憶する。集約されたデータは、ネットワークキーおよびエッジサーバによってインデックス付けされてよく、容易なルックアップを可能にする。いくつかの実装形態では、集約サービスは、集約されたデータが要求されると、集約の一部または全部を即時に行う。
ネットワークキーは、いくつかのやり方で判断され得る。いくつかの実装形態では、特定のユーザデバイス用のネットワークキーは、(i)ユーザデバイスの国コード、および(ii)ユーザデバイスのインターネットプロトコル(IP)アドレスに対応する自律システム番号という要素からなるタプルである。他の実装形態では、ネットワークキーは、(i)ユーザデバイスの国コード、(ii)ユーザデバイスのIPアドレスに対応する自律システム番号、および(iii)ユーザデバイスのIPアドレスの最初の3つのオクテットからなるNタプルである。他の実装形態では、ネットワークキーは、ユーザデバイスの国コード、ユーザデバイスのIPアドレスに対応する自律システム番号、ユーザデバイスのネットワーク出口経路の識別子、ユーザデバイスが位置する地理的領域の識別子、およびユーザデバイスの接続タイプの識別子のうちの2つ以上からなるタプルである。
同じネットワークキーに関連付けられたユーザデバイスは概して、所与のエッジサーバについて、同様のエッジサーバデータを有することになる。ネットワークキーの要素は、この結果を達成するように、履歴データに基づいて選択されてよい。
ネットワークキーによってエッジサーバデータを集約することの1つの利益は、そのようなデータが、単一のユーザデバイスからのデータよりも包括的であり、最良エッジサーバの選択がより堅牢であることである。ネットワークキーによってエッジサーバデータを集約することの別の利益は、共通ネットワークキーをもつ複数のユーザデバイスが、エッジサーバの大規模セットへプロービング要求をまとめて容易に送ることができることであり、これは、単一のユーザデバイスにとっては非現実的であろう。
システム内のユーザデバイスは、トラフィック制御サービスへポーリング要求180を送るように構成される。ユーザデバイスがポーリング要求を送る頻度は変わり得る。たとえば、ユーザデバイスは、ポーリング要求を、5分、10分、または20分ごとに一度送り得る。ユーザデバイスは、ポーリング要求をより頻繁に、またはより頻繁にではなく送ってよい。いくつかの実装形態では、トラフィック制御サービスがユーザデバイスへ送る、最良エッジサーバの識別子は、ユーザデバイスが新たなポーリング要求をその後で送るべきである時間を指定する「poll-after」値を含む。ユーザデバイスは、任意選択で、それぞれの最良エッジサーバからの待ち時間の増大、または閾値を超えるレベルの待ち時間を経たときに、ポーリング要求を送るように構成されてよい。
トラフィック制御サービスは、集約サービスによって計算された、集約されたデータに基づいて、システム内のユーザデバイス用の最良エッジサーバを判断するように構成される。システム内のユーザデバイス用の最良エッジサーバを選択することによって、トラフィック制御サービスは、実際には、ユーザデバイスからコンテンツプラットフォームへの最良入口経路を選択している。トラフィック制御サービスが最良エッジサーバを選択するための例示的プロセスについては、図2を参照して記載する。
トラフィック制御サービスは、最良エッジサーバの識別子、たとえば、IPアドレスを、システム内のユーザデバイスへ送るように構成される。ユーザデバイスは次いで、それらの識別子を有するエッジサーバに対して、システムコンテンツについての要求を行う。
トラフィック制御サービスは、システム内のユーザデバイスの各々へ、ユーザデバイスがプロービング要求を送るべきである、他のエッジサーバ、すなわち、最良エッジサーバとして識別されたもの以外のエッジサーバのリストを送るようにも構成される。このプロセスについては、図2を参照してより詳しく記載する。
図2は、トラフィック制御サービスによって、システム内のユーザデバイス用の最良エッジサーバを選択するための例示的プロセスのフローチャートである。このプロセスは、単一のポーリング要求を行う単一のユーザデバイスを参照して説明される。
トラフィック制御サービスは、システム内のユーザデバイスからポーリング要求を受信する(210)。
ポーリング要求に応答して、トラフィック制御サービスは、集約サービスから、集約されたデータを取得する(220)。各ポーリング要求について、トラフィック制御サービスは、ポーリング要求を送ったユーザデバイスに関連付けられたネットワークキーと同じネットワークキーでラベル付けされている、集約されたデータのみを取得する。いくつかの実装形態では、トラフィック制御サービスは、集約されたデータを短い時間期間だけキャッシュし、キャッシュ済みデータを、利用可能なときに使う。
集約されたデータは、同じネットワークキーを共有するユーザデバイスによってプローブされた各エッジサーバについて、(i)特定の時間枠内にユーザデバイスによってエッジサーバへ送られたプロービング要求の数、(ii)エッジサーバのプロービング応答成功率、すなわち、ユーザデバイスによって受信されたプロービング応答の数を、ユーザデバイスによってエッジサーバへ送られたプロービング要求の数で除算したもの、(iii)エッジサーバのラウンドトリップ時間の算術平均または他の代表値、(iv)およびエッジサーバのラウンドトリップ時間の標準偏差、という待ち時間データを含み得る。集約された待ち時間データは、上記カテゴリに限定されない。さらに、待ち時間データ以外のエッジサーバデータ、たとえば、エッジサーバについての可用性データ、スループットデータ、およびコストデータを、集約サービスは記憶することができ、トラフィック制御サービスは取得することができる。集約サービスは、この他のエッジサーバデータを、エッジサーバから直接取得することになる。
トラフィック制御サービスおよび集約サービスは、このプロセスでは別個のサービスとして言及されるが、両方の機能は、単一の物理サーバにおいて実装され得る。
集約サービスから、集約されたデータを取得した後、トラフィック制御サービスは、特定のエッジサーバを、ポーリング要求を送ったユーザデバイス用の最良エッジサーバとして選択する(230)。いくつかの実装形態では、トラフィック制御サービスは、トラフィック制御サービスが少なくとも閾値量のデータを有する各々についてのエッジサーバの候補セットで始まる。トラフィック制御サービスは、最小平均プロービング応答成功率を満たさないエッジサーバを、候補セットから削除する。こうすることにより、過負荷エッジサーバと、利用可能でないエッジサーバとを考慮から除外する。最小プロービング応答成功率を実際に満たす各エッジサーバについて、トラフィック制御サービスは、サーバスコアを算出し、エッジサーバを、それぞれのサーバスコアに従ってランク付けする。いくつかの実装形態では、サーバスコアは、エッジサーバの平均ラウンドトリップ時間であるか、またはその関数である。他の実装形態では、サーバスコアは、エッジサーバの平均ラウンドトリップ時間にラウンドトリップ時間の標準偏差を加えたものであるか、またはその関数である。他の実装形態では、サーバスコアは、エッジサーバ用のラウンドトリップ時間の、高いパーセンタイル、たとえば、第95もしくは第98パーセンタイルであるか、またはその関数である。
いくつかの実装形態では、トラフィック制御サービスは、ユーザデバイス用の最良エッジサーバを判断するのに、他のタイプのエッジサーバデータ、たとえば、可用性データ、スループットデータ、またはコストデータを使う。可用性データは、エッジサーバが特定の時間に動作中であるか、それとも動作中でないかを示すデータ、またはエッジサーバが特定の時間期間内に動作中である代表値時間量を示すデータである。スループットデータは、エッジサーバのビットレートを示すデータである。そして、コストデータは、あるエッジサーバを通してコンテンツプラットフォームにアクセスするコストを、別のエッジサーバと対立させて示すデータである。待ち時間データとは対照的に、可用性データ、スループットデータ、およびコストデータは、エッジサーバによって直接収集され得る。
トラフィック制御サービスは、可用性データ、スループットデータ、およびコストデータを、ユーザデバイス用の最良エッジサーバを選択する際の追加要因として使うことができる。たとえば、特定のエッジサーバが、他のエッジサーバと比べて低スループットまたは高いコストを有する場合、トラフィック制御サービスは、その特定のエッジサーバのサーバスコアを調節、たとえば、低減することができる。
いくつかのケースでは、トラフィック制御サービスは、特定のユーザデバイス用の最良エッジサーバの堅牢な判断を行うのに、不十分な量の待ち時間データを有する場合がある。そのようなケースでは、トラフィック制御サービスは、判断を行うために、可用性、スループット、およびコストデータにのみ依拠すればよい。
いくつかの実装形態では、トラフィック制御サービスは、ユーザデバイス用の最良エッジサーバを識別するようにトレーニングされているトレーニング済み機械学習モデルを実装するホスト選択システムに、集約されたデータを提供する。そのような機械学習モデルをトレーニングするために、トレーニングプロセスは、たとえば、ユーザデバイスのセット用の集約されたデータを受信する。セット内の各ユーザデバイスは、たとえば、統計的方法によって選択され得る実際の最良エッジサーバでラベル付けされる。機械学習モデルによって、特定のユーザデバイス用の最良エッジサーバとして識別されたエッジサーバが、ユーザデバイス用の実際の最良エッジサーバに対応しない場合、トレーニングプロセスは、機械学習モデルのパラメータを更新する。このプロセスは、機械学習モデルのパラメータが、モデルが特定の正確さで最良エッジサーバを識別するようなものになるまで、何度も繰り返される。機械学習モデルがトレーニングされると、パラメータの最終セットが、システム内のユーザデバイス用の最良エッジサーバを判断するのに使われ得る。
トラフィック制御サービスは、選択された最良エッジサーバの識別子をユーザデバイスに提供する(240)。その後、およびユーザデバイスがトラフィック制御サービスへ新たなポーリング要求を送るまで、ユーザデバイスは、その選択された最良エッジサーバへ、システムコンテンツについてのコンテンツ要求を送る。
トラフィック制御サービスは、ユーザデバイスへ、ユーザデバイスが将来のプロービング要求をそこへ送るべきである他のエッジサーバの識別子も送る(250)。いくつかの実装形態では、これらのエッジサーバは、ユーザデバイス用の、次のN個の最も高くランク付けされたエッジサーバである。これらの実装形態のいくつかでは、Nは約30~40である。
代替実装形態では、トラフィック制御サービスは、他のエッジサーバを選択するための仮想抽選を行う。たとえば、トラフィック制御サービスは、25個のエッジサーバのランク付きリストを生成し得る。トラフィック制御サービスは、最も高いランクのエッジサーバを、最良エッジサーバとして識別する。残りの24個のエッジサーバは、特定のエッジサーバに割り当てられる抽選チケットの数がそのランクに反比例する仮想抽選に参加する。これは、最良エッジサーバである見込みがよりあるエッジサーバ、すなわち、より高いランクのエッジサーバが、より頻繁にプローブされることを保証するとともに、エッジサーバ可用性またはルートが変化したときにトラフィック制御サービスが新たな最良エッジサーバを発見することができることを保証するための、ある程度のランダム性を提供する。トラフィック制御サービスは、所定の数のエッジサーバが抽選に勝つまで、抽選チケットを擬似ランダムに選択する。勝利エッジサーバは、ユーザデバイスが将来のプロービング要求をそこへ送るエッジサーバである。
トラフィック制御サービスは任意選択で、すべてのエッジサーバがプロービングのために少なくとも一度選択されることを保証し得る。たとえば、特定のエッジサーバが、所定の数の連続抽選において選択されない場合、トラフィック制御サービスは、次の仮想抽選の結果を、そのエッジサーバが、ユーザデバイスによってプローブされるべきエッジサーバに含まれることを保証するようにオーバーライドすればよい。
図3は、エッジサーバへプロービング要求を送るための例示的プロセスのフローチャートである。このプロセスは、単一のプロービング要求を送る単一のユーザデバイスを参照して記載されるが、システム内の各ユーザデバイスは、記載したように、複数の異なるエッジサーバへ複数のプロービング要求を送る。
ユーザデバイスは、エッジサーバへプロービング要求を送る(310)。プロービング要求は、テストファイルについての要求であってよく、またはコンテンツについての要求であってよく、またはコンテンツについての要求と組み合わされてよい。
ユーザデバイスがプロービング応答を受信した場合(320)、ユーザデバイスは、応答のラウンドトリップ時間を判断する(330)。ラウンドトリップ時間は、ユーザデバイスがプロービング応答を受信した時間と、ユーザデバイスが、対応するプロービング要求を送った時間との間に経過した時間の量である。ユーザデバイスがプロービング応答を受信しない場合(320)、その事実は認識され、ユーザデバイスが集約サービスへ送るエッジサーバデータに含められる(340)。
図4は、システム内のユーザデバイスによって送られたエッジサーバデータを集約するための例示的プロセスのフローチャートである。このプロセスは、上述した集約サービスによって実行されるものとして説明される。
集約サービスは、システム内のユーザデバイスからエッジサーバデータを取得する(410)。集約サービスは、エッジサーバデータを、ネットワークキーによって、および特定のネットワークキーによって定義される各グループ内では、エッジサーバによって集約する(420)。集約サービスは次いで、各グループ内の各エッジサーバについての様々な統計を算出する(430)。統計は、プロービング応答成功率、平均ラウンドトリップ時間などを含み得る。本明細書では、これらの統計はまとめて、集約されたデータと呼ばれる。
集約サービスは、集約されたデータを、物理サーバ上のメモリに記憶する(440)。集約サービスは、集約されたデータを、ネットワークキーおよび一意のエッジサーバ識別子でインデックス付けする。エッジサーバ識別子は、たとえば、エッジサーバのIPアドレスであってよい。
集約されたデータは、定期的に再算出される。いくつかの実装形態では、所定の頻度で再算出される。それらの実装形態のいくつかでは、所定の頻度は、ポーリング要求頻度またはポーリング要求頻度の倍数である。再算出頻度がポーリング要求頻度である場合、再算出は、ユーザデバイスが各々、平均して、1つのポーリング要求を行った時間の後で起こる。定期的再算出は、ユーザデバイスが新たなポーリング要求を行うときに、集約されたデータが最新であり、現在のネットワーク状態を反映することを保証する。いくつかの実装形態では、データは、より最近のデータを奨励するように重みづけされ、いくつかの実装形態では、集約されたデータを算出するのに使われるエッジサーバデータは、所定の最近性ウィンドウに限られ、このウィンドウは、再算出頻度よりも短くてよい。
本明細書に記載する主題ならびにアクションおよび動作の実施形態は、デジタル電子回路構成で、有形に実現されるコンピュータソフトウェアもしくはファームウェアで、本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアで、またはそれらのうちの1つもしくは複数の、組合せで実現することができる。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するか、またはデータ処理装置の動作を制御するための、有形の非一時的記憶媒体においてエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして、実現することができる。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信用の情報をエンコードするように生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気、光学、または電磁信号においてエンコードされてよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の、組合せであるか、またはその一部であってよい。コンピュータ記憶媒体は、伝播される信号ではない。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、1つのコンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。データ処理装置は、特殊目的論理回路構成、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)を含むことができる。装置はまた、ハードウェアに加え、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の、組合せを構成するコードを含むことができる。
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれるかまたはそれらとして説明される場合もあり、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、どの形のプログラミング言語でも書かれてよく、スタンドアロンプログラムとして、またはモジュール、構成要素、エンジン、サブルーチン、もしくはコンピューティング環境における実行に適した他の単位として、を含む、どの形でも展開することができ、環境は、1つまたは複数のロケーションにある、データ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含み得る。
コンピュータプログラムが、ファイルシステム内のファイルに対応してよいが、そうである必要はない。コンピュータプログラムは、他のプログラムもしくはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つもしくは複数のスクリプトを保持するファイル部分に、問題になっているプログラムに専用の単一のファイルに、または複数の協調ファイル、たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルに記憶することができる。
本明細書に記載したプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによって動作を実行するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実現され得る。プロセスおよび論理フローは、特殊目的論理回路構成、たとえば、FPGA、ASIC、もしくはGPUによって、または特殊目的論理回路構成と1つもしくは複数のプログラムされたコンピュータの組合せによって実現されてもよい。
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊目的マイクロプロセッサもしくは両方、またはどの他の種類の中央処理ユニットに基づいてもよい。概して、中央処理ユニットは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信することになる。コンピュータの本質的要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回路要素によって補完することも、その中に組み込むこともできる。
概して、コンピュータはまた、1つまたは複数の大容量記憶デバイスからデータを受信し、またはそこへデータを転送するためのものを含むか、またはそれに動作可能に結合されることになる。大容量記憶デバイスは、たとえば、磁気、光磁気、もしくは光ディスク、または固体状態ドライブであってよい。ただし、コンピュータは、そのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込むことができる。
ユーザとの対話を提供するために、本明細書に記載する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、LCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供し得るための入力デバイス、たとえば、キーボードおよびポインティングデバイス、たとえば、マウス、トラックボールまたはタッチパッドとを有するコンピュータ上で実現されるか、またはコンピュータと通信するように構成され得る。他の種類のデバイスも、ユーザとの対話を可能にするのに使われることが可能であり、たとえば、ユーザに提供すられるフィードバックは、どの形の感覚フィードバックでも、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、ユーザからの入力は、音響、発話、または触覚入力を含む、どの形でも受信されることが可能である。さらに、コンピュータは、ユーザによって使われるデバイスへドキュメントを送り、デバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザへウェブページを送ることによって、またはユーザデバイス、たとえば、スマートフォンもしくは電子タブレット上で稼動するアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、パーソナルデバイス、たとえば、メッセージングアプリケーションを稼動しているスマートフォンにテキストメッセージまたは他の形のメッセージを送り、ユーザから引き換えに応答メッセージを受信することによって、ユーザと対話することができる。
本明細書に記載する主題の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含む、もしくはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、もしくはフロントエンド構成要素(たとえば、本明細書に記載する主題の実装形態とユーザが対話し得るためのグラフィカルユーザインターフェースもしくはウェブブラウザ、またはアプリを有するクライアントコンピュータ)、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素のどの組合せも含むコンピューティングシステムで実現することができる。システムの構成要素は、どの形または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によっても相互接続されることが可能である。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえば、インターネットがある。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバは概して、互いから離れており、通常、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼動するとともに互いとのクライアント-サーバ関係を有するコンピュータプログラムにより発生する。いくつかの実施形態では、サーバが、データ、たとえば、HTMLページを、ユーザデバイスへ、たとえば、クライアントとして作用するデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために送信する。ユーザデバイスにおいて生成されたデータ、たとえば、ユーザ対話の結果が、デバイスからサーバにおいて受信され得る。
上述した実施形態に加え、以下の実施形態も革新的である。
実施形態1は、
システムであって、
複数のユーザデバイスと、
ユーザデバイスにコンテンツをサービスするコンテンツプラットフォームへのアクセスを提供するように構成された複数のエッジサーバであって、各ユーザデバイスはネットワークキーに関連付けられ、ネットワークキーの数はユーザデバイスの数より少なく、各ユーザデバイスは、ユーザデバイスについてのデータによって、ユーザデバイス用の最良エッジサーバとして識別される、複数のエッジサーバのうちのエッジサーバへ、コンテンツについての要求を送るように構成される、複数のエッジサーバと、
を備え、ユーザデバイスが動作を実行するように構成され、動作は、
ユーザデバイス用の最良エッジサーバへ、および最良エッジサーバとして識別されない、複数のエッジサーバのうちの1つまたは複数へ、プロービング要求を送ることと、
プロービング要求へのプロービング応答を受信するか、または応答がないことを認識することと、
各受信されたプロービング応答について、ラウンドトリップ時間を判断することであって、ラウンドトリップ時間は、ユーザデバイスがプロービング応答を受信した時間と、ユーザデバイスが、対応するプロービング要求を送った時間との間に経過した時間の量であり、判断されたラウンドトリップ時間はエッジサーバデータとなる、前記判断することとを含み、上記システムがさらに、
動作を実行するように構成された、コンテンツプラットフォーム上の1つまたは複数のサービスを備え、動作は、
ユーザデバイスからエッジサーバデータを取得することであって、各ユーザデバイスから受信されるエッジサーバデータは、ユーザデバイスに関連付けられたネットワークキーを含むエッジサーバデータを提供したユーザデバイスについてのデバイス情報でラベル付けされる、前記取得することと、
エッジサーバデータをネットワークキーによって集約することと、
ユーザデバイスから受信されたポーリング要求に応答して、
ユーザデバイスに関連付けられたネットワークキーと同じであるネットワークキーによって集約されたエッジサーバデータに少なくとも部分的に基づいて、ユーザデバイス用の最良エッジサーバを選択することと、
ユーザデバイスに、ユーザデバイス用の選択された最良エッジサーバの識別子、およびユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供することとを含む、システムである。
実施形態2は実施形態1のシステムであり、各ユーザデバイスに関連付けられたネットワークキーは、(i)ユーザデバイスの国コード、および(ii)ユーザデバイスのインターネットプロトコル(IP)アドレスに対応する自律システム番号を含む。
実施形態3は、実施形態1~2のうちのいずれか1つの、システムであり、各ユーザデバイスに関連付けられたネットワークキーは、(i)ユーザデバイスの国コード、(ii)ユーザデバイスのIPアドレスに対応する自律システム番号、および(iii)ユーザデバイスのIPアドレスの最初の3つのオクテットを含む。
実施形態4は、実施形態1~3のうちのいずれか1つの、システムであり、各ユーザデバイスに関連付けられたネットワークキーは、ユーザデバイスの国コード、ユーザデバイスのIPアドレスに対応する自律システム番号、ユーザデバイスのネットワーク出口経路の識別子、ユーザデバイスが位置する地理的領域の識別子、およびユーザデバイスの接続タイプの識別子を含む。
実施形態5は、実施形態1~4のうちのいずれか1つの、システムであり、エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
所定の時間ウィンドウ内に、同じネットワークキーに関連付けられたユーザデバイスによってエッジサーバへ送られたプロービング要求の数を判断することと、
エッジサーバのプロービング応答成功率を算出することであって、プロービング応答成功率は、同じネットワークキーに関連付けられたユーザデバイスによって受信されたプロービング応答の数を、ユーザデバイスによってエッジサーバへ送られたプロービング要求の数で除算したものである、前記プロービング応答成功率を算出することと、
エッジサーバの平均ラウンドトリップ時間を算出することであって、エッジサーバの平均ラウンドトリップ時間は、エッジサーバによって送られ、同じネットワークキーに関連付けられたユーザデバイスによって受信されたプロービング応答について判断された、ラウンドトリップ時間の平均である、前記平均ラウンドトリップ時間を算出することとを含む。
実施形態6は、実施形態5のシステムであり、集約されたデータに基づいてユーザデバイス用の最良エッジサーバを選択することは、
集約されたデータおよびエッジサーバの識別子を機械学習モデルに提供することであって、機械学習モデルは、最良エッジサーバを識別するようにトレーニングされている、前記提供することと、
機械学習モデルから、ユーザデバイス用の最良エッジサーバの識別子を受け取ることとを含む。
実施形態7は、実施形態5のシステムであり、エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
同じネットワークキーに関連付けられたユーザデバイスまでの、エッジサーバのラウンドトリップ時間の標準偏差を算出することをさらに含む。
実施形態8は、実施形態7のシステムであり、集約されたデータに基づいてユーザデバイス用の最良エッジサーバを選択することは、
所定の最小プロービング応答成功率を満たす各エッジサーバについて、それぞれのサーバスコアを算出することと、
最良のサーバスコアをもつエッジサーバを、最良エッジサーバとして識別することとを含む。
実施形態9は、実施形態8のシステムであり、サーバスコアは、エッジサーバの平均ラウンドトリップ時間に対応する。
実施形態10は、実施形態8のシステムであり、サーバスコアは、エッジサーバの平均ラウンドトリップ時間と、エッジサーバのラウンドトリップ時間の標準偏差の合計に対応する。
実施形態11は、実施形態8のシステムであり、ユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバは、エッジサーバのサーバスコアに基づいて、次の30~40個の最も高いランクのエッジサーバを含む。
実施形態12は、実施形態8のシステムであり、ユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバは、
サーバスコアをもつ各エッジサーバには、他のエッジサーバよりも良好なサーバスコアをもつエッジサーバに対してより多い数のラッフルチケットが割り当てられる仮想ラッフルによって、サーバスコアをもつエッジサーバの中からエッジサーバを選択することによって判断される。
実施形態13は、実施形態9のシステムであり、コンテンツプラットフォーム上の1つまたは複数のサービスは、
複数のエッジサーバの各々からスループットデータを取得することであって、スループットデータは、各エッジサーバについて、エッジサーバのビットレートを含む、前記取得することと、
スループットデータに基づいて、エッジサーバのサーバスコアを調節することとを含む動作を実行するようにさらに構成される。
実施形態14は、実施形態1~13のうちのいずれか1つの、システムであり、1つまたは複数のサービスは、集約サービスおよびトラフィック制御サービスを含み、
集約サービスは、
ユーザデバイスによって収集されたエッジサーバデータを、ユーザデバイスから取得することであって、各ユーザデバイスから受信されるエッジサーバデータは、ユーザデバイスに関連付けられたネットワークキーを含むエッジサーバデータを提供したユーザデバイスについてのデバイス情報でラベル付けされる、前記取得することと、
エッジサーバデータをネットワークキーによって集約することとを含む動作を実行するように構成され、
トラフィック制御サービスは、
ユーザデバイスから受信されたポーリング要求に応答して、
ユーザデバイスに関連付けられたネットワークキーと同じであるネットワークキーによって集約されたエッジサーバデータに基づいて、ユーザデバイス用の最良エッジサーバを選択することと、
ユーザデバイスに、ユーザデバイス用の選択された最良エッジサーバの識別子、およびユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供することとを含む動作を実行するように構成される。
実施形態15は、実施形態1~14のうちのいずれか1つの、動作を実行する方法である。
実施形態16は、1つまたは複数のコンピュータによって実行されるとき、1つまたは複数のコンピュータに、実施形態1~14のうちのいずれか1つの、動作を実行させるように動作可能な命令を記憶した1つまたは複数のコンピュータ記憶媒体である。
本明細書は、多くの具体的な実装形態詳細を含むが、これらは、任意の発明の範囲において、または特許請求されているか、もしくは特許請求され得るものの範囲において、限定と解釈されるべきではなく、特定の発明の特定の実施形態に特有であり得る特徴の記述として解釈されるべきである。また、別個の実施形態の文脈において本明細書で説明したいくつかの特徴は、単一の実施形態において組み合わせて実現することができる。逆に、単一の実施形態の文脈において記載される様々な特徴はまた、複数の実施形態において別々に、またはどの適切な部分組合せでも実現することができる。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求される場合さえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除することができ、請求項は、部分組合せ、または部分組合せの変形形態を対象とすることができる。
同様に、動作は、特定の順序において図面に示され、請求項に記載されているが、これは、そのような動作が図示された特定の順序において、もしくは順次に実行されることを必要とするか、または、所望の結果を達成するためにすべての示された動作が実行されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラム構成要素およびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることを理解されたい。
本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲内である。たとえば、請求項において記載されるアクションは、異なる順序で実行され、望ましい結果を依然として達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するのに、図示される特定の順序、または順番を必ずしも要求しない。いくつかのケースでは、マルチタスキングおよび並列処理が有利であり得る。
100 システム
110 ユーザデバイス
120 集約サービス
130 トラフィック制御サービス
135 コンテンツサーバ
140 エッジサーバ
195 コンテンツプラットフォーム

Claims (24)

  1. システムであって、
    複数のユーザデバイスと、
    前記ユーザデバイスにコンテンツをサービスするコンテンツプラットフォームへのアクセスを提供するように構成された複数のエッジサーバであって、各ユーザデバイスはネットワークキーに関連付けられ、ネットワークキーの数はユーザデバイスの数より少なく、各ユーザデバイスは、前記ユーザデバイスについてのデータによって、前記ユーザデバイス用の最良エッジサーバとして識別される、前記複数のエッジサーバのうちのエッジサーバへ、コンテンツについての要求を送るように構成される、複数のエッジサーバと、を備え、前記ユーザデバイスが動作を実行するように構成され、前記動作は、
    前記ユーザデバイス用の前記最良エッジサーバへ、および前記最良エッジサーバとして識別されない、前記複数のエッジサーバのうちの1つまたは複数へ、プロービング要求を送ることと、
    前記プロービング要求へのプロービング応答を受信するか、または応答がないことを認識することと、
    各受信されたプロービング応答について、ラウンドトリップ時間を判断することであって、前記ラウンドトリップ時間は、前記ユーザデバイスが前記プロービング応答を受信した時間と、前記ユーザデバイスが、対応するプロービング要求を送った時間との間に経過した時間の量であり、前記判断されたラウンドトリップ時間はエッジサーバデータとなる、前記判断することとを含み、前記システムがさらに、
    動作を実行するように構成された、前記コンテンツプラットフォーム上の1つまたは複数のサービスを備え、前記動作は、
    前記ユーザデバイスから前記エッジサーバデータを取得することであって、各ユーザデバイスから受信される前記エッジサーバデータは、前記ユーザデバイスに関連付けられた前記ネットワークキーを含む前記エッジサーバデータを提供した前記ユーザデバイスについてのデバイス情報でラベル付けされる、前記取得することと、
    前記エッジサーバデータをネットワークキーによって集約することと、
    ユーザデバイスから受信されたポーリング要求に応答して、
    前記ユーザデバイスに関連付けられた前記ネットワークキーと同じである前記ネットワークキーによって集約された前記エッジサーバデータに少なくとも部分的に基づいて、前記ユーザデバイス用の最良エッジサーバを選択することと、
    前記ユーザデバイスに、前記ユーザデバイス用の前記選択された最良エッジサーバの識別子、および前記ユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供することとを含む、システム。
  2. 各ユーザデバイスに関連付けられた前記ネットワークキーは、(i)前記ユーザデバイスの国コード、および(ii)前記ユーザデバイスのインターネットプロトコル(IP)アドレスに対応する自律システム番号を含む、請求項1に記載のシステム。
  3. 各ユーザデバイスに関連付けられた前記ネットワークキーは、(i)前記ユーザデバイスの国コード、(ii)前記ユーザデバイスのIPアドレスに対応する自律システム番号、および(iii)前記ユーザデバイスの前記IPアドレスの最初の3つのオクテットを含む、請求項1に記載のシステム。
  4. 各ユーザデバイスに関連付けられた前記ネットワークキーは、前記ユーザデバイスの国コード、前記ユーザデバイスのIPアドレスに対応する自律システム番号、前記ユーザデバイスのネットワーク出口経路の識別子、前記ユーザデバイスが位置する地理的領域の識別子、および前記ユーザデバイスの接続タイプの識別子を含む、請求項1に記載のシステム。
  5. 前記エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
    所定の時間ウィンドウ内に、同じネットワークキーに関連付けられたユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数を判断することと、
    前記エッジサーバのプロービング応答成功率を算出することであって、前記プロービング応答成功率は、前記同じネットワークキーに関連付けられたユーザデバイスによって受信されたプロービング応答の数を、前記ユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数で除算したものである、前記プロービング応答成功率を算出することと、
    前記エッジサーバの平均ラウンドトリップ時間を算出することであって、前記エッジサーバの前記平均ラウンドトリップ時間は、前記エッジサーバによって送られ、前記同じネットワークキーに関連付けられた前記ユーザデバイスによって受信された前記プロービング応答について判断された、前記ラウンドトリップ時間の平均である、前記平均ラウンドトリップ時間を算出することとを含む、請求項1に記載のシステム。
  6. 前記集約されたデータに基づいて前記ユーザデバイス用の最良エッジサーバを選択することは、
    前記集約されたデータおよびエッジサーバの識別子を機械学習モデルに提供することであって、前記機械学習モデルは、最良エッジサーバを識別するようにトレーニングされている、前記提供することと、
    前記機械学習モデルから、前記ユーザデバイス用の前記最良エッジサーバの識別子を受け取ることとを含む、請求項5に記載のシステム。
  7. 前記エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
    前記同じネットワークキーに関連付けられたユーザデバイスまでの、前記エッジサーバの前記ラウンドトリップ時間の標準偏差を算出することをさらに含む、請求項5に記載のシステム。
  8. 前記集約されたデータに基づいて前記ユーザデバイス用の最良エッジサーバを選択することは、
    所定の最小プロービング応答成功率を満たす各エッジサーバについて、それぞれのサーバスコアを算出することと、
    最良のサーバスコアをもつ前記エッジサーバを、前記最良エッジサーバとして識別することとを含む、請求項7に記載のシステム。
  9. 前記サーバスコアは、前記エッジサーバの前記平均ラウンドトリップ時間に対応する、請求項8に記載のシステム。
  10. 前記サーバスコアは、前記エッジサーバの前記平均ラウンドトリップ時間と、前記エッジサーバの前記ラウンドトリップ時間の前記標準偏差の合計に対応する、請求項8に記載のシステム。
  11. 前記ユーザデバイスが将来のプロービング要求を送るべきである前記1つまたは複数の他のエッジサーバは、前記エッジサーバの前記サーバスコアに基づいて、次の30~40個の最も高いランクのエッジサーバを含む、請求項8に記載のシステム。
  12. 前記ユーザデバイスが将来のプロービング要求を送るべきである前記1つまたは複数の他のエッジサーバは、
    サーバスコアをもつ各エッジサーバに、他のエッジサーバよりも良好なサーバスコアをもつエッジサーバに対してより多い数のラッフルチケットが割り当てられる仮想ラッフルによって、サーバスコアをもつ前記エッジサーバの中からエッジサーバを選択することによって判断される、請求項8に記載のシステム。
  13. 前記コンテンツプラットフォーム上の前記1つまたは複数のサービスは、
    前記複数のエッジサーバの各々からスループットデータを取得することであって、前記スループットデータは、各エッジサーバについて、前記エッジサーバのビットレートを含む、前記取得することと、
    前記スループットデータに基づいて、前記エッジサーバの前記サーバスコアを調節することとを含む動作を実行するようにさらに構成される、請求項9に記載のシステム。
  14. 前記1つまたは複数のサービスは、集約サービスおよびトラフィック制御サービスを含み、
    前記集約サービスは、
    前記ユーザデバイスによって収集された前記エッジサーバデータを、前記ユーザデバイスから取得することであって、各ユーザデバイスから受信される前記エッジサーバデータは、前記ユーザデバイスに関連付けられた前記ネットワークキーを含む前記エッジサーバデータを提供した前記ユーザデバイスについてのデバイス情報でラベル付けされる、前記取得することと、
    前記エッジサーバデータをネットワークキーによって集約することとを含む動作を実行するように構成され、
    前記トラフィック制御サービスは、
    ユーザデバイスから受信されたポーリング要求に応答して、
    前記ユーザデバイスに関連付けられた前記ネットワークキーと同じである前記ネットワークキーによって集約された前記エッジサーバデータに基づいて、前記ユーザデバイス用の最良エッジサーバを選択することと、
    前記ユーザデバイスに、前記ユーザデバイス用の前記選択された最良エッジサーバの識別子、および前記ユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供することとを含む動作を実行するように構成される、請求項1に記載のシステム。
  15. 方法であって、
    複数のユーザデバイスのうちの第1のユーザデバイスからポーリング要求を受信するステップであって、各ユーザデバイスは、前記ユーザデバイスについてのデータによって、前記ユーザデバイス用の最良エッジサーバとして識別される、複数のエッジサーバのうちの1つを通して、コンテンツプラットフォームにアクセスするように構成され、各ユーザデバイスは複数のネットワークキーのうちの1つに関連付けられ、ネットワークキーの数はユーザデバイスの数より少ない、ステップと、
    前記ユーザデバイスからエッジサーバデータを取得するステップであって、各ユーザデバイスからの前記エッジサーバデータは、前記ユーザデバイスに関連付けられた前記ネットワークキーを含む、前記ユーザデバイスについてのデバイス情報でラベル付けされ、前記エッジサーバデータは、各ユーザデバイスによって、
    前記ユーザデバイス用の前記最良エッジサーバへ、および前記最良エッジサーバとして識別されない、前記複数のエッジサーバのうちの1つまたは複数へ、プロービング要求を送ることと、
    前記プロービング要求へのプロービング応答を受信するか、または応答がないことを認識することと、
    各受信されたプロービング応答について、ラウンドトリップ時間を判断することであって、前記ラウンドトリップ時間は、前記ユーザデバイスが前記プロービング応答を受信した時間と、前記ユーザデバイスが、対応するプロービング要求を送った時間との間に経過した時間の量である、前記判断することと
    によって計算されるラウンドトリップ時間を含む、ステップと、
    前記エッジサーバデータをネットワークキーによって集約するステップと、
    前記第1のユーザデバイスに関連付けられた前記ネットワークキーと同じである前記ネットワークキーによって集約された前記エッジサーバデータに少なくとも部分的に基づいて、前記第1のユーザデバイス用の最良エッジサーバを選択するステップと、
    前記第1のユーザデバイスに、前記ユーザデバイス用の前記選択された最良エッジサーバの識別子、および前記第1のユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供するステップとを含む方法。
  16. 各ユーザデバイスに関連付けられた前記ネットワークキーは、(i)前記ユーザデバイスの国コード、(ii)前記ユーザデバイスのIPアドレスに対応する自律システム番号、および(iii)前記ユーザデバイスの前記IPアドレスの最初の3つのオクテットを含む、請求項15に記載の方法。
  17. 前記エッジサーバデータをネットワークキーによって集約するステップは、各エッジサーバについて、
    所定の時間ウィンドウ内に、同じネットワークキーに関連付けられたユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数を判断するステップと、
    前記エッジサーバのプロービング応答成功率を算出するステップであって、前記プロービング応答成功率は、前記同じネットワークキーに関連付けられたユーザデバイスによって受信されたプロービング応答の数を、前記ユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数で除算したものである、ステップと、
    前記エッジサーバの平均ラウンドトリップ時間を算出するステップであって、前記エッジサーバの前記平均ラウンドトリップ時間は、前記エッジサーバによって送られ、前記同じネットワークキーに関連付けられた前記ユーザデバイスによって受信された前記プロービング応答について判断された、前記ラウンドトリップ時間の平均である、ステップとを含む、請求項15に記載の方法。
  18. 前記エッジサーバデータをネットワークキーによって集約するステップは、各エッジサーバについて、
    前記同じネットワークキーに関連付けられたユーザデバイスまでの、前記エッジサーバの前記ラウンドトリップ時間の標準偏差を算出するステップをさらに含む、請求項17に記載の方法。
  19. 前記集約されたエッジサーバデータに少なくとも部分的に基づいて、前記第1のユーザデバイス用の最良エッジサーバを選択するステップは、
    所定の最小プロービング応答成功率を満たす各エッジサーバについて、それぞれのサーバスコアを算出するステップと、
    前記最良エッジサーバとして、最良のサーバスコアをもつ前記エッジサーバを識別するステップとを含む、請求項18に記載の方法。
  20. 1つまたは複数のコンピュータによって実行されるとき、前記1つまたは複数のコンピュータに、動作を実行させるように動作可能な命令を記憶した1つまたは複数の非一時的コンピュータ記憶媒体であって、前記動作は、
    複数のユーザデバイスのうちの第1のユーザデバイスからポーリング要求を受信することであって、各ユーザデバイスは、前記ユーザデバイスについてのデータによって、前記ユーザデバイス用の最良エッジサーバとして識別される、複数のエッジサーバのうちの1つを通して、コンテンツプラットフォームにアクセスするように構成され、各ユーザデバイスは複数のネットワークキーのうちの1つに関連付けられ、ネットワークキーの数はユーザデバイスの数より少ない、前記受信することと、
    前記ユーザデバイスからエッジサーバデータを取得することであって、各ユーザデバイスからの前記エッジサーバデータは、前記ユーザデバイスに関連付けられた前記ネットワークキーを含む、前記ユーザデバイスについてのデバイス情報でラベル付けされ、前記エッジサーバデータは、各ユーザデバイスによって、
    前記ユーザデバイス用の前記最良エッジサーバへ、および前記最良エッジサーバとして識別されない、前記複数のエッジサーバのうちの1つまたは複数へ、プロービング要求を送ることと、
    前記プロービング要求へのプロービング応答を受信するか、または応答がないことを認識することと、
    各受信されたプロービング応答について、ラウンドトリップ時間を判断することであって、前記ラウンドトリップ時間は、前記ユーザデバイスが前記プロービング応答を受信した時間と、前記ユーザデバイスが、対応するプロービング要求を送った時間との間に経過した時間の量である、前記判断することと
    によって計算されるラウンドトリップ時間を含む、前記取得することと、
    前記エッジサーバデータをネットワークキーによって集約することと、
    前記第1のユーザデバイスに関連付けられた前記ネットワークキーと同じである前記ネットワークキーによって集約された前記エッジサーバデータに少なくとも部分的に基づいて、前記第1のユーザデバイス用の最良エッジサーバを選択することと、
    前記第1のユーザデバイスに、前記ユーザデバイス用の前記選択された最良エッジサーバの識別子、および前記第1のユーザデバイスが将来のプロービング要求を送るべきである1つまたは複数の他のエッジサーバの識別子を提供することとを含む、1つまたは複数の非一時的コンピュータ記憶媒体。
  21. 各ユーザデバイスに関連付けられた前記ネットワークキーは、(i)前記ユーザデバイスの国コード、(ii)前記ユーザデバイスのIPアドレスに対応する自律システム番号、および(iii)前記ユーザデバイスの前記IPアドレスの最初の3つのオクテットを含む、請求項20に記載の1つまたは複数の非一時的コンピュータ記憶媒体。
  22. 前記エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
    所定の時間ウィンドウ内に、同じネットワークキーに関連付けられたユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数を判断することと、
    前記エッジサーバのプロービング応答成功率を算出することであって、前記プロービング応答成功率は、前記同じネットワークキーに関連付けられたユーザデバイスによって受信されたプロービング応答の数を、前記ユーザデバイスによって前記エッジサーバへ送られたプロービング要求の数で除算したものである、前記プロービング応答成功率を算出することと、
    前記エッジサーバの平均ラウンドトリップ時間を算出することであって、前記エッジサーバの前記平均ラウンドトリップ時間は、前記エッジサーバによって送られ、前記同じネットワークキーに関連付けられた前記ユーザデバイスによって受信された前記プロービング応答について判断された、前記ラウンドトリップ時間の平均である、前記平均ラウンドトリップ時間を算出することとを含む、請求項20に記載の1つまたは複数の非一時的コンピュータ記憶媒体。
  23. 前記エッジサーバデータをネットワークキーによって集約することは、各エッジサーバについて、
    前記同じネットワークキーに関連付けられたユーザデバイスまでの、前記エッジサーバの前記ラウンドトリップ時間の標準偏差を算出することをさらに含む、請求項22に記載の1つまたは複数の非一時的コンピュータ記憶媒体。
  24. 前記集約されたエッジサーバデータに少なくとも部分的に基づいて、前記第1のユーザデバイス用の最良エッジサーバを選択することは、
    所定の最小プロービング応答成功率を満たす各エッジサーバについて、それぞれのサーバスコアを算出することと、
    前記最良エッジサーバとして、最良のサーバスコアをもつ前記エッジサーバを識別することとを含む、請求項23に記載の1つまたは複数の非一時的コンピュータ記憶媒体。
JP2021548567A 2018-10-31 2019-10-31 エッジサーバを選択するためのシステム、方法、および装置 Ceased JP2022513410A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/177,037 US10999358B2 (en) 2018-10-31 2018-10-31 Traffic mapping
US16/177,037 2018-10-31
PCT/US2019/059213 WO2020092805A1 (en) 2018-10-31 2019-10-31 System, method and apparatus for selecting an edge server

Publications (1)

Publication Number Publication Date
JP2022513410A true JP2022513410A (ja) 2022-02-07

Family

ID=68699510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021548567A Ceased JP2022513410A (ja) 2018-10-31 2019-10-31 エッジサーバを選択するためのシステム、方法、および装置

Country Status (8)

Country Link
US (2) US10999358B2 (ja)
EP (1) EP3874712B1 (ja)
JP (1) JP2022513410A (ja)
KR (1) KR20210087966A (ja)
CN (1) CN113597752A (ja)
BR (1) BR112021004415A2 (ja)
DE (3) DE202019005818U1 (ja)
WO (1) WO2020092805A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132721B1 (en) * 2018-08-28 2021-09-28 Amazon Technologies, Inc. Interest based advertising inside a content delivery network
KR102592833B1 (ko) * 2018-12-14 2023-10-23 현대자동차주식회사 차량의 음성 인식 기능 연동 제어 시스템 및 방법
US10911505B1 (en) * 2019-10-18 2021-02-02 Salesforce.Com, Inc. Global capacity scaling
US11431789B2 (en) 2019-10-18 2022-08-30 Salesforce.Com, Inc. Global capacity routing
US11272007B2 (en) 2020-07-21 2022-03-08 Servicenow, Inc. Unified agent framework including push-based discovery and real-time diagnostics features
CN114531478A (zh) * 2020-10-30 2022-05-24 伊姆西Ip控股有限责任公司 边缘资源聚合的方法、设备和计算机程序产品
US11418586B2 (en) * 2021-01-19 2022-08-16 Servicenow, Inc. Load balancing of discovery agents across proxy servers
US20220247651A1 (en) * 2021-01-29 2022-08-04 Assia Spe, Llc System and method for network and computation performance probing for edge computing
CN116170447B (zh) * 2023-04-19 2023-07-14 杭州非奇科技股份有限公司 一种基于边缘节点的数据传输方法、系统和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018155A1 (en) * 2016-07-18 2018-01-18 Google Inc. Post-install application interaction

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231442B2 (en) * 2002-04-03 2007-06-12 Tonic Software, Inc. Global network monitoring system
US20090245114A1 (en) 2008-04-01 2009-10-01 Jayanth Vijayaraghavan Methods for collecting and analyzing network performance data
US8977710B2 (en) * 2008-06-18 2015-03-10 Qualcomm, Incorporated Remote selection and authorization of collected media transmission
CN102882699B (zh) * 2011-07-14 2015-07-29 华为技术有限公司 边缘节点的分配方法和装置及边缘节点控制器
US9113317B2 (en) 2012-12-19 2015-08-18 Verizon Patent And Licensing Inc. Intelligent streaming to a mobile device
US9444863B2 (en) * 2013-06-06 2016-09-13 Intel Corporation Manager for DASH media streaming
US9854053B1 (en) * 2014-03-24 2017-12-26 Amazon Technologies, Inc. Providing faster data access using multiple caching servers
US20170041355A1 (en) 2015-08-03 2017-02-09 Arris Enterprises Llc Contextual information for audio-only streams in adaptive bitrate streaming
US11575725B2 (en) * 2015-12-29 2023-02-07 Verizon Patent And Licensing Inc. Content delivery network streaming optimization
US10425694B2 (en) 2016-12-30 2019-09-24 Facebook, Inc. Live broadcast on an online social network
EP3679700A1 (en) 2017-10-18 2020-07-15 BlackBerry Limited Detecting remote application profiling
US10362357B1 (en) 2017-12-28 2019-07-23 Rovi Guides, Inc. Systems and methods for resuming media in different modes of playback based on attributes of a physical environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018155A1 (en) * 2016-07-18 2018-01-18 Google Inc. Post-install application interaction

Also Published As

Publication number Publication date
DE202019005818U1 (de) 2022-05-03
EP3874712B1 (en) 2022-12-07
US20210258370A1 (en) 2021-08-19
KR20210087966A (ko) 2021-07-13
CN113597752A (zh) 2021-11-02
EP3874712A1 (en) 2021-09-08
BR112021004415A2 (pt) 2021-07-20
WO2020092805A1 (en) 2020-05-07
US10999358B2 (en) 2021-05-04
DE202019005859U1 (de) 2022-10-12
US20200137148A1 (en) 2020-04-30
DE202019005784U1 (de) 2022-02-24

Similar Documents

Publication Publication Date Title
JP2022513410A (ja) エッジサーバを選択するためのシステム、方法、および装置
CN107111652B (zh) 基于设备被链接的概率来选择设备内容的系统与方法
US8856146B2 (en) Device for determining internet activity
US20110238758A1 (en) Method And Apparatus For Displaying Feeds Content Of Contact And Processing Apparatus And System Thereof
US8639679B1 (en) Generating query suggestions
US10402465B1 (en) Content authority ranking using browsing behavior
US11562433B1 (en) Monitored alerts
US10936601B2 (en) Combined predictions methodology
US9542504B2 (en) Metanodes for open graph protocols
CN117150127A (zh) 使用强化学习来选择内容项
JP2011204240A (ja) 曖昧な場所に基づくルーティング情報提供
CN112269918B (zh) 信息推荐方法、装置、设备及存储介质
DE202015009118U1 (de) Dynamische Integration von Offline- und Onlinevorschlägen in einer geografischen Anwendung
CN114846463A (zh) 可重复查询的识别和发布
CN106817296B (zh) 信息推荐的测试方法、装置以及电子设备
WO2013016869A1 (en) Delivery of two-way interactive content
US20200403955A1 (en) Systems and methods to prioritize chat rooms using machine learning
Tang et al. CloudRec: A mobile cloud service recommender system based on adaptive QoS management
CN115086194B (zh) 云应用的数据传输方法、计算设备及计算机存储介质
JP6750248B2 (ja) 制御装置及び制御方法
US20180056181A1 (en) System and method for data integration for a virtual environment
CN113365095B (zh) 直播资源推荐方法、装置、电子设备以及存储介质
CN113868532B (zh) 一种地点推荐方法、装置、电子设备及存储介质
JP2019113944A (ja) 情報処理装置、情報処理方法、およびプログラム
CN107551548B (zh) 开发包生成方法及系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210625

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220915

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221205

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20230424