JP6698806B2 - クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング - Google Patents

クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング Download PDF

Info

Publication number
JP6698806B2
JP6698806B2 JP2018235173A JP2018235173A JP6698806B2 JP 6698806 B2 JP6698806 B2 JP 6698806B2 JP 2018235173 A JP2018235173 A JP 2018235173A JP 2018235173 A JP2018235173 A JP 2018235173A JP 6698806 B2 JP6698806 B2 JP 6698806B2
Authority
JP
Japan
Prior art keywords
events
event
clustered
http
queue
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.)
Active
Application number
JP2018235173A
Other languages
English (en)
Other versions
JP2019109891A (ja
Inventor
ミシュラ アミット
ミシュラ アミット
ウィリアムソン マット
ウィリアムソン マット
エゼル ジョエル
エゼル ジョエル
ハセロド カート
ハセロド カート
Original Assignee
アバイア インコーポレーテッド
アバイア インコーポレーテッド
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 アバイア インコーポレーテッド, アバイア インコーポレーテッド filed Critical アバイア インコーポレーテッド
Publication of JP2019109891A publication Critical patent/JP2019109891A/ja
Application granted granted Critical
Publication of JP6698806B2 publication Critical patent/JP6698806B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/55Push-based network services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)

Description

Twilio(登録商標)およびZang(登録商標)などのサービスとしての通信プラットフォーム(Communications Platform as a Service:CPaaS)を提供するクラウド・サービスは、現在、企業データ・センタで稼働するアプリケーションによるセキュリティの課題を有している。CPaaSは、音声、ビデオ、およびメッセージングなどの特徴をアプリケーションに追加するために使用される開発フレームワークである。現在のCPaaSシステムは、HTTP要求を送信して、企業データ・センタにおけるデータにアクセスする。着信HTTP POSTまたはHTTP GET要求は、企業データ・センタが取り扱わなければならない。
企業データ・センタは、着信メッセージがセキュリティの問題を引き起こすことがあるという理由で、着信メッセージに神経質である。結果として、企業は、外部のインターネットから通信を開始するアプリケーションの数を最小限にしようとする。システム管理者は、企業への着信要求を嫌い、特に、要求を、クラウド・サービスに向けたアウトバウンド・メッセージに限定したいと望んでいる。システム管理者は、着信トラフィックがファイヤーウォールに穴を作成し、それが悪用され得るという理由で、着信トラフィックに対してネットワークを開放することを望んでいない。
インバウンドHTTP問題に対処する1つのやり方が、ウェブソケットを使用することである。ウェブソケットは、企業からのアウトバウンドHTTP要求で確立することができる。最初のアウトバウンドHTTP要求の後、メッセージは、ウェブソケットをまたいだ両方向でフローすることができる。
いくつかの企業は、ウェブソケットを使用することに神経質である。一定のリバース・プロキシおよびアプリケーション・フレームワークは、ウェブソケットをサポートすることができない。加えて、いくつかの企業は、アプリケーション認識型のリバース・プロキシおよびアプリケーション配信コントローラを有しており、これらは、HTTPメッセージとそのコンテンツの深部点検を提供する。メッセージは、開発者が選んだ任意のやり方でフォーマットされ得るので、ウェブソケットは、その能力を無効にしてしまう。それらの理由により、HTTPを介したイベント配信のためのユビキタスに利用可能な技術として、ロング・ポーリングをサポートすることが必要である。
ロング・ポーリングは、クライアントがHTTP GET要求をサーバに送信し、アプリケーションに返すべきイベントが存在する場合にイベントが即座に送信され、別の要求が送信される、よく理解された方法である。イベントが存在しない場合、返すべきイベントが存在するまで、またはタイムアウトが発生するまで(たとえば、60秒)、HTTP GET要求はオープンにされたままである。これにより、非同期イベントの印象および特性が得られ、企業データ・センタへのインバウンド要求がないこともまた満たされる。着信メッセージは、もっぱらアウトバウンド要求に応答して送信される。
ロング・ポーリングによる難点は、多数のアプリケーションが提供されているクラスタ化された環境において生じる。現在のソリューションは、クラスタ化された環境におけるロング・ポーリングをサポートしていない。
これらの、および他のニーズは、本開示のさまざまな実施形態および構成によって対処される。複数のロング・ポールHTTP GET要求が、複数のクラスタ化されたアプリケーションから受信される。複数のロング・ポールHTTP GET要求は、複数のクラスタ化されたアプリケーションのための複数の識別子を含む。複数の識別子に基づいて、複数のイベント・キューが複数のクラスタ化されたアプリケーションのために作成される。複数の通信セッションに基づいて、複数のイベントが複数のイベント・キューに追加される。たとえば、複数の着信コールに基づいて、多数のイベントを複数のイベント・キューに追加することができる。複数のロング・ポールHTTP GET要求に対する複数の応答が送信される。複数の応答は、複数のイベントを含む。このプロセスにより、通信セッションを管理している、対応するクラスタ化されたアプリケーションの識別が可能になる。
語句「少なくとも1つ」、「1つまたは複数」、「または」、ならびに「および/または」は、動作において接続的および離接的の両方である、制約のない表現である。たとえば、表現「A、B、およびCのうちの少なくとも1つ」、「A、B、またはCのうちの少なくとも1つ」、「A、B、およびCのうちの1つまたは複数」、「A、B、またはCのうちの1つまたは複数」、「A、B、および/またはC」、ならびに「A、B、またはC」のそれぞれは、A単独で、B単独で、C単独で、AとBとが一緒に、AとCとが一緒に、BとCとが一緒に、またはA、B、およびCが一緒であることを意味する。
用語「1つの(aまたはan)」実体は、その実体の1つまたは複数を指す。したがって、用語「1つの(aまたはan)」、「1つまたは複数」、および「少なくとも1つ」を、本明細書で交換可能に使用することができる。用語「備える(comprising)」、「含む(including)」、および「有する(having)」もまた、交換可能に使用することができることに留意されたい。
本明細書で使用されるとき、用語「自動的(automatic)」およびその変形は、プロセスまたは動作が実施されるとき、物質的な人間の入力なしに行われる、通常は連続的または半連続的な任意のプロセスまたは動作を指す。しかしながら、プロセスまたは動作の実施前に入力が受信される場合は、プロセスまたは動作の実施が物質的または非物質的な人間の入力を使用したとしても、プロセスまたは動作は自動的であってよい。人間の入力が、プロセスまたは動作がどのように実施されることになるかに影響を与える場合、そのような入力は、物質的であるとみなされる。プロセスまたは動作の実施を承諾する人間の入力は、「物質的」であるとはみなされない。
本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード、その他を含む)、またはソフトウェアとハードウェアとの態様を組み合わせた実施形態の形式を取ることができ、本明細書ではこれらすべてを概して、「回路」、「モジュール」、または「システム」と呼ぶことがある。1つまたは複数のコンピュータ可読媒体の任意の組合せが利用されてよい。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、またはコンピュータ可読記憶媒体であってもよい。
コンピュータ可読記憶媒体は、たとえば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、もしくはデバイス、または上記の任意の好適な組合せであってよいが、これらに限定はされない。コンピュータ可読記憶媒体のより具体的な例(非包括的なリスト)は、1つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光学ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光学記憶デバイス、磁気記憶デバイス、または上記の任意の好適な組合せを含むことになる。本文書のコンテキストにおいて、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のための、またはそれらに関係したプログラムを、収容する、または記憶することができる任意の有形な媒体であってよい。
コンピュータ可読信号媒体は、たとえば、ベースバンドにおいて、または搬送波の一部として、コンピュータ可読プログラム・コードがその中に具現化された伝搬データ信号を含むことができる。そのような伝搬信号は、電磁気、光学、またはそれらの任意の好適な組合せを含む多様な形態のうちのいずれかを取ることができるが、限定はされない。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではない媒体であって、命令実行システム、装置、もしくはデバイスによる使用のための、またはそれらに関係したプログラムを、通信、伝搬、もしくは移送することができる、任意のコンピュータ可読媒体であってよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、ワイヤレス、ワイヤ線、光学ファイバ・ケーブル、RF、その他、または上記の任意の好適な組合せを含むがこれらに限定はされない任意の適切な媒体を使用して伝送することができる。
本明細書で使用されるとき、用語「判定する(determine)」、「計算する(calculate)」、および「コンピュータで計算する(compute)」、ならびにそれらの変形は、交換可能に使用され、任意のタイプの方法論、プロセス、数学的演算または技法を含む。
本明細書で使用されるとき、用語「手段」は、米国特許法第112条(f)および/または第112条第6項に従って、その最も広い可能な解釈が与えられるものとする。したがって、用語「手段」を組み込む請求項は、本明細書に記載されるすべての構造、材料、または行為、およびその等価物のすべてを包含するものとする。さらに、構造、材料、または行為およびその等価物は、発明の概要、図面の簡単な説明、詳細な説明、要約、および特許請求の範囲それ自体で説明されたすべてのものを含むものとする。
前述は、本開示のいくつかの態様の理解を提供するための簡略化した概要である。この概要は、本開示およびそのさまざまな実施形態の広範な概説でも、包括的な概説でもない。それは、本開示の重要なまたは不可欠な要素を識別することも、本開示の範囲を明らかにすることも意図せず、しかし本開示の選択された概念を、以下に提示されるより詳細な説明への導入として、簡略化した形式で提示することを意図している。認識されるように、上に記載される、または下で詳細に説明される特徴のうちの1つまたは複数を、単独で、または組み合わせて利用する本開示の他の実施形態が可能である。また、本開示は例示的な実施形態に関して提示されているが、本開示の個々の態様は、別々に特許請求され得ることを認識されたい。
クラスタ化されたアプリケーションのロング・ポーリングのための第1の例証となるシステムのブロック図である。 クラスタ化されたアプリケーションのためのイベント・キューを作成および削除するためのプロセスの流れ図である。 通信セッション識別子に基づいて、イベントをイベント・キューに割り当てるためのプロセスの流れ図である。 クラスタ化されたアプリケーションからのHTTPロング・ポーリングを取り扱うためのプロセスの流れ図である。 ロング・ポールHTTP GET要求ごとに送信されるイベントの数を管理するためのプロセスの流れ図である。 クラウド・サービスとクラスタ化されたアプリケーションとの間をブリッジするためのプロセスの流れ図である。
図1は、クラスタ化されたアプリケーション122のロング・ポーリングのための第1の例証となるシステム100のブロック図である。第1の例証となるシステム100は、通信エンドポイント101A〜101Nと、ネットワーク110と、企業データ・センタ120と、クラウド・サービス130とを備える。
通信エンドポイント101A〜101Nは、パーソナル・コンピュータ(PC)、電話、ビデオ・システム、セルラ電話、携帯情報端末(PDA)、タブレット・デバイス、ノートブック・デバイス、ウェブ・サーバ、メディア・サーバ、スマートフォン、カンファレンス・ブリッジ、その他などの、ネットワーク110上で通信することができる任意の通信エンドポイント・デバイスであってもよいし、または任意の通信エンドポイント・デバイスを含んでもよい。通信エンドポイント101A〜101Nは、そこで通信セッションが終了するデバイスである。通信エンドポイント101A〜101Nは、通信マネジャまたはルータなどの、ネットワーク110において通信セッションを促進する、および/または中継するネットワーク要素ではない。図1に示すように、任意の数の通信エンドポイント101A〜101Nを、ネットワーク110に接続することができる。
ネットワーク110は、インターネット、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、ボイス・オーバIPネットワーク(VoIP)、公衆交換電話ネットワーク(PSTN)、パケット交換ネットワーク、回線交換ネットワーク、セルラ・ネットワーク、これらの組合せ、その他などの、電子通信を送信し、受信することができる任意の通信機器の集まりであってもよいし、または任意の通信機器の集まりを含んでもよい。ネットワーク110は、イーサネット、インターネット・プロトコル(IP)、セッション開始プロトコル(SIP)、統合サービス・デジタル・ネットワーク(ISDN)、ハイパー・テキスト・トランスポート・プロトコル(HTTP)、ウェブ・リアルタイム通信(WebRTC)プロトコル、および/または同種のものなどの多様な電子プロトコルを使用することができる。このように、ネットワーク110は、パケットおよび/または回線交換通信を介してメッセージを搬送するように構成された電子通信ネットワークである。
企業データ・センタ120は、法人、統治機関、パートナーシップ、グループ、協会、組織、人、および/または同種のものなどの任意のエンティティのためのデータ・センタであってもよいし、または任意のエンティティのためのデータ・センタを含んでもよい。企業データ・センタ120は、同じエンティティによって、または異なるエンティティによって所有される複数の企業データ・センタ120を含むことができる。多数の企業データ・センタ120が存在する一実施形態においては、個々のデータ・センタ120のための識別子に基づいて、企業データ・センタ120を識別することができる。
企業データ・センタ120は、ファイヤーウォール121と、クラスタ化されたアプリケーション122と、1つまたは複数のデータベース123とをさらに備える。ファイヤーウォール121は、ネットワーク・アドレス・トランスレータ(NAT)、プロキシ・サーバ、セッション・ボーダー・コントローラ、および/または同種のものなどの、クラスタ化されたアプリケーション122/データベース123への認可されないアクセスを防ぐために使用され得る任意のハードウェア/ソフトウェアであってもよいし、または任意のハードウェア/ソフトウェアを含んでもよい。
クラスタ化されたアプリケーション122は、クラウド・サービス130によって提供される通信セッション/通信サービスのために、サービス/情報を提供するために使用され得るアプリケーションのグループである。クラスタ化されたアプリケーション122は、データベース・サービス、双方向音声応答(IVR)サービス、エージェント識別サービス、コール管理サービス、および/または同種のものなどのさまざまなサービスを提供することができる。クラスタ化されたアプリケーション122は、冗長サービスを提供する。たとえば、クラスタ化されたアプリケーション122は、クラスタ化されたIVRアプリケーションであってもよい。
データベース123は、リレーショナル・データベース、ディレクトリ・サービス、ファイル・システム、オブジェクト指向データベース、および/または同種のものなどの任意のタイプのデータベース123であってもよいし、または任意のタイプのデータベース123を含んでもよい。データベース123は、クラウド・サービス130からの通知/要求を受信した結果として、クラスタ化されたアプリケーション122によって使用される。たとえば、データベース123は、企業の顧客についての情報(たとえば、アドレス、電話番号、クレジット・カード番号、その他)を収容するデータベース123であってもよい。
クラウド・サービス130は、サービスとしての通信プラットフォーム(CPaaS)、サービスとしてのコンタクトセンタ(CCaaS)、アプリケーション管理サービス、消費者サービス、および/または同種のものなどのネットワーク・ベースのサービスを提供することができる任意のサービスであってもよいし、または任意のサービスを含んでもよい。クラウド・サービス130は、多数の企業データ・センタ120から送信されたロング・ポールHTTP GETに基づいて、多数の企業にクラウド・サービスを提供することができる。クラウド・サービス130は、ブリッジ131をさらに備える。
ブリッジ131は、クラウド・サービス130とクラスタ化されたアプリケーション122との間にブリッジを提供するシステム/アプリケーションである。ブリッジ131は、キュー・マネジャ132と、イベント・キュー133とをさらに備える。
キュー・マネジャ132は、クラウド・サービス130と企業データ・センタ120との間の情報のフローを管理することができるソフトウェアに結合された任意のハードウェアであってもよいし、または任意のハードウェアを含んでもよい。キュー・マネジャ132は、イベント・キュー133を介して、イベントおよびデータを管理する。
イベント・キュー133は、個々のクラスタ化されたアプリケーション122のためのイベントを管理するソフトウェアに結合された任意のハードウェアであってもよいし、または任意のハードウェアを含んでもよい。たとえば、企業データ・センタ120が3つのアクティブなクラスタ化されたアプリケーション122(すなわち、同じアプリケーションの異なるインスタンス)を有する場合、クラウド・サービス130は、3つの対応するイベント・キュー133を有することになる。クラウド・サービス130が、それぞれ3つのクラスタ化されたアプリケーション122を有する2つの企業データ・センタ120をサポートした場合、ブリッジ131は、2つの企業データ・センタ120をサポートするために、6つのイベント・キュー133(3つのイベント・キュー133の2つのグループ)を有することになる。図2〜図6で説明されるメッセージにおいて使用される企業データ・センタ識別子に基づいて、別個の企業データ・センタ120を識別することができる。
図1には示されていないが、ブリッジ131は、クラウド・サービス130とは別個であってもよい。たとえば、ブリッジ131は、別個のサーバ上で稼働する別個のアプリケーションであってもよい。あるいは、ブリッジ131は、クラウド・サービス130から別個のプロセッサ・スレッド上で稼働することができる。
図2は、クラスタ化されたアプリケーション122のためのイベント・キュー133を作成および削除するためのプロセスの流れ図である。例証として、通信エンドポイント101A〜101N、企業データ・センタ120、ファイヤーウォール121、クラスタ化されたアプリケーション122、データベース123、クラウド・サービス130、ブリッジ131、キュー・マネジャ132、およびイベント・キュー133は、コンピュータまたはマイクロプロセッサなどの、記憶されたプログラムで制御されるエンティティであり、これらは、メモリ(すなわち、コンピュータ・メモリ、ハード・ディスク、および/または同種のもの)などのコンピュータ可読記憶媒体に記憶されたプログラム命令を実行することによって、図2〜図6の方法および本明細書で説明されるプロセスを実施する。図2〜図6で説明される方法は特定の順序で示されているが、当業者であれば、図2〜図6におけるステップが、異なる順序で実装されてもよい、および/またはマルチスレッド環境において実装されてもよいことに気付くであろう。その上、実装に基づいて、さまざまなステップが省略されても、または追加されてもよい。
図2のプロセスは、クラウド・サービス130(すなわち、ブリッジ131)の観点からである。プロセスは、ステップ200で開始する。ステップ202で、キュー・マネジャ132は、クラスタ化されたアプリケーション122から登録/登録解除メッセージが受信されているかどうかを判定する。たとえば、クラスタ化されたアプリケーション122が最初にロードされるとき、クラスタ化されたアプリケーション122は、キュー・マネジャ132に登録する。あるいは、クラスタ化されたアプリケーション122が取り外されるとき、クラスタ化されたアプリケーション122は、登録解除メッセージを送信する。一実施形態において、登録メッセージ/登録解除メッセージは、(たとえば、図4および図6で説明されるように)クラスタ化されたアプリケーション122から送信されたロング・ポールHTTP GET要求であってよい。あるいは、登録/登録解除メッセージは、HTTP POSTまたは他のタイプのメッセージであってもよい。
ステップ202で登録/登録解除メッセージが受信されない場合、ステップ204で、クラウド・サービス130は、プロセスが完了するかどうかを判定する。ステップ204でプロセスが完了した場合、ステップ206で、プロセスは終了する。そうではなく、ステップ204でプロセスが完了していない場合、ステップ202のプロセスが繰り返される。
ステップ202で登録/登録解除メッセージ(たとえば、クラスタ化されたアプリケーション122からの第1のロング・ポールHTTP GET要求)が受信されている場合、ステップ208で、キュー・マネジャ132は、クラスタ化されたアプリケーションの識別子を入手する。クラスタ化されたアプリケーションの識別子は、クラスタ化されたアプリケーション122のグループにおける特定のクラスタ化されたアプリケーション122を一意に識別する。クラスタ化されたアプリケーションの識別子は、ステップ202の受信されたメッセージにある。ステップ210で、受信されたメッセージが登録メッセージである場合、ステップ214で、キュー・マネジャ132は、クラスタ化されたアプリケーションの識別子に基づいて、クラスタ化されたアプリケーション122のためのイベント・キュー133を作成する。プロセスは次いで、ステップ202に戻る。
ステップ214で作成されたイベント・キュー133は、クラスタ化されたアプリケーション122によって使用されるイベントを保持するために使用されるキューである。イベント・キュー133におけるイベントは、通常、特定の通信セッションに関連付けられたセッション識別子(たとえば、特定の音声通信セッションに関連付けられたセッション識別子)を含む。このやり方で、特定のクラスタ化されたアプリケーション122は、多数の通信セッションを同時にサポートすることができる。一実施形態において、通信セッション/クラスタ化されたアプリケーション122ごとに、別個のイベント・キュー133を作成することができる。たとえば、個々のクラスタ化されたアプリケーション122は、多数の通信セッション(たとえば、個々のクラスタ化されたアプリケーション122によって取り扱われている2つの別個の音声通信セッション)についての多数のイベント・キュー133を有することができる。
ステップ210でメッセージが登録解除メッセージである場合、ステップ212で、キュー・マネジャ132は、クラスタ化されたアプリケーションの識別子に関連付けられたクラスタ化されたアプリケーション122のためのイベント・キュー133を削除する。プロセスは次いで、ステップ202に進む。
図3は、通信セッション識別子に基づいて、イベントをイベント・キュー133に割り当てるためのプロセスの流れ図である。図3のプロセスは、ブリッジ131の観点からである。ステップ302で、キュー・マネジャ132は、通信セッションについてのイベントが受信されているかどうかを判定する。通信セッションについてのイベントは、新しいコールの受信の指摘、アナウンスの再生の完了、収集したデュアル・トーン・マルチ周波数(DTMF)トーン、話し言葉の検出、参加者がコールからドロップされること、および/または同種のものなどの、通信セッションに関連付けられてよい任意のタイプのイベントであってもよいし、または任意のタイプのイベントを含んでもよい。
ステップ302で通信セッションについてのイベントが受信されない場合、ステップ304で、プロセスは、プロセスが完了するかどうかを判定する。ステップ304でプロセスが完了した場合、ステップ306で、プロセスは終了する。そうではなく、ステップ304でプロセスが完了していない場合、プロセスは、ステップ302に戻って、通信セッションについてのイベントを受信するのを待つ。
ステップ302で通信セッションについてのイベントが受信された場合、ステップ308で、キュー・マネジャ132は、通信セッションのためのセッション識別子を入手する。セッション識別子は、グローバルに一意の識別子(GUID)、一意のコール識別子、および/または同種のものなどの、通信セッションを一意に識別するために使用される一意の識別子である。キュー・マネジャ132は、セッション識別子を、特定のクラスタ化されたアプリケーション122に関連付けられた特定のイベント・キュー133にマップする。これは、個々の通信セッションに関連付けられた多数のイベントが存在し得るケースについて必要である。たとえば、音声コールが、音声コールが最初に確立されたときに第1のイベントを、音声コールが転送または記録されたときに第2のイベントを有することができる。ステップ310で、キュー・マネジャ132は、そのセッション識別子が新しい通信セッションのためであるかどうかを判定する。セッション識別子が新しい通信セッションのためである場合、ステップ312で、キュー・マネジャ132は、イベントをイベント・キュー133に割り当てる。イベント・キュー133への割り当ては、ローディング、ラウンド・ロビン・スキーム、および/または同種のものなどの、さまざまなタイプの情報に基づくことができる。キュー・マネジャ132がセッション識別子に基づいてイベントをイベント・キュー133に割り当てるとき、キュー・マネジャ132は、通信セッションを、個別のクラスタ化されたアプリケーション122に割り当てている。同じクラスタ化されたアプリケーション122は、通常、個々の通信セッションについてのすべてのイベントを管理する。プロセスは次いで、ステップ302に戻る。
そうではなく、ステップ310でセッション識別子が既存の通信セッションのためである場合(すなわち、その通信セッションについての以前のイベントがイベント・キュー133に既に割り当てられていて、なおもアクティブである場合)、ステップ314で、キュー・マネジャ132は、イベントを、(セッション識別子に基づいて)同じ通信セッションについての以前のイベントと同じイベント・キュー133に割り当てる。プロセスは次いで、ステップ302に進む。
図4は、クラスタ化されたアプリケーション122からのHTTPロング・ポーリングを取り扱うためのプロセスの流れ図である。プロセスは、ステップ400で開始する。ステップ214でイベント・キュー133が作成されるとき、一実施形態において、ステップ402で、キュー・マネジャ132は、作成されたイベント・キュー133ごとに別個のプロセッサ・スレッドを作成する。ステップ404で、キュー・マネジャ132は、イベント・キュー133に割り当てられたクラスタ化されたアプリケーション122から、ロング・ポールHTTP GET要求を受信するのを待つ。
ロング・ポールHTTP GET要求は、ここで、クラスタ化されたアプリケーション122が、HTTP GET要求を送信し、キュー・マネジャ132からの応答を受信するための時間期間(たとえば、2分)の間待つ。応答が時間期間内に受信されない場合、新しいHTTP GET要求がクラスタ化されたアプリケーション122によって送信される。HTTP GET要求を使用する目的は、クラスタ化されたアプリケーション122が、発信HTTPソケット(ポート80)を使用してクラウド・サービス130との通信セッションを開始するようにすることである。これにより、通信セッションは企業内(信頼できる発信元)から開始されるので、ファイヤーウォール121までの強化されたセキュリティを提供する。通信セッションがクラウド・サービス130から開始された場合、ファイヤーウォール121上に新しいポートを開かなければならないことがある。これは、別のエンティティが(たとえば、中間者攻撃を使用して)着信HTTP GET要求/POSTを含む場合に、潜在的なセキュリティ侵害をもたらす。HTTP GET要求のアドレスが中間者攻撃者によって変更されている可能性があるため、結果的に中間者攻撃者へのデータの損害となることがある。
ステップ404でロング・ポールHTTP GET要求が受信されない場合、ステップ406で、プロセスは、プロセスが完了するかどうか(たとえば、イベント・キュー133がステップ212で削除される)を判定する。ステップ406でプロセスが完了した場合、ステップ408で、プロセスは終了する。そうではなく、ステップ406でプロセスが完了していない場合、プロセスはステップ404を繰り返す。
ステップ404でロング・ポールHTTP GET要求が受信された場合、ステップ410で、キュー・マネジャ132は、イベント・キュー133になんらかのイベントが存在するかどうかを判定する。ステップ410でイベント・キュー133に何のイベントも存在しない場合、ステップ412で、キュー・マネジャ132は、タイムアウト(ロング・ポールHTTP GET要求を受信しない時間期間)が存在しているかどうか、またはイベント・キュー133に関連付けられたクラスタ化されたアプリケーション122から新しいロング・ポールHTTP GET要求が受信されているかどうかを判定する。ステップ412で新しいロング・ポールHTTP GET要求が受信されており、タイムアウトが発生していない場合、プロセスは、ステップ410に戻る。そうではなく、ステップ412でタイムアウトが発生している場合、プロセスは、ステップ404に戻る。
ステップ410でイベント・キュー133に1つまたは複数のイベントが存在する場合、ステップ414で、キュー・マネジャ132は、イベント・キュー133における1つまたは複数のイベントを、クラスタ化されたアプリケーション122に送信する。プロセスは次いで、ステップ412に戻る。
図5は、ロング・ポールHTTP GET要求ごとに送信されるイベントの数を管理するためのプロセスの流れ図である。図5のプロセスは、図4のステップ414の一例示的な実施形態である。ステップ410でイベント・キュー133に1つまたは複数のイベントが存在すると判定した後、ステップ500で、キュー・マネジャ132は、イベント・キュー133におけるイベントの数を判定する。ステップ502で、キュー・マネジャ132は、イベント・キュー133におけるイベントの数が、送信する最大数よりも大きいかどうかを判定する。イベント・キュー133におけるイベントの最大数は、1からNまでの任意の数であってよく、ここで、Nは整数である。イベントの最大数は、管理者または他のエンティティによって定義されてよい。
イベント・キュー133におけるイベントの数がイベントの最大数よりも大きい場合、ステップ504で、キュー・マネジャ132は、イベント・キュー133にある最大数までのイベントを、クラスタ化されたアプリケーション122に送信する。プロセスは次いで、ステップ412に進む。
そうではなく、イベント・キュー133におけるイベントの数がイベントの最大数よりも大きくない場合、ステップ506で、キュー・マネジャ132は、イベント・キュー133にある全部のイベントを、クラスタ化されたアプリケーション122に送信する。プロセスは次いで、ステップ412に進む。
ステップ504およびステップ506で送信されるイベントのタイプは、同じ通信セッションについての、および/または多数の通信セッションについてのイベントであってよい。たとえば、ステップ504/506で送信されるイベントは、同じ通信セッションについてであってよい。一実施形態において、イベントの最大数はまた、個々の通信セッションに基づくことができる。たとえば、個々のクラスタ化されたアプリケーション122が現在2つの通信セッションを取り扱っている場合、クラスタ化されたアプリケーション122が取り扱っているそれぞれの通信セッションに基づいて、最大数が存在してよい(たとえば、第1の通信セッションについては1つのイベント、および第2の通信セッションについては2つのイベント)。
図5のプロセスは、異なるイベント・キュー133について異なる最大数を有してもよい。たとえば、第1のイベント・キュー133は、1つのイベントという最大数を有してよく、第2のイベント・キュー133は、2つのイベントという最大数を有してもよい。一実施形態において、異なる最大数は、同じタイプのクラスタ化されたアプリケーション122についてであっても、または同じ企業データ・センタ120における異なるタイプのクラスタ化されたアプリケーション122についてであってもよい。
一実施形態において、最大数の違いは、異なる2つの企業データ・センタ120に基づくことができる。たとえば、第1の企業データ・センタ120におけるクラスタ化されたアプリケーション122は、1つのイベントという最大数を有してよく、第2の企業データ・センタにおけるクラスタ化されたアプリケーション122は、2つのイベントという最大数を有してもよい。第1のデータ・センタ120におけるクラスタ化されたアプリケーション122は、同じタイプのクラスタ化されたアプリケーション122であっても、または異なるタイプのクラスタ化されたアプリケーション122であってもよい。たとえば、第1および第2の企業データ・センタ120におけるクラスタ化されたアプリケーション122が、同じクラスタ化されたIVRアプリケーションであってもよい。あるいは、第1のデータ・センタ120におけるクラスタ化されたアプリケーション122は、クラスタ化されたデータベース・アプリケーションであってよく、第2のデータ・センタ120におけるクラスタ化されたアプリケーション122は、クラスタ化されたコール記録アプリケーションであってもよい。これらの例において、それぞれの企業データ・センタ120は、一意の企業識別子を使用して、異なる企業・データ・センタ120におけるクラスタ化されたアプリケーション122同士を区別する。
図6は、クラウド・サービス130とクラスタ化されたアプリケーション122との間をブリッジするためのプロセスの流れ図である。ブリッジ131の目的は、クラウド・サービス130およびクラスタ化されたアプリケーション122についてソフトウェアへの要求される必要な変更を最小限にすることである。
ステップ600で、クラスタ化されたアプリケーション122が最初にロング・ポールHTTP GET要求(一実施形態において、これは、ロング・ポールHTTP POST要求であってもよい)を送信するとき、プロセスが開始する。ステップ600のロング・ポールHTTP GET要求が送信されて、クラスタ化されたアプリケーション122に送信されることになるデータ(すなわち、イベント/データ)の準備ができるまで待つ。ステップ602で、クラウド・サービス130で着信コールが受信される。たとえば、着信コールは、通信エンドポイント101Aからの着信コールであってもよい。着信コールは、音声コール、ビデオ・コール、マルチメディア・コール、インスタント・メッセージング(IM)コール、および/または同種のものであってもよい。
ステップ604で、着信コールの受信に応答して、クラウド・サービス130は、ルールに基づいて、どのクラスタ化されたアプリケーション122が着信コール(イベント)を通知されなければならないのかを判定する。たとえば、着信コールは、クラスタ化されたIVRアプリケーション122への音声コールであってもよい。どのクラスタ化されたアプリケーション122が呼び出されなければならないかが判定されると、ステップ606で、クラウド・サービス130は、HTTP POSTをブリッジ131に送信する。ステップ606のHTTP POSTはまた、着信コールのセッション識別子を含む。セッション識別子は、着信コールを一意に識別する。
一実施形態において、ステップ606のHTTP POSTはまた、(たとえば、拡張マークアップ言語(XML)フォーマットで)データを含むことができる。データ(この例ではXML)の存在は、クラウド・サービス130が、クラスタ化されたアプリケーション122からの応答データ(ステップ614で送信される)を予期していることを指し示す。XMLを使用することが説明されているが、JavaScript Object Notation(JSON)などの、データの他のフォーマットを使用することができる。応答データは、異なるタイプの応答データであってもよい。たとえば、応答データは、データベース123からのデータ、IVRシステムから集められたデータ、エージェント識別子、および/または同種のものであってもよい。
ステップ608で、ブリッジ131は、セッション識別子に基づいて、イベントをイベント・キュー133に(すなわち、図3のステップ312/314で説明されたように)割り当てる。ステップ600のロング・ポールHTTP GET要求に基づいて、ステップ610で、ブリッジ131は、セッション識別子/イベントを含む200OKを、クラスタ化されたアプリケーション122に(すなわち、ステップ414で説明されたように)送信する。ステップ606のHTTP POSTがXMLデータを収容する場合、ステップ610での200OKもまたXMLデータを含む。ステップ612で、クラスタ化されたアプリケーション122は次いで、ステップ610で送信されたイベント/XMLデータに基づいて実行する。たとえば、クラスタ化されたアプリケーション122は、ステップ612で、新しいコール通知メッセージから発呼者IDを取り、データベース123から発呼者についてのなんらかの情報をルックアップし、その情報を使用して、発呼者へのカスタム・グリーティングを再生するためのXMLコマンドを作成することができる。
ステップ614で、クラスタ化されたアプリケーション122は、XMLデータ/セッション識別子を有するHTTP POSTをブリッジ131に送信する。ステップ616で、ブリッジ131は、HTTP POSTから、セッション識別子/XMLデータを入手する。ステップ618で、ブリッジ131は、200OKを送信する。ステップ606のHTTP POSTがXMLデータ(すなわち、カスタム・グリーティングを再生するためのコマンド)を収容していた場合、200OKもまた、XMLデータ(たとえば、データベース123からのデータ)を含む。ステップ620で、クラウド・サービス130は次いで、XMLデータを使用する。ステップ622で、ブリッジ131はまた、200OKメッセージをクラスタ化されたアプリケーション122に送信して、ステップ614のHTTP POSTを肯定応答する。
ステップ622で、着信コールにおける第2のイベントが発生する。たとえば、着信コールのメディア・ストリームにおいて、話し言葉またはジェスチャが検出される。これにより、ステップ624で、クラウド・サービス130が(定義されたルールに基づいて)イベントを有するHTTP POSTをブリッジ131に送信することをもたらす。ステップ626で、ブリッジ131は、イベントを、クラスタ化されたアプリケーション122(同じクラスタ化されたアプリケーション122)のためのイベント・キュー133に置く。ステップ628で、クラスタ化されたアプリケーション122は、別のロング・ポールHTTP GET(一実施形態において、これは、ロング・ポールHTTP POST要求であってもよい)を送信する。ステップ628のロング・ポールHTTP GETの受信に応答して、ステップ632で、ブリッジは、イベント・キュー133にある(ステップ624のHTTP POSTの)イベントを取って、そのイベントを200OKメッセージにおいてクラスタ化されたアプリケーション122に送信する。ステップ634で、クラスタ化されたアプリケーションは次いで、そのイベントを処理する。ステップ636で、ブリッジ131はまた、200OKをクラウド・サービス130に送信して、ステップ624のHTTP POSTを肯定応答する。
一実施形態において、ステップ624のHTTP POSTは、ステップ628のロング・ポールHTTP GETの後に送信されてもよい。この実施形態において、ステップ626は、ステップ628の後に発生することになる。
図6のプロセスは、クラウド・サービス130が、XMLでデータを送信することによって、クラスタ化されたアプリケーション122に指示を要求する場合を説明している。一実施形態において、クラウド・サービス130は、ステップ606のHTTP POSTでイベントを送信するだけでよく、いかなるXMLデータを送信しなくてもよい。この例示的な実施形態において、クラウド・サービス130は、ステップ618の200OKにおいて、いかなるXMLデータを受信することも予期していない。たとえば、ステップ606のHTTP POST/ステップ610の200OKは、ステップ602の着信コールがクラスタ化されたアプリケーション122が追跡している特定の発呼者からであることを、クラスタ化されたアプリケーション122に通知するためであってよい。この例において、ステップ614のHTTP POST(またはHTTP GET)はいかなるXMLデータも収容しない。同様に、ステップ618の200OKもいかなるXMLデータを収容しない。
一実施形態において、ステップ610の200OKにおけるXMLデータ(必ずしもXMLデータそれ自体に限らない)が存在しているだけで、応答が必要であることを、クラスタ化されたアプリケーション122に指し示す。たとえば、XMLデータは、データなしでタグのみを含んでもよい。このケースにおいて、クラスタ化されたアプリケーション122は、イベントのタイプに基づいて、何のデータが送信されることになるかを既に知っている。あるいは、XMLデータそれ自体が、ステップ614のHTTP POSTメッセージにおいて、クラスタ化されたアプリケーション122が何のデータを送信するのかを指し示すことができる。
図6のプロセスは、単一のクラスタ化されたアプリケーション122について説明している。しかしながら、当業者であれば、図6のプロセスがまた、多数のクラスタ化されたアプリケーション122と連携するように設計されることを理解するであろう。たとえば、多数のクラスタ化されたアプリケーション122は、多数の着信コールのためのサービスを並行して提供することができる。
加えて、図6のプロセスは、異なる企業データ・センタ120における異なるクラスタ化されたアプリケーション122と連携することができる。この実施形態において、ブリッジ131は、ステップ606のHTTP POSTにおけるイベントのタイプに基づいて、または企業データ・センタのための識別子に基づいて、個々の企業データ・センタ120を識別することができる。クラスタ化されたアプリケーションは、企業データ・センタ識別子を使用して、ステップ614で応答する。
本明細書で説明されるプロセッサの例には、限定はされないが、Qualcomm(登録商標)Snapdragon(登録商標)800および801、4G LTE統合および64ビット・コンピューティングによるQualcomm(登録商標)Snapdragon(登録商標)610および615、64ビット・アーキテクチャによるApple(登録商標)A7プロセッサ、Apple(登録商標)M7モーション・コプロセッサ、Samsung(登録商標)Exynos(登録商標)シリーズ、Intel(登録商標)Core(登録商標)プロセッサのファミリ、Intel(登録商標)Xeon(登録登録商標)プロセッサのファミリ、Intel(登録商標)Atom(登録商標)プロセッサのファミリ、Intel Itanium(登録商標)プロセッサのファミリ、Intel(登録商標)Core(登録商標)i5−4670Kおよびi7−4770K 22nm Haswell、Intel(登録商標)Core(登録商標)i5−3570K 22nm Ivy Bridge、AMD(登録商標)FX(登録商標)プロセッサのファミリ、AMD(登録商標)FX−4300、FX−6300、およびFX−8350 32nm Vishera、AMD(登録商標)Kaveriプロセッサ、Texas Instruments(登録商標)Jacinto C6000(登録商標)オートモーティブ・インフォテインメント・プロセッサ、Texas Instruments(登録商標)OMAP(登録商標)オートモーティブ・グレード・モバイル・プロセッサ、ARM(登録商標)Cortex(登録商標)−Mプロセッサ、ARM(登録商標)Cortex−AおよびARM926EJ−S(登録商標)プロセッサ、他の業界等価なプロセッサのうちの少なくとも1つが含まれてよく、任意の知られた、または将来開発される、標準、命令セット、ライブラリ、および/またはアーキテクチャを使用して、コンピュータ計算機能を実施することができる。
本明細書で議論されたステップ、機能、および動作のいずれも、連続的かつ自動的に実施することができる。
しかしながら、本開示を不必要に曖昧にすることを避けるために、前述の説明は、いくつかの知られた構造およびデバイスを省略している。この省略は、特許請求される開示の範囲を限定するものとして解釈されるべきではない。特定の詳細は、本開示の理解を提供するために記載される。しかしながら、本開示は、本明細書に記載された特定の詳細を越えて多様なやり方で実践され得ることを認識されたい。
さらに、本明細書で例証した例示的な実施形態は、システムの並置されたさまざまなコンポーネントを示しているが、システムの一定のコンポーネントは、LANおよび/もしくはインターネットなどの分散ネットワーク110の遠隔部分に、または専用システム内にリモートに設置されてもよい。したがって、システムのコンポーネントは、1つまたは複数のデバイスに組み合わされても、または、アナログおよび/もしくはデジタル電気通信ネットワーク、パケット交換ネットワーク、または回線交換ネットワークなどの分散ネットワークの個別のノード上に並置されてもよいことを認識されたい。前述の説明から、およびコンピュータ計算上の効率の理由で、システムのコンポーネントは、システムの動作に影響することなく、コンポーネントの分散ネットワーク内の任意の場所に配置されてもよいことを認識されたい。たとえば、さまざまなコンポーネントを、PBXおよびメディア・サーバなどのスイッチに、ゲートウェイに、1つまたは複数の通信デバイスに、1つもしくは複数のユーザの構内に、またはそれらのなんらかの組合せで設置することができる。同様に、システムの1つまたは複数の機能性部分が、電気通信デバイスと関連付けられたコンピューティング・デバイスとの間で分散されてもよい。
さらに、要素を接続するさまざまなリンクは、ワイヤード・リンクもしくはワイヤレス・リンク、またはそれらの任意の組合せ、または接続された要素へと、および接続された要素からデータを供給する、および/または通信することが可能な任意の他の知られた、または後に開発される要素であってもよいことを認識されたい。これらのワイヤード・リンクまたはワイヤレス・リンクはまた、セキュアなリンクであってよく、暗号化した情報を通信することが可能であってよい。リンクとして使用される伝送媒体は、たとえば、同軸ケーブル、銅ワイヤ、および光ファイバを含む、電気信号のための任意の好適な搬送体であってよく、無線波および赤外線データ通信の間に生成されるような音響または光波の形態を取ることができる。
また、流れ図は、イベントの個別のシーケンスに関係して議論され、例証されてきたが、このシーケンスへの変更、追加、および省略は、本開示の動作に実質的に影響することなく行われてもよいことを認識されたい。
本開示のいくつかの変形形態および修正形態を使用することができる。本開示のいくつかの特徴について提供することは、他の特徴を提供することなく可能であるだろう。
さらに別の実施形態において、本開示のシステムおよび方法を、特殊目的コンピュータ、プログラムされたマイクロプロセッサまたはマイクロコントローラおよび周辺集積回路素子、ASICまたは他の集積回路、デジタル信号プロセッサ、ディスクリート素子回路などのハードワイヤード電子回路または論理回路、PLD、PLA、FPGA、PALなどのプログラマブル論理デバイスまたはゲートアレイ、特殊目的コンピュータ、任意の同等の手段、その他と共に実装することができる。一般に、本明細書で例証した方法論の実装することが可能なあらゆるデバイスまたは手段を、本開示のさまざまな態様を実装するために使用することができる。本開示のために使用することができる例示的なハードウェアには、コンピュータ、ハンドヘルド・デバイス、電話(たとえば、セルラ、インターネット対応、デジタル、アナログ、ハイブリッド、およびその他)、ならびに本技術分野で知られた他のハードウェアが含まれる。これらのデバイスのうちのいくつかは、プロセッサ(たとえば、単一のまたは多数のマイクロプロセッサ)、メモリ、不揮発性記憶装置、入力デバイス、および出力デバイスを含む。さらに、限定はしないが、分散処理もしくはコンポーネント/オブジェクト分散処理、並列処理、または仮想マシン処理を含む代替的なソフトウェア実装がまた、本明細書で説明された方法を実装するために構築されてもよい。
さらに別の実施形態において、開示される方法を、多様なコンピュータまたはワークステーション・プラットフォーム上で使用することができるポータブル・ソース・コードを提供するオブジェクトまたはオブジェクト指向のソフトウェア開発環境を使用するソフトウェアと共に容易に実装することができる。あるいは、開示されるシステムを、標準的な論理回路またはVLSI設計を使用するハードウェアで、部分的に、または全体的に実装することができる。本開示に従ってシステムを実装するために、ソフトウェアが使用されるのか、ハードウェアが使用されるのかは、システムの速度および/もしくは効率要件、個別の機能、ならびに利用される個別のソフトウェア・システムもしくはハードウェア・システム、またはマイクロプロセッサ・システムもしくはマイクロコンピュータ・システムに依存する。
さらに別の実施形態において、開示される方法を、コントローラおよびメモリと協働するプログラムされた汎用コンピュータ、特殊目的コンピュータ、マイクロプロセッサ、その他の上で実行され、記憶媒体上に記憶することができるソフトウェアで部分的に実装することができる。これらの実例において、本開示のシステムおよび方法を、アプレット、JAVA(登録商標)、またはCGIスクリプトなどの、パーソナル・コンピュータ上に埋め込まれたプログラムとして、サーバもしくはコンピュータ・ワークステーション上に常駐するリソースとして、専用の測定システム、システム・コンポーネント、その他に埋め込まれたルーチンとして実装することができる。システムはまた、ソフトウェアおよび/またはハードウェア・システムの中に、システムおよび/または方法を物理的に組み込むことによって実装することもできる。
本開示は、個別の標準およびプロトコルを参照して実施形態において実装されるコンポーネントおよび機能を説明しているが、本開示は、そのような標準およびプロトコルに限定はされない。本明細書で言及していない他の同様の標準およびプロトコルが存在し、本開示に含まれるものと考えられる。その上、本開示で言及した標準およびプロトコル、ならびに本明細書で言及していない他の同様の標準およびプロトコルは、本質的に同じ機能を有するより速い、またはより効率的な等価物に定期的に取って代わる。同じ機能を有するそのような置き換えられた標準およびプロトコルは、本開示に含まれる等価物と考えられる。
本開示は、さまざまな実施形態、構成、および態様において、さまざまな実施形態、部分組合せ、およびその部分集合を含む、実質上本明細書で図示され、説明されたようなコンポーネント、方法、プロセス、システム、および/または装置を含む。当業者であれば、本開示を理解した後で、本明細書で開示されたシステムおよび方法をどのように作り出し、使用するかを理解するであろう。本開示は、さまざまな実施形態、構成、および態様において、本明細書に、またはさまざまな実施形態、構成、もしくはその態様に図示および/または説明されていない項目がない場合のデバイスおよびプロセスを提供することを含み、たとえば、性能を向上させ、実装の容易さを達成し、および/または実装のコストを削減するために、以前のデバイスまたはプロセスで使用されていた可能性があるそのような項目がない場合のデバイスおよびプロセスを提供することを含む。
本開示の上記の議論は、例証および説明を目的として提示されてきた。上記は、本開示を、本明細書で開示した形式に限定することを意図していない。たとえば、上記の詳細な説明において、本開示のさまざまな特徴は、本開示を合理化する目的のために、1つまたは複数の実施形態、構成、または態様に一緒にグループ化されている。本開示の実施形態、構成、または態様の特徴は、上で議論された以外の代替実施形態、構成、または態様に組み合わされてもよい。この開示の方法は、特許請求される開示が各請求項に明示的に列挙されているよりも多くの特徴を要するという意図を反映しているものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の態様は、単一の上記に開示された実施形態、構成、または態様のすべての特徴よりも少ないところにある。したがって、以下の特許請求の範囲はこれにより、この詳細な説明に組み込まれ、各請求項は、本開示の別個の好ましい実施形態としてそれ自体で成り立っている。
その上、本開示の説明は、1つもしくは複数の実施形態、構成、または態様、ならびに一定の変形形態および修正形態の説明を含んできたが、他の変形形態、組合せ、および修正形態は、たとえば、本開示を理解した後での当業者の技術および知識の範囲内にあり得るように、本開示の範囲内である。特許請求されるものに対して代替的で、交換可能な、および/または等価な構造、機能、範囲、またはステップが本明細書に開示されているか否かにかかわらず、かついかなる特許性のある主題も公に捧げることを意図することなく、そのような代替的で、交換可能な、および/または等価な構造、機能、範囲、またはステップを含む、代替実施形態、構成、または態様を許容される程度まで含む権利を取得することが意図される。

Claims (10)

  1. マイクロプロセッサと、
    前記マイクロプロセッサに結合されたコンピュータ可読媒体であって、前記マイクロプロセッサを実行させるようにプログラムするマイクロプロセッサ可読命令および実行可能命令を含むコンピュータ可読媒体と、
    複数のクラスタ化されたアプリケーションから、前記複数のクラスタ化されたアプリケーションの複数の識別子を含む複数のロング・ポール・ハイパー・テキスト・トランスファー・プロトコル(HTTP)要求を受信するキュー・マネジャであって、前記複数の識別子のそれぞれに基づいて、前記複数のクラスタ化されたアプリケーションのための複数のイベント・キューのそれぞれを作成し、複数の通信セッションのそれぞれに基づいて、複数のイベントを前記複数のイベント・キューのそれぞれに追加し、前記複数のイベント・キューにおける前記複数のイベントに基づいて、前記複数のイベントを含む、前記複数のロング・ポールHTTP要求に対する複数の応答を送信する、キュー・マネジャと
    を備えるシステム。
  2. 前記キュー・マネジャが、クラウド・サービスから、前記複数の通信セッションのうちの個々の通信セッションについてのイベントを含むHTTP POSTを受信し、前記キュー・マネジャが、前記複数の通信セッションのうちの前記個々の通信セッションの識別子を使用して、個々のクラスタ化されたアプリケーションのための個々のイベント・キューを識別し、前記HTTP POSTはまた、拡張マークアップ言語(XML)データおよびJavaScript Object Notation(JSON)データのうちの少なくとも1つを含み、前記XML/JSONデータの存在が、前記クラウド・サービスが前記個々のクラスタ化されたアプリケーションから、データを有する応答メッセージを予期していることを指し示す、請求項1に記載のシステム。
  3. 前記複数のイベント・キューのうちの個々のイベント・キューが、前記複数の通信セッションのうちの個々の通信セッションについての複数のイベントを含み、前記キュー・マネジャが、前記個々の通信セッションについて送信するイベントの最大数に基づいて、前記複数のイベントを前記クラスタ化されたアプリケーションに単一のメッセージで送信すること、および前記個々の通信セッションについての前記イベント・キューにおける前記複数のイベントのうちの一部のみを単一のメッセージで送信することのうちの少なくとも1つを行う、請求項1に記載のシステム。
  4. 前記複数のイベント・キューが、第1のイベント・キューと第2のイベント・キューとを含み、前記第1のイベント・キューが、第1の通信セッションに関連付けられた複数のイベントを含み、前記第2のイベント・キューが、第2の通信セッションに関連付けられた複数のイベントを含み、前記第1のイベント・キューが、第1のロング・ポールHTTP GET要求に応答して送信され得るイベントの第1の最大数を有し、前記第2のイベント・キューが、第2のロング・ポールHTTP GET要求に応答して送信され得るイベントの第2の最大数を有し、イベントの前記第1の最大数が、イベントの前記第2の最大数とは異なる、請求項1に記載のシステム。
  5. 企業データ・センタをさらに備え、
    前記企業データ・センタが、前記複数のクラスタ化されたアプリケーションを含み、前記複数のクラスタ化されたアプリケーションが、
    前記複数のロング・ポールHTTP要求を送信し、
    前記複数の応答を受信し、
    受信された複数の応答に基づいて、複数のアクションを実装する、
    請求項1に記載のシステム。
  6. マイクロプロセッサによって、複数のクラスタ化されたアプリケーションから、複数のロング・ポール・ハイパー・テキスト・トランスファー・プロトコル(HTTP)GET要求を受信することであって、前記複数のロング・ポールHTTP要求が、前記複数のクラスタ化されたアプリケーションの複数の識別子を含む、受信することと、
    前記マイクロプロセッサによって、前記複数の識別子のそれぞれに基づいて、前記複数のクラスタ化されたアプリケーションのための複数のイベント・キューのそれぞれを作成することと、
    前記マイクロプロセッサによって、複数の通信セッションのそれぞれに基づいて、複数のイベントを前記複数のイベント・キューのそれぞれに追加することと、
    前記マイクロプロセッサによって、前記複数のイベント・キューにおける前記複数のイベントに基づいて、前記複数のイベントを含む、前記複数のロング・ポールHTTP要求に対する複数の応答を送信することと
    を含む方法。
  7. 前記マイクロプロセッサが、クラウド・サービスから、前記複数の通信セッションのうちの個々の通信セッションについてのイベントを含むHTTP POSTを受信し、前記マイクロプロセッサが、前記複数の通信セッションのうちの前記個々の通信セッションの識別子を使用して、個々のクラスタ化されたアプリケーションのための個々のイベント・キューを識別し、前記HTTP POSTはまた、拡張マークアップ言語(XML)データおよびJavaScript Object Notation(JSON)データのうちの少なくとも1つを含み、前記XML/JSONデータの存在が、前記クラウド・サービスが前記個々のクラスタ化されたアプリケーションから、データを有する応答メッセージを予期していることを指し示す、請求項6に記載の方法。
  8. 前記複数のイベント・キューのうちの個々のイベント・キューが、前記複数の通信セッションのうちの個々の通信セッションについての複数のイベントを含み、前記マイクロプロセッサが、前記個々の通信セッションについて送信するイベントの最大数に基づいて、前記複数のイベントを前記クラスタ化されたアプリケーションに単一のメッセージで送信すること、および前記個々の通信セッションについての前記イベント・キューにおける前記複数のイベントのうちの一部を単一のメッセージで送信することのうちの少なくとも1つを行う、請求項6に記載の方法。
  9. 前記複数のイベント・キューが、第1のイベント・キューと第2のイベント・キューとを含み、前記第1のイベント・キューが、第1の通信セッションに関連付けられた複数のイベントを含み、前記第2のイベント・キューが、第2の通信セッションに関連付けられた複数のイベントを含み、前記第1のイベント・キューが、第1のHTTP GET要求に応答して送信され得るイベントの第1の最大数を有し、前記第2のイベント・キューが、第2のHTTP GET要求に応答して送信され得るイベントの第2の最大数を有し、イベントの前記第1の最大数が、イベントの前記第2の最大数とは異なる、請求項6に記載の方法。
  10. 企業データ・センタをさらに含み、
    前記企業データ・センタが、前記複数のクラスタ化されたアプリケーションを含み、前記複数のクラスタ化されたアプリケーションが、
    前記複数のロング・ポールHTTP要求を送信し、
    前記複数の応答を受信し、
    受信された複数の応答に基づいて、複数のアクションを実装する、
    請求項6に記載の方法。
JP2018235173A 2017-12-19 2018-12-17 クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング Active JP6698806B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/847,211 2017-12-19
US15/847,211 US20190190986A1 (en) 2017-12-19 2017-12-19 Long polling for clustered application load balancing

Publications (2)

Publication Number Publication Date
JP2019109891A JP2019109891A (ja) 2019-07-04
JP6698806B2 true JP6698806B2 (ja) 2020-05-27

Family

ID=64949053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018235173A Active JP6698806B2 (ja) 2017-12-19 2018-12-17 クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング

Country Status (4)

Country Link
US (1) US20190190986A1 (ja)
EP (1) EP3503506A1 (ja)
JP (1) JP6698806B2 (ja)
CN (1) CN109936618B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10944801B1 (en) 2019-02-25 2021-03-09 Amazon Technologies, Inc. Serverless signaling in peer-to-peer session initialization
US11457057B2 (en) 2020-03-11 2022-09-27 Microsoft Technology Licensing, Llc Systems and methods for establishing highly secure and resilient persistent communication connections

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046000B2 (en) * 2003-12-24 2011-10-25 Nortel Networks Limited Providing location-based information in local wireless zones
US8788949B2 (en) * 2008-10-28 2014-07-22 Google Inc. Provisioning instant communications for a community of users
US8484716B1 (en) * 2009-08-07 2013-07-09 Adobe Systems Incorporated Hosting a server application on multiple network tiers
GB2504634B (en) * 2010-11-22 2014-04-09 Seven Networks Inc Aligning data transfer to optimize connections established for transmission over a wireless network
US20120131083A1 (en) * 2010-11-24 2012-05-24 Edward Wayne Goddard Systems and methods for asynchronous notification using http
US20120185561A1 (en) * 2011-01-17 2012-07-19 Telefonaktiebolaget L M Ericsson (Publ) HTTP Notification Gateway
JP5617709B2 (ja) * 2011-03-16 2014-11-05 富士通株式会社 プログラム、制御装置および方法
US8751639B2 (en) * 2011-04-27 2014-06-10 Rackspace Us, Inc. Event queuing and distribution system
CN102882903B (zh) * 2011-07-12 2017-07-28 腾讯科技(深圳)有限公司 一种多网站应用信息获取方法及系统
US8667579B2 (en) * 2011-11-29 2014-03-04 Genband Us Llc Methods, systems, and computer readable media for bridging user authentication, authorization, and access between web-based and telecom domains
US9225660B2 (en) * 2011-12-21 2015-12-29 Arm Finland Oy Method, apparatus and system for addressing resources
US20130290234A1 (en) * 2012-02-02 2013-10-31 Visa International Service Association Intelligent Consumer Service Terminal Apparatuses, Methods and Systems
US9503885B2 (en) * 2012-04-03 2016-11-22 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for providing a subscriber identity
US20150172228A1 (en) * 2012-04-17 2015-06-18 George Zalepa Method and system for communicating information over a network
US9088622B2 (en) * 2012-07-05 2015-07-21 Sap Se Dynamic client registration for server push events in long polling scenarios
US20140149493A1 (en) * 2012-11-29 2014-05-29 Utku Gunay ACER Method for joint service placement and service routing in a distributed cloud
US20140201376A1 (en) * 2013-01-11 2014-07-17 Andre Godin Method and system for the handling of redundant long poll
CN104079598B (zh) * 2013-03-27 2018-09-28 腾讯科技(深圳)有限公司 一种实现网页协同浏览的方法和装置
US20140344411A1 (en) * 2013-05-15 2014-11-20 Piazza Technologies, Inc. Method for delivering long polling push messages in a multi-server environment
US9203815B1 (en) * 2013-11-27 2015-12-01 Symantec Corporation Systems and methods for secure third-party data storage
US9800689B2 (en) * 2013-12-19 2017-10-24 Sap Se Distributed application integration auto-adjustment
JP6364496B2 (ja) * 2014-02-07 2018-07-25 オラクル・インターナショナル・コーポレイション モバイルクラウドサービスアーキテクチャ
CN104852991A (zh) * 2015-06-01 2015-08-19 上海雷腾软件股份有限公司 分布式推送服务器系统及应用该系统的数据推送方法
US10587671B2 (en) * 2015-07-09 2020-03-10 Zscaler, Inc. Systems and methods for tracking and auditing changes in a multi-tenant cloud system
US10506055B2 (en) * 2016-07-08 2019-12-10 Facebook, Inc. Automatic recipient targeting for notifications
CN106681861A (zh) * 2016-12-08 2017-05-17 杭州销冠网络科技有限公司 一种新环境隔离的配置数据管理方法及系统
US11663205B2 (en) * 2017-05-04 2023-05-30 Salesforce, Inc. Technologies for asynchronous querying
CN107947960B (zh) * 2017-10-13 2021-01-15 用友网络科技股份有限公司 配置信息的推送方法及系统、配置信息的接收方法及系统

Also Published As

Publication number Publication date
CN109936618B (zh) 2022-05-24
US20190190986A1 (en) 2019-06-20
JP2019109891A (ja) 2019-07-04
EP3503506A1 (en) 2019-06-26
CN109936618A (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
US11108911B2 (en) System and method for flexible routing
US10756912B2 (en) Distributed ledger and blockchain to confirm validity of call recordings
US9672380B2 (en) Stack fusion architecture including distributed software clusters to enable software communication services
US11576046B2 (en) System and method for providing additional functionality to existing software in an integrated manner
US9654518B2 (en) Stack fusion software communication service
US10880338B2 (en) System and method for providing to push notifications to communication endpoints
JP6698806B2 (ja) クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング
US20190312918A1 (en) System and method for providing a rich user experience for cellular calls
EP3661156A1 (en) Event-based multiprotocol communication session distribution
WO2022231855A1 (en) Telephone number assignment for text message communications
US10938914B2 (en) Inter domain instant messaging bridge
JP6616452B2 (ja) 新たなサービス拒否モードにおけるホストを介した通信セッションの追加
EP3467732A1 (en) Split enterprise/provider workflows
US10469538B2 (en) Call preservation for multiple legs of a call when a primary session manager fails
US12022372B2 (en) Emergency services communication for a premises
US9407568B2 (en) Self-configuring dynamic contact center
CN109040007B (zh) 用于应对替代网络地址类型(anat)不兼容性的方法和系统
US20220353367A1 (en) Video Voicemail Recording System
EP4378152A1 (en) Group handling of calls for large call queues

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200305

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200428

R150 Certificate of patent or registration of utility model

Ref document number: 6698806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250