JP6324304B2 - クライアント装置及び通信システム及びデータ処理方法及びプログラム - Google Patents
クライアント装置及び通信システム及びデータ処理方法及びプログラム Download PDFInfo
- Publication number
- JP6324304B2 JP6324304B2 JP2014243741A JP2014243741A JP6324304B2 JP 6324304 B2 JP6324304 B2 JP 6324304B2 JP 2014243741 A JP2014243741 A JP 2014243741A JP 2014243741 A JP2014243741 A JP 2014243741A JP 6324304 B2 JP6324304 B2 JP 6324304B2
- Authority
- JP
- Japan
- Prior art keywords
- client
- representative
- request
- client device
- response
- 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
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Description
サーバ装置とクライアント装置の間にロードバランサーを配置し、クライアント装置はロードバランサーに対して要求を送信し、ロードバランサーがある一定の基準に従ってその要求を、複数あるサーバ装置のうち、どのサーバ装置が処理するかを決定する。
そして、ロードバランサーが、処理を行わせるサーバ装置に要求に対処するよう命令を発行する。
これにより、個々のサーバ装置の処理負荷を分散・平準化させることができる。
特許文献1の技術では、サーバ装置と複数のクライアント装置で構成され、クライアント装置にソフトウエアイメージを配布するシステムにおいて、サーバ装置がクライアント装置を複数のグループに分類し、グループごとに代表クライアント装置を決め、サーバ装置は代表クライアント装置へソフトウエアイメージを配布する。
代表クライアント装置は、同一グループに所属する他のクライアント装置からの要求に基づいてソフトウエアイメージを同一グループに属するクライアント装置に配布する。
クライアント装置のシステムへの参加、離脱が頻繁に発生するような、例えば高速移動体からの無線通信によるシステム参加が行われる状況においては、サーバ装置が頻繁にグループ管理、代表クライアント装置の決定を行う必要があり、サーバ装置の処理負荷が増加してしまうという課題がある。
複数のクライアント装置が含まれる通信システムに含まれるクライアント装置であって、
いずれかのクライアント装置により生成されたサーバ装置へのリクエストを取得した場合に、取得した取得リクエストについて、代表してリクエストを処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定部と、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記取得リクエストに対応する前記サーバ装置からのレスポンスが、自装置がアクセスできるキャッシュ領域にキャッシュされているか否かを判定する代表クライアント処理部と、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられており、前記取得リクエストに対応するレスポンスが前記キャッシュ領域にキャッシュされていない場合に、前記取得リクエストを前記サーバ装置に送信するサーバ通信部と、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられていない場合に、前記取得リクエストを他のクライアント装置に送信する他クライアント通信部とを有する。
また、代表クライアントロールが割り当てられているクライアント装置においてレスポンスがキャッシュされている場合には、サーバ装置にリクエストを送信することなく、リクエスト生成元のクライアント装置にレスポンスを提供することができる。
このため、サーバ装置を増強させることなく、また、サーバ装置が単体で構成される場合でも、サーバ装置の負荷を軽減することができる。
以下にて、本実施の形態を説明する。
本実施の形態では、サーバ装置のリソースを増強させることなく、また、サーバ装置単体のみで構成した場合でも、サーバ装置の負荷軽減効果が得られるようにする。
このため、本実施の形態では、サーバ装置に負荷分散のための処理を行わせるのではなく、クライアント装置に負荷分散のための処理を行わせる。
図1は、本実施の形態に係るクライアント・サーバシステムの構成例を示す。
クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104で構成されるシステムは、通信システム1000という。
なお、クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104は、あくまで複数のクライアント装置が存在する事を示すため、一つの例として4台のクライアント構成としている。
クライアント装置の台数は複数であれば構わず、4台以外の構成で構わない。
以下では、サーバ装置105を単にサーバともいい、クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104を単にクライアントともいう。
なお、クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104のハードウエア構成例は共通しているため、以下では、代表として、クライアント装置101のハードウエア構成例を説明する。
以下の説明は、クライアント装置102、クライアント装置103、クライアント装置104にも同様に当てはまる。
より具体的には、CPU110が、後述するアプリケーションロジック部206、リクエスト生成部207、代表クライアント判定部208、他クライアント通信部209、代表クライアント処理部210、受信データ管理部211、サーバ通信部212の機能を実現するプログラムを実行することで、クライアント装置101の後述する処理が行われる。
入力インタフェース112は、マウスやキーボードなどの入力デバイスが接続されるインタフェースであり、クライアント装置101のユーザは入力インタフェース112に接続された入力デバイスを操作して、クライアント装置101を操作する。
出力インタフェース113は、ディスプレイやスピーカーなどの出力デバイスが接続されるインタフェースであり、クライアント装置101のユーザは出力デバイスに出力される光や音などの刺激を元にクライアント装置101の状況を知覚する事が可能となる。
通信インタフェース114は、クライアント装置101がサーバ装置105や他クライアント装置102、クライアント装置103、クライアント装置104とデータの交換を行うためのインタフェースであり、ネットワーク130に接続される。
永続記憶インタフェース115は、ディスクなどの不揮発性の記憶装置が接続されるインタフェースであり、電源断後にも記憶したいデータや一時データの保存読み出しはこのインタフェースを通して行われる。
サーバ装置105は、クライアント装置101〜104と同等の情報処理装置である。
サーバ装置105は、CPU120、メモリ121、入力インタフェース122、出力インタフェース123、通信インタフェース124、永続記憶インタフェース125、ディスク126などの要素を内蔵しており、それらがバス127で接続されている。
より具体的には、CPU120が、後述する通信部213及び要求処理部214の機能を実現するプログラムを実行することで、サーバ装置105の後述する処理が行われる。
入力インタフェース122は、マウスやキーボードなどの入力デバイスが接続されるインタフェースであり、サーバ管理者は入力インタフェース122に接続された入力デバイスを操作して、サーバ装置105を操作する。
出力インタフェース123は、ディスプレイやスピーカーなどの出力デバイスが接続されるインタフェースであり、サーバ管理者は出力デバイスに出力される光や音などの刺激を元にサーバ装置105の状況を知覚する事が可能となる。
通信インタフェース124は、クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104とデータの交換を行うためのインタフェースであり、ネットワーク130に接続される。
永続記憶インタフェース125は、ディスクなどの不揮発性の記憶装置が接続されるインタフェースであり、電源断後にも記憶したいデータや一時データの保存読み出しはこのインタフェースを通して行われる。
クライアント装置101、クライアント装置102、クライアント装置103、クライアント装置104は、サーバ装置105に何らかの処理を要求する場合、その要求内容をデータとして記述したリクエストをサーバ装置105に発行する。
例えばWebシステムではクライアント・サーバ間の通信はHTTP(HyperText Transfer Protocol)を用いて行われ、そのリクエストはHTTPリクエストのメソッド、URI(Unified Resource Identifier)、ボディなどとして表現される。
なお、サーバ・クライアント間の通信はHTTP以外にもWebSocket API(Application Programming Interface)など他のプロトコルを用いたとしても、本質的には同等であり、違いはない。
HTTPを用いてリクエストを受け取った場合、サーバ装置105は、一般的にはURIで処理を行うべき対象となるリソースを一意に特定し、メソッドでそのリソースに対する具体的な動作を特定する。
その他処理に必要となるパラメータをクライアント装置から指定する場合にはURIのクエリー部もしくはボディとしてパラメータを与えて、クライアント装置から送信されてくるため、サーバ装置105は適時その情報(パラメータ)を利用して処理を行う。
サーバ装置105がクライアント装置に提供する処理は、ファイルの内容の送信、ファイルの書き換え、データベース等の他プロセスの制御や、サーバ装置105に接続されている各種機器の制御など多岐にわたる。
通信部213は、複数のクライアント装置と並行して通信のコネクションを確立できる。
通信部213は、クライアント装置からのリクエストを受信すると、そのリクエストを要求処理部214に転送する。
その後、要求処理部214は、特定された要求処理を実行し、その処理結果を得る。
処理結果を得た要求処理部214はクライアント装置が解釈可能な形式にその処理結果を変換しレスポンスを生成する。
レスポンス生成後、要求処理部214は通信部213を利用してレスポンスを、リクエスト送信元のクライアント装置に返信する。
各クライアント装置は、それぞれ同等の内部処理モジュール構成となっており、どのクライアント装置も基本的に等価である。
図3では、クライアント装置101、クライアント装置102のみ内部処理モジュールを記述しているが、クライアント装置103、クライアント装置104にはその記述がないのは、記述を省略しているためであり、クライアント装置103、クライアント装置104はクライアント装置101、クライアント装置102と同等の内部処理モジュールを持つ。
以下では、代表として、クライアント装置101の内部処理モジュールを説明する。
以下の説明は、クライアント装置102、クライアント装置103、クライアント装置104にも同様に当てはまる。
例えば、提供するサービスがサーバ装置105と連動して動作するゲームアプリケーションであれば、ゲームアプリケーションに必要となるデータやゲームロジックなどがプログラミングされたソフトウエア等がアプリケーションロジック部206に相当する。
それ以外にサーバ装置105を経由したプラント監視制御を提供するサービスであれば、監視制御に必要な制御手続きやプラントから取得したデータを表示するための表示ロジック等がプログラミングされたソフトウエア等がアプリケーションロジック部206に相当する。
アプリケーションロジック部206は、サーバ装置105と連動して動作するアプリケーションであれば何でも構わない。
アプリケーションロジック部206は、サーバ装置105と連動する必要が発生すると、リクエスト生成部207に対してサーバ装置105と連動すべき具体的な処理内容を伝える処理を行う。
アプリケーションロジック部206は連動すべき処理内容に対応するAPIを呼び出す。
また、リクエスト生成部207は、必要に応じてパラメータをAPIに提供する。
更に、リクエスト生成部207は、アプリケーションロジック部206がサーバ装置105と通信する際のプロトコルやリクエストのデータ形式を意識することなく、またサーバ装置105からのレスポンスのデータ形式を意識することなく処理を遂行できるようにするための抽象化層の役割を持つ。
また、リクエスト生成部207は、本実施の形態に関わる振る舞いをアプリケーションロジック部206と独立にするための抽象化層の役割も併せ持つ。
呼び出されたAPIに対応する処理内容と提供されたパラメータを元にサーバ装置105が解釈可能なリクエストを生成したリクエスト生成部207は、代表クライアント判定部208に生成したリクエストを出力する。
代表クライアントロールが割り当てられているクライアント装置を、代表クライアント装置又は単に代表クライアントという。
なお、上記「リクエストを処理する」における「処理」には、リクエストに対するレスポンスがキャッシュされているか否かを判定する処理、レスポンスがキャッシュされていない場合に、リクエストをサーバ装置105に送信する処理、サーバ装置105からレスポンスを受信する処理、受信したレスポンスをリクエスト発行元に返信する処理、受信したレスポンスをキャッシュする処理が含まれる。
代表クライアント判定部208は、前述したように、自装置のリクエスト生成部207により生成されたリクエストを取得する場合もあるし、他のクライアント装置のリクエスト生成部207により生成されたリクエストを取得する場合もある。
自装置のリクエスト生成部207により生成されたリクエストであって代表クライアント判定部208が取得したリクエスト、他のクライアント装置のリクエスト生成部207により生成されたリクエストであって代表クライアント判定部208が取得したリクエストの両者を、以下では取得リクエストという。
代表クライアント判定部208は、複数のクライアント装置の間で共有している分散ハッシュテーブルを用いて、取得リクエストについての代表クライアントロールが自装置(クライアント装置101)に割り当てられているか否かを判定する。
代表クライアント判定部208は、取得リクエストについて、代表クライアントロールが自装置(クライアント装置101)に割り当てられている場合は、取得リクエストを代表クライアント処理部210に出力する。
一方、取得リクエストについて、代表クライアントロールが自装置(クライアント装置101)に割り当てられていない場合は、代表クライアント判定部208は、取得リクエストを他クライアント通信部209に出力する。
また、取得リクエストが他のクライアント装置で生成されたリクエストであり、取得リクエストについての代表クライアントロールが自装置(クライアント装置101)に割り当てられており、キャッシュ領域に取得リクエストに対応するレスポンスがキャッシュされている場合に、他クライアント通信部209は、受信データ管理部211にキャッシュされているレスポンスを取得リクエストの生成元のクライアント装置に送信する。
他クライアント通信部209は、通信インタフェース114を用いて他クライアント装置と通信を行うためのAPI(Application Programming Interface)を提供している。
例えば、本実施の形態に係るシステムがWebシステムとして構築されており、クライアント装置101がWebブラウザ上に実装されている場合には、WebRTCなどのAPIを提供する事となる。
他クライアント通信部209は、何らかのデータ送信要求がAPI経由で通知された場合には、その要求に従い送信先となるクライアント装置にデータを送信する。
また、他のクライアント装置から何らかのデータが送信されてきた場合には、他のクライアント装置からデータが送信されてきた旨をイベントなどの形式でクライアント装置101内に通知し、そのイベントを監視しているモジュールがその受信データを処理する事となる。
具体的には、代表クライアント処理部210は、取得リクエストがリクエスト生成部207で生成されたリクエストであり、取得リクエストについての代表クライアントロール(クライアント装置101)が自装置に割り当てられており、受信データ管理部211に取得リクエストに対応するサーバ装置105からのレスポンスであって有効期限内のレスポンスがキャッシュされている場合に、受信データ管理部211にキャッシュされているレスポンスを代表クライアント判定部208を介してリクエスト生成部207に出力する。
また、取得リクエストが他のクライアント装置のリクエスト生成部207で生成されたリクエストであり、取得リクエストについての代表クライアントロール(クライアント装置101)が自装置に割り当てられており、受信データ管理部211に取得リクエストに対応するサーバ装置105からのレスポンスがキャッシュされている場合に、受信データ管理部211にキャッシュされているレスポンスを他クライアント通信部209に出力する。
受信データ管理部211は、代表クライアント処理部210がサーバ装置105より取得したレスポンスを対応するリクエストと対応付けしてキャッシュ領域に保存する。
また、受信データ管理部211は、あるリクエストをキーとして対応するレスポンスを取得することができる。
なお、本実施の形態では、キャッシュ領域はクライアント装置101に内蔵されているが、キャッシュ領域は、クライアント装置101(より厳密には、代表クライアント処理部210)がアクセスできればよく、クライアント装置101に内蔵されていなくてもよい。
なお、以下では、レスポンスが受信データ管理部211にキャッシュされている旨の表現も用いるが、これは受信データ管理部211が管理するキャッシュ領域にレスポンスがキャッシュされているという意味である。
サーバ通信部212は、通信インタフェース114を用いてサーバ装置105と通信を行うためのAPIを提供している。
例えば、本実施の形態に係るシステムがWebシステムとして構築されており、クライアント装置101がWebブラウザ上に実装されている場合には、XMLHttpRequestオブジェクトやWebSocket APIなどがサーバ通信部212に相当する。
なおサーバ装置、クライアント装置間の通信プロトコルをHTTPとする場合にはXMLHttpRequestオブジェクトを用いる事になるが、WebSocket APIを用いたとしてもHTTPと同等の機能を実現できるため、実質的にどちらを用いたとしても、両方を併用したとしても、違いはない。
次に、本実施の形態に係るクライアント装置におけるデータ処理方法の概要を説明する。
以下では、クライアント装置101がリクエスト生成元である例を用いて説明を進める。
そして、リクエスト生成部207は生成したリクエストを代表クライアント判定部208に出力する。
この処理102は、代表クライアント判定ステップに相当する。
この処理103は、代表クライアント処理ステップに相当する。
この処理105は、サーバ通信ステップに相当する。
その後、サーバ通信部212はサーバ装置105からのレスポンスを代表クライアント処理部210及び代表クライアント判定部208を経由してリクエスト生成部207に返し、リクエスト生成部207がアプリケーションロジック部206にレスポンスを返し、リクエスト生成部207が当該レスポンスを用いた処理を行う(処理104)。
この処理107は、他クライアント通信ステップに相当する。
その後、他クライアント通信部209は、受信したレスポンスを代表クライアント処理部210に出力する。
処理109でNOとなるのは、リクエスト生成部207で生成されたリクエストを他のクライアント装置(例えば、クライアント装置102)に送信するとともに、他のクライアント装置(例えば、クライアント装置103)で生成されたリクエストを他のクライアント装置(クライアント装置102)に送信し、他のクライアント装置(クライアント装置102)から他のクライアント装置(クライアント装置103)で生成されたリクエストに対するレスポンスを受信した場合である。
ここでは、クライアント装置102がクライアント装置101で生成されたリクエストを受信した例を用いて、説明を進める。
他クライアント通信部209は、受信したリクエストを代表クライアント判定部208に出力する。
その後、サーバ通信部212はサーバ装置105からのレスポンスを代表クライアント処理部210及び代表クライアント判定部208を経由して他クライアント通信部209に返し、他クライアント通信部209が当該レスポンスを他のクライアント装置(クライアント装置101)に返信する(処理204)。
その後、他クライアント通信部209は当該レスポンスを他のクライアント装置(クライアント装置101)に返信する(処理204)。
まず、APIの呼び出し後にリクエスト生成部207が行う処理を、図7を用いて説明する。
図6はAPI呼出し時のコード上の記述に対応する、生成されるリクエストの一例を示した対応表である。
ここでは、アプリケーションロジック部206が提供すべきサービスはプラント監視制御を想定し、プラントの監視時間間隔を取得するAPI、監視時間間隔を変更するAPI、ディスプレイに表示すべき画面の定義データを取得するAPIがあるとし、それぞれのAPI名は「getMonitorInterval」、「setMonitorInterval」、「getPageContent」としている。
また、サーバ装置105とクライアント装置はHTTPで通信すると仮定している。
監視時間間隔を取得する場合、アプリケーションロジック部206は引数なしで「getMonitorInterval」を呼び出す。
呼び出されたリクエスト生成部207はデータ取得を意味するメソッドGETと時間間隔を一意に特定するURIである「http://xxx/api/monitor_interval/ 」で構成されるHTTPリクエストを生成する。
また、監視時間間隔を変更する場合、アプリケーションロジック部206は引数で設定した時間間隔を与えて「setMonitorInterval」を呼び出す。
呼び出されたリクエスト生成部207は、データ送信を意味するメソッドPOSTと時間間隔を一意に特定するURIである「http://xxx/api/monitor_interval/ 」に対してクエリーとして引数で指定された値を加えたURLを生成し、それらで構成されるHTTPリクエストを生成する。
加えて、画面の定義データを取得する場合、アプリケーションロジック部206は引数で画面名を与えて「getPagetContent」を呼び出す。
呼び出されたリクエスト生成部207は、データ取得を意味するメソッドGETと要求された画面の定義データを一意に特定するURIである「http://xxx/html/Monitor.html」で構成されるHTTPリクエストを生成する。
この例では、画面定義データをHTML(HyperText Markup Language)で記述されているファイルであると仮定しており、「http://xxx/html/」と「.html」の間に引数で受けた画面名を挿入してURIを構成している。
レスポンスが代表クライアント判定部208から返信されると、リクエスト生成部207は、処理404で、返信されたレスポンスをアプリケーションロジック部206が解釈可能な形式に変換する。
そして、処理405で、リクエスト生成部207は、その変換結果をアプリケーションロジック部206に返信し処理を完了する。
分散ハッシュテーブルは分散管理されている以外はハッシュテーブルと機能面では同等であり、ある値をハッシュ関数を用いてある空間の点に射影し、その点をIDとして値に関連付けを行う。
この関連付けを行う事によってIDから値を検索する事が可能となる。
ハッシュ関数への入力値は異なる尺度の値でも構わず、それぞれの尺度の値同士の関連性を作り出すためにも用いる事が出来る。
そのため、分散ファイルシステムでどのファイルをどのノードで管理するかを決定するために分散ハッシュテーブルを用いてファイルとノードの関連性を作り出す事にも用いられる事がある。
本実施の形態では、リクエストとクライアント装置の通信時の識別情報となるネットワークIDをハッシュ関数の入力として扱い、各リクエストのIDと各クライアント装置のIDの関係に応じて、どのリクエストに対して、どのクライアント装置がサーバに発行するクライアント装置である代表クライアント装置になるか(どのクライアント装置に代表クライアントロールが割り当てられているか)を分散ハッシュテーブルを用いて決定する。
リクエストのIDの具体例としてURIが考えられる。
また、クライアント装置のネットワークIDの具体例として、そのクライアント装置のIP(Internet Protocol)アドレスやMAC(Media Access Control)アドレスが考えられる。
分散ハッシュテーブルはハッシュ関数を選択する事によって、代表クライアントロールを確率的に一様に各クライアント装置に振り分ける事が理論上可能となるため、ある特定のクライアント装置に多くの代表クライアントロールを割り当てる様なクライアント装置間の処理負荷の偏りを回避可能である。
つまり、そのクライアント装置に、そのリクエストについて代表クライアントロールが割り当てられているかを判定する。
そのクライアント装置自身が代表クライアント装置である場合には処理503、そのクライアント装置ではない他のクライアント装置が代表クライアント装置である場合には処理505に処理を分岐する。
その後、レスポンスが返信された場合には処理507に遷移する。
この時、リクエストに加えて、クライアント装置自身の分散ハッシュテーブルに従って算出されたIDもしくはクライアント装置自身のネットワークIDなど、リクエストに対応するレスポンスを最終的にどのクライアント装置に返信すればよいかを判断できる情報を付加して転送する。
代表クライアント装置からのレスポンスの返信があった場合には処理507に遷移する。
その結果、クライアント装置自身である場合には処理508に遷移し、サーバ装置105、もしくは代表クライアントからのレスポンスをリクエスト生成部207に返信する。
逆に、その結果がクライアント装置自身でない場合には、代表クライアント判定部208は、処理509で、リクエストの発行元のクライアント装置に向け分散ハッシュテーブルに従い、他のクライアント装置にレスポンスを転送する。
例えば、図8の処理を行っているクライアント装置がクライアント装置101であり、代表クライアント装置がクライアント装置103であり、リクエスト発行元のクライアント装置がクライアント装置104である場合は、クライアント装置101の代表クライアント判定部208は、クライアント装置102にレスポンスを転送する。
図9はリクエストの転送先となるクライアント装置の代表クライアント判定部208の処理フローである。
リクエストの転送を受けた代表クライアント判定部208は、処理601で、分散ハッシュテーブルを用い、そのリクエストのIDを算出する。
そのクライアント装置自身が代表クライアント装置である場合には処理603、そのクライアント装置ではない他のクライアント装置が代表クライアント装置である場合には処理605に処理を分岐する。
ただし、この時にリクエスト発行元のクライアント装置のネットワークIDが既知である場合には、分散ハッシュテーブルに従うことなく、直接リクエスト発行元のクライアント装置にレスポンスを返信しても構わない。
処理605でリクエストを他のクライアント装置に転送した際の、リクエストの転送先となるクライアント装置の処理は図9で説明した通りの処理が行われ、システム内でリクエストに対応する代表クライアント装置に到達するまで、クライアント装置を渡り歩く形で、再帰的に処理が繰り返される。
リクエストが安全であるとは、そのリクエストをサーバ装置105が処理する事によってサーバ装置105の内部に変更が発生しない事を意味する。
例えば、HTTPではGETメソッドを用いたリクエストは指定したリソースの取得を行うメソッドであり、安全なリクエストであると言える。
一方で、POSTやPUTと言ったメソッドを用いたリクエストはサーバ装置105の内部に変更が発生する可能性があるため、安全でないリクエストとなる。
リクエストが安全である場合には処理702へ遷移し、安全でない場合には処理703に遷移する。
そこで、処理702では、代表クライアント処理部210は、現在処理中のリクエストに対応するレスポンスが受信データ管理部211に保存されているかを判定する。
対応するレスポンスが受信データ管理部211に保存されている場合には処理706へ遷移し、保存されていない場合には処理703に遷移する。
しかし、そのレスポンスを再利用して問題ないかの判定が行われていない状態である。そこで、レスポンスの有効期限が切れているか否かの判定を処理706で行う。
有効期限はHTTPであればレスポンスヘッダの中からExpiresレスポンスヘッダもしくはCache−Controlレスポンスヘッダのmax−ageを用いて判定する事が可能である。
Expiresレスポンスヘッダにはそのレスポンスの有効期限が値として記述されている。
その有効期限が現在日時と比較して過去であればそのレスポンスの有効期限は切れていると判定可能である。
Cache−Controlレスポンスヘッダのmax−ageにはそのレスポンスをキャッシュして構わない時間が値として記述されている。
レスポンスの受信時刻にmax−ageの時間を加算した結果と現在日時を比較し、過去であればそのレスポンスの有効期限は切れていると判定可能である。
なお、有効期限が切れていると判定された場合には、代表クライアント処理部210は、受信データ管理部211に対してリクエストに対応するエントリーを削除させても構わない。
なお、データの有効期限が存在しない場合、全てのレスポンスは変更されない場合、もしくは全てのレスポンスは常に更新されており、流用する事が出来ない様な場合には、処理706の処理はなくても構わない。
その場合、例えば全てのレスポンスが変更されない場合には、処理706への処理遷移は処理707への処理遷移に置き換えられる。
また、全てのレスポンスが常に更新されている場合には、処理706への処理遷移は処理703への処理遷移に置き換えられる。
この処理では、代表クライアント処理部210は、現在処理中のリクエストに対応するレスポンスを受信データ管理部211から取得する。
取得完了後に処理708に遷移する。
この処理では現在処理中のリクエストをサーバ通信部212を介して、サーバ装置105に発行する処理を行う。
リクエスト発行完了後、処理704に遷移する。
レスポンスがサーバ装置105から返信された事をトリガーとして処理705に遷移する。
受信データ管理部211ではリクエストとそのレスポンスを対応づけて保存しているため、処理702でリクエストをキーとしてレスポンスを存在するか確認する事が可能となっている。
保存完了後、処理708に遷移する。
判定の結果、リクエストの発行元がクライアント装置自身である場合には処理709に遷移し、代表クライアント判定部208にレスポンスを返信する。
リクエストの発行元がクライアント装置自身ではない場合には処理710に遷移し、代表クライアント処理部210は、リクエスト発行元のクライアント装置に向け分散ハッシュテーブルに従い、他クライアント通信部209を介して、他クライアント装置にレスポンスを転送する。
この例では、HTTPに従ったリクエストとレスポンスを想定している。
リクエストではHTTPのリクエストのスタートライン、ヘッダ、ボディをリクエストとして保存し、対応するレスポンスに関しても同様にHTTPのレスポンスのスタートライン、ヘッダ、ボディを保存する。
この例では、同じ行のリクエストとレスポンスが対応づけられているとして表現している。
つまり、あるリクエストをキーとしてレスポンスを検索する場合、まずリクエスト列にキーとなるリクエストに合致するリクエストが存在するか検索し、あった場合にはそのリクエストと同じ行のレスポンスが検索すべきレスポンスとなる。
また、キーとなるリクエストとリクエスト列のリクエストを比較する場合にスタートライン、ヘッダ、ボディ全てが完全一致した場合、そのリクエスト同士は同一であるとする。
しかし、簡略化のためスタートライン中のURIのみの比較で行う事も可能である。
以上までで説明した本実施の形態におけるクライアント処理を行う事によって、複数のクライアント装置で同一のリクエストをサーバ装置105に発行する必要がある状況において、複数のクライアント装置の全てが同一のリクエストを独立に発行することなく、そのリクエストに対応する代表クライアント装置を一意に決定し、その代表クライアント装置のみがサーバ装置105に対してリクエストを発行する事が可能となる。
この時、リクエスト発行を代表クライアント装置のみに決定する処理にサーバ装置105が関与していない事が重要であり、代表クライアント装置を決めるための処理負荷がサーバ装置105の新たな負荷として発生しない事が一つの効果である。
参加したタイミングによって代表クライアント装置が偏る不公平が発生する一つの理由として、リクエストを発行する前にクライアント装置間でリクエストに対応するレスポンスを保持しているクライアント装置の検索を行い、保持するクライアント装置がいない場合には、リクエストを発行するクライアント装置が代表クライアント装置となる方式が、考えられる。
この方式では、システムに最初に参加したクライアント装置の参加時刻とその次に参加したクライアント装置の参加時刻との間の時間幅が大きい場合、最初に参加したクライアント装置が多くのリクエストをサーバ装置105に出す事になり、必然的に最初に参加したクライアント装置が多くのリクエストの代表クライアント装置に決定されやすくなる。
しかし、分散ハッシュテーブルを用いた本実施の形態による方式では、同様の状況であっても、2番目に参加したクライアント装置が発生すると、分散ハッシュテーブルの機能を利用して、代表クライアント装置の再配分が行われる事になる。
そのため、最初に参加したクライアント装置に多くのリクエストに対応する代表クライアント装置が決定していたとしても、2番目のクライアント装置が参加する事によって、代表クライアント装置の受け持ち数を平準化させる事が可能となる。
このような効果を得るために用いられる具体的な分散ハッシュテーブルのアルゴリズムの一つとしてChordなどがあげられる。
Chordはネットワークに参加するクライアント装置が動的に増減しても、分散ハッシュテーブルの維持・管理が可能である。
以下では、実施の形態1に示したシステム構成において分散ハッシュテーブルとしてChordを用いた場合の具体例を説明する。
本実施の形態では、通信システム1000に新たなクライアント装置が参入する際の代表クライアントロールの引き継ぎ動作と、通信システム1000からクライアント装置が離脱する際の代表クライアントロールの引き継ぎ動作を説明する。
本実施の形態に係るサーバ装置105の構成例は、図2に示す通りであり、また、本実施の形態に係る各クライアント装置の構成例は、図3に示す通りである。
本実施の形態では、主に実施の形態1との差異を説明する。
本実施の形態で説明していない事項は、実施の形態1と同様である。
新たなクライアント装置に割り当てられる代表クライアントロールが対象とするリクエストに対応するレスポンスが受信データ管理部211にキャッシュされている場合に、他クライアント通信部209は、受信データ管理部211にキャッシュされているレスポンスを、新たなクライアント装置に送信する。
新たなクライアント装置は、送信されたレスポンスを記憶する。
通信システムから離脱する離脱クライアント装置に割り当てられている代表クライアントロールが対象とするリクエストに対応するレスポンスが離脱クライアント装置にキャッシュされている場合に、他クライアント通信部209は、キャッシュされているレスポンスを離脱クライアント装置から受信する。
そして、残留するクライアント装置では、離脱クライアント装置から受信したレスポンスを受信データ管理部211で保存する。
次に、本実施の形態に係るクライアント装置の動作例を図12及び図13を参照して説明する。
Chordでは、ノードとキーが同一の仮想空間上に配置される。
ノードとは実施の形態1のクライアント装置に対応し、キーとは実施の形態1のリクエストに対応する。
つまり、図12のノード902、903、904、905は、通信システム1000に参加しているクライアント装置101、102、103、104のいずれかに相当する。
ノードとキーの仮想空間上の配置の決定はハッシュ関数を用い、それぞれにIDを割り振り、そのIDの位置に配置する。
図12は、複数のノードとキーが仮想空間上に配置されている一例を図示している。
仮想空間901上にノード902、903、904、905とキー906、907、908、909、910、911、912がハッシュ関数によってそれぞれ求められたIDの位置に配置されている。
Chordではキーおよびそのキーに対応するデータの管理はノードが行う。
どのノードがどのキーおよびそのキーに対応するデータを管理するかの決定方法は以下の通りである。
あるノードとそのノードが仮想空間上で右回りで隣接するノードとの間に存在するキーおよびそのキーに対応するデータをそのノードが管理する。
例えば、ノード903は右回りで隣接するノード902の間にはキー906、907が存在する。
よって、ノード903はキー906、907およびそれらに対応するデータの管理を行う。
同様に、ノード904はキー908、909、910およびそれらに対応するデータの管理を行う。
前述の通り、ノードはクライアント装置、キーはリクエストに対応する。
Chordでは、キーおよびキーに対応するデータの管理をノードで行うが、そのキーに対応するデータとして、本実施の形態では少なくとも以下のものが対応する。
・リクエストによって取得されるレスポンス
・リクエストの発行元のクライアント装置のリスト
よってノード904に対応するクライアント装置はキー908、909、910に対応するリクエストの代表クライアント装置である事を意味する。
そのため、ノード904以外のノードに対応するクライアント装置が例えばキー908に対応するリクエストのレスポンスを取得するためには、そのリクエストをノード904に対応するクライアント装置に転送し、ノード904に対応するクライアント装置からレスポンスを入手する。
この場合は、ノード1001に対応するクライアント装置はキー906に対応するリクエストの代表クライアント装置とならなければならない。
Chordでは新規参加ノードが仮想空間に参加した場合、新規参加ノードの前後のノードと通信を行い、状態更新を行う。
その際に、新規参加ノードに対応するクライアント装置は、代表クライアント装置を担当すべきリクエストおよびその関連データ(レスポンス、リクエスト発行元のクライアント装置のリスト)を参加前の代表クライアント装置から受け取る。
ノード1001に対応するクライアント装置の参加前の代表クライアント装置は、ノード903に対応するクライアント装置である。
このため、ノード1001に対応するクライアント装置は、ノード903に対応するクライアント装置からキー906に対応するリクエストおよび関連データを引継ぐ必要がある。
この時、引継ぎ元のクライアント装置からリクエストおよび関連データを引き継ぎ先のクライアント装置に引継ぐ際、引継ぎ元のクライアント装置がレスポンスをサーバ装置105から受信中の場合には、受信完了を待ってから引継ぎ処理を開始する。
受信完了を待つ事によって、不完全なレスポンスが引継がれる事を回避できる。
なお、この離脱が完了すると図12の状態に戻る事を意味する。
Chordを用いた場合には、代表クライアントを引継ぐクライアント装置はノード903に対応するクライアント装置となる。
そこで、ノード1001に対応するクライアントは、離脱する前に、自身が代表クライアント装置を担当するリクエストおよび関連データをノード903に対応するクライアント装置に引継ぐ。
この時、新規参加と同様にサーバ装置105からレスポンスを受信している場合は、レスポンスの受信完了を待ってからノード903に対応するクライアント装置に引継ぐ。
本実施の形態によれば、システムに対するクライアント装置の参加、離脱が発生した場合であっても、適切な代表クライアント装置の引継ぎが可能となる。
本実施の形態では、通信システム1000からのクライアント装置の離脱に関する手順を更に説明する。
計画した離脱の場合には実施の形態2に前述した通りの手順にて分散ハッシュテーブルを用いる事で代表クライアントロールの引継ぎが適切に行えるが、計画していない離脱の場合には、代表クライアントロールの引継ぎを前述の手順で行えない。
本実施の形態では、計画していないクライアント装置の離脱に対応する手順を説明する。
本実施の形態に係るサーバ装置105の構成例は、図2に示す通りであり、また、本実施の形態に係る各クライアント装置の構成例は、図3に示す通りである。
本実施の形態では、主に実施の形態1、2との差異を説明する。
本実施の形態で説明していない事項は、実施の形態1、2と同様である。
そして、サーバ通信部212は、代表クライアント処理部210により予備代表クライアント装置の識別子が追加されたリクエストをサーバ装置105に送信する。
サーバ装置105では、通信部213が、リクエスト発行元のクライアント装置にレスポンスを送信できない場合に、予備代表クライアント装置にレスポンスを送信する。
次に、本実施の形態に係る代表クライアント処理部210の動作例を図14を用いて説明する。
図14は、図10で示した代表クライアント処理部210の処理を拡張した処理フロー図であり、図10に対して処理1101、1102が追加されている。
以下では、追加処理に関連する部分のみを説明する。
そのため、処理702でレスポンスが受信データ管理部211に保存されていない事が判明した場合、および処理706で受信データ管理部211に保存される対応するレスポンスの有効期限が切れている事が判明した場合に、処理1101に遷移する。
具体的にはその時点の分散ハッシュテーブルにて、代表クライアント装置が離脱した場合に、その代表クライアント装置が担当する全てのリクエスト及びレスポンスの処理を引継ぐクライアント装置を予備代表クライアント装置として決定する。
分散ハッシュテーブルとしてChordを用いている場合であれば、その代表クライアントの時計回りに隣接するノードに対応するクライアント装置となる。
図15では、予備代表クライアントの情報をHTTP Headerとして結合している。
具体的にはX−Representative−Client−AddressヘッダとX−Requestor−Client−Addresses−Listヘッダである。
X−Representative−Client−Addressヘッダには予備代表クライアントのネットワークIDを値として設定し、X−Requestor−Client−Addresses−Listヘッダにはこのリクエストのリクエスト元のクライアントのネットワークIDのリストを値として設定している。
なお、ヘッダ名は一つの例であり、ヘッダ名が異なる場合であっても、本質的な違いはない。
図16では、予備代表クライアントの情報をHTTP Request Bodyとして結合している。
具体的には予備代表クライアントの情報をJSON形式で表現しており、Representativeプロパティに予備代表クライアントのネットワークIDを値として設定し、Requestorsプロパティにこのリクエストのリクエスト元のクライアントのネットワークIDのリストを値として設定している。
なお、予備代表クライアントは唯一とする必要はなく、予備代表クライアントも離脱している場合を想定して、その先の予備代表クライアントも含めて複数の予備代表クライアントをサーバ装置105に送信するとしても構わない。
その場合には、予備代表クライアントのネットワークIDはリストとしてサーバ装置105に送信される事になる。
なお、説明を簡単化するため本サーバの処理フローはシングルスレッドで動作する事を前提としているが、マルチスレッドでの動作で動作するサーバでも構わない。
クライアント装置からリクエストが送信されてくると処理1402に遷移する。
その処理内容についてはリクエストに依存するため、ここでは言及しない。
逆に正常に完了しなかった場合は、処理1408に遷移する。
取得に成功した場合には処理1410に遷移し、失敗した場合には、これ以上予備代表クライアントの情報はないため、今回の処理はエラー終了として結果を破棄し処理1401に遷移する。
ここでの送信ではHTTPの様にクライアントからのリクエストを起点とするプロトコルは用いる事ができないため、例えばWebSocketやServer−Sent Eventsなどのサーバを起点とする事が可能なプロトコルを用いる。
逆に正常に完了しなかった場合は、処理1408に遷移し、残る未処理である予備代表クライアントの情報を用いた送信処理を繰り返す。
本実施の形態によれば、代表クライアント装置に計画外の離脱が発生した場合であっても、予備代表クライアント装置により、リクエスト発行元に確実にレスポンスを返すことができる。
クライアント・サーバシステムにおいて、サーバ装置はクライアント装置の要求に必ず即時にレスポンスを返信するとは限らない。
例えば、要求に対応するサーバ処理に非常に時間がかかる場合、サーバ装置の都合に応じてレスポンスの返信タイミングが遅延する場合が想定され、その場合には時間をおいてクライアント装置にレスポンスが返信される事になる。
複数のクライアント装置から同一のリクエストが発生している状況でサーバ装置からのレスポンスが遅延した場合に、マルチキャスト配信ができないシステムでは、そのリクエストの代表クライアント装置はレスポンスの受信後に、全てのリクエスト発行元のクライアント装置に順次レスポンスを返信しなければならない。
このような場合は、代表クライアント装置の返信負荷が一時期に集中してしまう。
また、最初にレスポンスが返信されるリクエスト発行元のクライアント装置と最後にレスポンスが返信されるリクエスト発行元のクライアント装置では、レスポンスを受信するタイミングに差異が生じる。
リクエスト発行元のクライアント装置が多いほど、この差異は大きくなる。
本実施の形態は、これらの事情に鑑みたものである。
本実施の形態に係るサーバ装置105の構成例は、図2に示す通りであり、また、本実施の形態に係る各クライアント装置の構成例は、図3に示す通りである。
本実施の形態では、主に実施の形態1との差異を説明する。
本実施の形態で説明していない事項は、実施の形態1と同様である。
より具体的には、代表クライアント処理部210は、取得リクエストのリクエスト生成元のクライアント装置の個数が閾値を超える場合に、代表クライアントクローン装置を指定する。
他クライアント通信部209は、代表クライアントクローン装置に指定されたクライアント装置に対して、代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信する。
また、他クライアント通信部209は、取得リクエストに対応するレスポンスを、代表クライアントクローン装置に送信し、代表クライアントクローン装置から、通知メッセージで通知した送信先のクライアント装置にレスポンスを送信させる。
他クライアント通信部209は、代表クライアントクローン装置がレスポンスを送信するクライアント装置には、レスポンスを送信しない。
通知メッセージでは、前述のように、代表クライアントクローン装置に指定された旨が通知されるとともに、レスポンスの送信先のクライアント装置が通知される。
他クライアント通信部209は、通知メッセージを受信した後に、他のクライアント装置からレスポンスを受信した場合に、受信したレスポンスを、通知メッセージで通知された送信先のクライアント装置に送信する。
そして、他クライアント通信部209が、新たな代表クライアントクローン装置に指定されたクライアント装置に対して、代表クライアントクローン装置に指定された旨を通知するとともに、2以上のクライアント装置のうち新たな代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信する。
そして、他クライアント通信部209は、他のクライアント装置からレスポンスを受信した場合に、受信したレスポンスを、新たな代表クライアントクローン装置に送信し、新たな代表クライアントクローン装置から、新たな代表クライアントクローン装置への通知メッセージで通知した送信先のクライアント装置にレスポンスを送信させる。
他クライアント通信部209は、新たな代表クライアントクローン装置がレスポンスを送信するクライアント装置には、レスポンスを送信しない。
図22〜図28を用いて、本実施の形態に係るクライアント装置の動作の概略を説明する。
図22〜図28において、あるリクエストに対する代表クライアント装置をクライアント0とし、代表クライアント装置を丸図形で表現する。
また、図22〜図28では、代表クライアント装置に対するリクエストの発行元となるクライアント装置は正方形で表現する。
また、図22〜図28では、代表クライアントクローン装置となるクライアント装置は六角形で表現する。
また、図22〜図28において、番号0〜7は、クライアント装置のID番号である。
また、代表クライアントおよび代表クライアントクローンがレスポンスを返信する担当となるクライアントの図形に対しては矢印が伸びる事で表現する。
例えば、図22は、代表クライアント0はリクエスト発行元クライアント1にレスポンスを返信する担当である事を意味する。
つまり、同一のリクエストが3つのクライアントで発行された場合には、代表クライアント装置の代表クライアント処理部210は、当該3つのクライアントの中から代表クライアントクローンを指定する。
同様に、代表クライアントクローンの代表クライアント処理部210は、代表クライアントから、3つのクライアントへのレスポンスの送信が要求された場合に、当該3つのクライアントの中から新たな代表クライアントクローンを指定する。
次に、クライアント2がリクエストを発行した際にも同様に代表クライアント0がリクエストの処理を担当し、図23の通りとなる。
次に、クライアント3がリクエストを発行した際は、閾値N=3に達するため、代表クライアント0の代表クライアント処理部210は、例えばクライアント1をクライアント3に対する代表クライアントクローンに指定する。
そして、代表クライアント0の他クライアント通信部209が、クライアント1に通知メッセージ(以下、代表クライアントクローン要求という)を送信する。
代表クライアントクローン要求では、クライアント1が代表クライアントクローンに指定された旨と、クライアント3にレスポンスを送信する旨が通知される。
この結果、図24の通り、クライアント1がクライアント3を担当する代表クライアントクローンとなる。
そして、代表クライアント0の他クライアント通信部209が、クライアント2に代表クライアントクローン要求を送信する。
この代表クライアントクローン要求では、クライアント2が代表クライアントクローンに指定された旨と、クライアント4にレスポンスを送信する旨が通知される。
この結果、図25の通り、クライアント2がクライアント4を担当する代表クライアントクローンとなる。
そして、代表クライアント0の他クライアント通信部209が、クライアント1に代表クライアントクローン要求を送信する。
この代表クライアントクローン要求では、クライアント1が代表クライアントクローンに指定された旨と、クライアント5にレスポンスを送信する旨が通知される。
この結果、図26の通り、クライアント1がクライアント3とクライアント5を担当する代表クライアントクローンとなる。
そして、代表クライアント0の他クライアント通信部209が、クライアント2に代表クライアントクローン要求を送信する。
この代表クライアントクローン要求では、クライアント2が代表クライアントクローンに指定された旨と、クライアント6にレスポンスを送信する旨が通知される。
この結果、図27の通り、クライアント2がクライアント4とクライアント6を担当する代表クライアントクローンとなる。
そして、代表クライアント0の他クライアント通信部209が、クライアント1に代表クライアントクローン要求を送信する。
しかし、代表クライアントクローン1でも閾値N=3に達する。
このため、代表クライアントクローン1の代表クライアント処理部210は、例えば、クライアント3をクライアント7に対する代表クライアントクローンとして新たに指定する。
そして、代表クライアントクローン1の他クライアント通信部209が、クライアント3に代表クライアントクローン要求を送信する。
この代表クライアントクローン要求では、クライアント3が代表クライアントクローンに指定された旨と、クライアント7にレスポンスを送信する旨が通知される。
この結果、図27の通り、クライアント3がクライアント7を担当する新たな代表クライアントクローンとなる。
図18、図19、図20は、図10で示した代表クライアント処理部210の処理フローを拡張した処理フローであり、図10に対して処理1501〜1509の処理が追加されている。
以下では、追加処理に関連する部分のみを説明する。
図21にリクエストとリクエスト発行元のリスト管理の一例を示す。
リクエスト発行元の情報には、少なくともリクエスト発行元のネットワークIDなどの対応するレスポンスを各リクエスト発行元に通信にて転送する事が可能な情報が含まれている。
この例では、「GET http://xxx/api/monitor_interval/ 」リクエストに対してリクエスト発行元は「192.168.0.1」、「192.168.0.2」、「192.168.0.3」の合計3個が登録されている。
また、「GET http://xxx/html/Monitor.html」リクエストに対してリクエスト発行元は「192.168.0.5」、「192.168.0.2」、「192.168.0.6」、「192.168.0.8」の合計4個が登録されている。
例えば確認はリクエストとリクエスト発行元のリストで現在処理中のリストが存在する場合には、他のクライアントが存在すると確認可能である。
他のクライアントが存在しない場合には処理701に遷移し、存在する場合には処理1502に遷移する。
同様に、処理702で保存されていない場合の遷移先が処理703ではなく処理1507に変更されている。
なお、処理701で行っているリクエストが安全でない場合の処理については、リクエストの発行元となるクライアントがリクエストを処理する際に判定し、安全でない場合には、本処理を実施せず、リクエスト発行元のクライアントが直接サーバにリクエストを発行するとしても構わない。
その様な挙動にする事によって、リクエストの転送分の通信処理を削減可能である。
登録完了後、処理703に遷移する。
処理1508では、代表クライアント処理部210は、処理中のリクエストに対応するレスポンスの転送先となる未処理のリクエスト発行元クライアントがリクエスト発行元のリスト(図21)に存在するかを判定する。
存在しない場合には処理を完了し、存在する場合には処理1509に遷移し、代表クライアント処理部210は、その未処理リクエスト発行元を取得して、処理708に遷移する。
その後の処理として処理709および処理710の遷移先が終了ではなく、処理1508となり、全ての未処理のリクエスト発行元に対してレスポンスを返信するまで処理を繰り返す。
その判定の結果、N個未満である場合には処理を終了する。
一方で、N個以上存在する場合には処理1504に遷移する。
なお、閾値Nは固定値として与えてもよいし、ネットワークやクライアントの処理負荷状況などを考慮して動的に変更される値として与えてもよいが、(N−1)は単一の代表クライアントがある単一のリクエストに対するレスポンスをそのリクエスト発行元となるクライアントに転送する処理の繰返し最大回数を意味する。
この時に代表クライアントクローンを唯一に決めてもよいし、複数個決めても構わない。
ただし、複数個に決めた場合、処理1505および処理1506はその個数分だけ繰り返される事になる。
エントリーが存在した場合には処理2404、存在しない場合には処理2403に遷移する。
その判定の結果、N個未満である場合には処理2409に遷移する。
一方で、N個以上存在する場合には処理2406に遷移する。
なお、閾値Nは固定値として与えてもよいし、ネットワークやクライアントの処理負荷状況などを考慮して動的に変更される値として与えてもよいが、(N−1)は単一の代表クライアントクローンがある単一のリクエストに対するレスポンスをそのリクエスト発行元となるクライアントに転送する処理の繰返し最大回数を意味する。
この時に代表クライアントクローンを唯一に決めてもよいし、複数個決めても構わない。
ただし、複数個に決めた場合、処理2407および処理2408はその個数分だけ繰り返される事になる。
処理中のリクエストに対応するレスポンスが送信されてきた場合には処理1508に遷移する。
それ以降の処理は図18、図19、図20を用いて説明した処理と同一であるため、説明は省略する。
以上の処理を行う事で、単一リクエストに対して多数のリクエスト発行元が待機状態となった場合に、レスポンスのリクエスト発行元への転送処理を代表クライアントクローンに分散して処理する事が可能となり、単一の代表クライアントの処理負荷が高くなることなく、全てのリクエスト発行元に対して転送し終わるまでの処理時間を短縮する事が可能となる。
図22〜図28に示すように、クライアント1〜クライアント7から同一のリクエストが発生した場合を想定する。
この時、代表クライアントクローンを設定しない場合、代表クライアント0が全てのリクエスト発行元クライアントに対して順次レスポンスを返信するため、返信処理は7回実施される。
また、返信処理時間が一定と仮定し、その時間をTとして表現すると、最後に返信されるクライアントレスポンスは7Tだけの遅延が発生する事になる。
一方で、閾値N=3として代表クライアントクローンを設定した場合は、代表クライアントおよび各代表クライアントクローンのレスポンスの返信処理回数は高々2回である。
つまり、代表クライアント0は、代表クライアントクローン1と代表クライアントクローン2にのみレスポンスを返信すればよい。
代表クライアントクローン1は、代表クライアントクローン3とクライアント5にのみレスポンスを返信すればよい。
代表クライアントクローン2は、クライアント4とクライアント6にのみレスポンスを返信すればよい。
代表クライアントクローン3は、クライアント7にのみレスポンスを返信すればよい。
このように、代表クライアントクローンを設定しない場合と比べると代表クライアントの負荷の偏りがない事が分かる。
また、図28において返信処理を左側の矢印を右側の矢印よりも先に処理するとした場合、最後に返信されるクライアントはクライアント6である。
クライアント0→クライアント1、クライアント0→クライアント2、クライアント2→クライアント4、クライアント2→クライアント6という順序でレスポンスが返信される。
このため、クライアント6での遅延時間は4Tとなり、代表クライアントクローンを設定しない場合と比べると3Tだけ短縮される事が分かる。
一般的にクライアント装置からサーバ装置105に発行するリクエストにはパラメータを付加する事がある。
例えばURIであれば「?」記号の後にパラメータの名前と値の間に「=」記号を挟む形でパラメータを付加する事がある。
例えば、図6に記載のリクエスト例の一つである「POST http://xxx/api/monitor_interval/?val=5」における「val=5」がパラメータであり、名前が「val」のパラメータの値として「5」を指定している。
また、複数のパラメータを付加する場合には、各パラメータ間を「&」記号で区切って連結する事がある。
例えば、「http://xxx/api/monitor_interval/?val=5&target=temperature」の場合には名前が「val」のパラメータの値として「5」を、名前が「target」のパラメータの値として「temperature」を指定している。
これらパラメータを記述する「?」記号の後の文字列をクエリー部と呼ぶ事にする。
クエリー部には、サーバ装置105での検索の対象となる検索条件式が定義される。
例えば、「http://xxx/api/user?height=160|170|180」は、パラメータ「height」の値が「160」もしくは「170」もしくは「180」を指定すると解釈させる事も可能である。
また、例えば「http://xxx/api/user?height_gt=160」はパラメータ「height_gt」の値が「160」と言う意味になるが、パラメータ「height_gt」はパラメータ「height」の値が「height_gt」の値より大きい(gt=Greater Than)事を示すパラメータと解釈させる事で、最終的にパラメータ「height」の値が「160」より大きい値と言う範囲を指定する事も可能となる。
URIのクエリー部は前述の例の様な表現に限定されるものではなく、同じ内容を別の書式にて表現しても構わない。
また、説明を単純化するため、本実施の形態ではURIのクエリー部のみを例として説明するが、URIのクエリー部でパラメータを表現しなくとも、HTTPのPOSTメソッドのリクエストボディ部に同様にパラメータを指定する方法でも構わない。
例えば、
http://xxx/api/user?height_gt=160
http://xxx/api/user?height_gt=170
の2つのURIを例に挙げて考えると、それぞれ別のリクエストとして処理する事になるが、実際には、
http://xxx/api/user?height_gt=160
に関するリクエストのみをサーバに発行し、得られたレスポンスから
http://xxx/api/user?height_gt=170
に適合するレスポンスのみを代表クライアントで抽出可能な場合がある。
具体的にはレスポンスのデータ群それぞれがプロパティ「height」の値を持っている場合などが挙げられるが、それはシステム開発時にレスポンスのデータ構造を決定する時点で明らかとなる。
その場合には、上記2種類のリクエストに対して、サーバ装置105には1種類のリクエストを発行するのみで、2種類のリクエストに対するレスポンスを得る事が可能となる。
本実施の形態に係るサーバ装置105の構成例は、図2に示す通りであり、また、本実施の形態に係る各クライアント装置の構成例は、図3に示す通りである。
本実施の形態では、主に実施の形態1との差異を説明する。
本実施の形態で説明していない事項は、実施の形態1と同様である。
例えば、取得リクエストが前述の「http://xxx/api/user?height_gt=170」である場合に、クエリー部に含まれる検索条件式「height_gt=170」は、より広範な検索結果が得られる「height_gt=160」という検索条件式に変換可能である。
このため、代表クライアント処理部210は、クエリー部の「height_gt=170」という検索条件式を「height_gt=160」という広範検索条件式に変換する。
サーバ通信部212は、代表クライアント処理部210により変換された広範検索条件式が含まれるリクエストをサーバ装置105に送信する。
前述の例では、サーバ通信部212は、「http://xxx/api/user?height_gt=160」をサーバ装置105に送信する。
図31を用いて、本実施の形態におけるリクエスト生成元のクライアント装置の代表クライアント判定部208の処理フローを説明する。
図31は、図8で示した代表クライアント判定部208の処理フローを拡張した処理フローであり、図8に対して処理2501〜2503の処理が追加されている。
追加処理に関連する部分のみを説明する。
判定にはURIに「?」が存在するかどうかを条件として利用可能である。
クエリー部がある場合には処理2502へ遷移し、クエリー部がない場合は、これまでの実施の形態と同様の処理可能であるため処理501に遷移する。
この判定には前述の通り、例えばシステム開発時にクエリーを含まないリクエストに対して論理和構成可能かが決定するため、その可否情報をテーブルとしてデータ化し、そのテーブルに基づいて判定する方法が考えられる。
論理和構成可能である場合には処理2503に遷移し、論理和構成不可能である場合には処理501に遷移する。
ID算出のキーとして少なくともリクエストからクエリー部の情報を除去した結果をキーとして算出する。
ID算出完了後、処理502に遷移する。
それ以降の処理は前述の通りであり説明は省略する。
図32はリクエストの転送先となるクライアントの代表クライアント判定部208の処理フローである。
追加処理に関連する部分のみを説明する。
判定にはURIに「?」が存在するかどうかを条件として利用可能である。
クエリー部がある場合には処理2602へ遷移し、クエリー部がない場合は、これまでの実施の形態と同様の処理が可能であるため処理601に遷移する。
この判定には前述の通り、例えばシステム開発時にクエリーを含まないリクエストに対して論理和構成可能かが決定するため、その可否情報をテーブルとしてデータ化し、そのテーブルに基づいて判定する方法が考えられる。
論理和構成可能である場合には処理2603に遷移し、論理和構成不可能である場合には処理601に遷移する。
ID算出のキーとして少なくともリクエストからクエリー部の情報を除去した結果をキーとして算出する。
ID算出完了後、処理602に遷移する。
それ以降の処理は前述の通りであり説明は省略する。
追加処理に関連する部分のみを説明する。
本処理では、代表クライアント処理部210は、現在処理中のリクエストからクエリー部を比較対象外として対応するレスポンスが受信データ管理部211に保存されているか判定する。
保存されていない場合には、現在処理中のリクエストをそのままサーバ装置に発行する必要があるため処理703に遷移する。
保存されている場合には、処理2702に遷移する。
論理和リクエストの生成完了後、処理2705に遷移する。
本処理では、代表クライアント処理部210は、サーバ装置105から受け取ったレスポンスに対応するリクエストが処理2702で生成した論理和リクエストに基づくものかを判定する。
論理和リクエストに基づかない場合には処理708に遷移し、基づく場合には処理2704に遷移する。
生成処理結果を処理中のリクエストに対応するレスポンスとして処理708に遷移する。
本処理では、処理2702で生成したリクエストに対応するレスポンスが受信データ管理部211に保存済みかどうかを判断する。
レスポンスが受信データ管理部211に保存済みである場合には処理706に遷移し、保存済みでない場合には処理703に遷移する。
図35ではURIが「http://xxx/data.dat」に対してクエリー部に「min=3」という検索条件式が存在するリクエストと「min=4」という検索条件式が存在するリクエストという2つのリクエストを想定している。
ここで、プロパティ「min」は、レスポンスで得られるプロパティ「val」の値がプロパティ「min」の値を下限とする事を意味する。
この意味に従うと2つのリクエストのクエリー部の論理和は「min=3」となり、その論理和リクエストによって得られたレスポンスをレスポンスエントリーに保存している。
処理2704で各リクエストに対応するデータのみで構成されるレスポンスを生成すると、クエリー部が「min=3」のリクエストに対しては論理和リクエストと一致するため、レスポンスエントリーの内容がそのままレスポンスとなる。
一方で、クエリー部が「min=4」のリクエストに対しては論理和リクエストと一致せず、各データのプロパティ「val」の値が下限となる4以上となるもののみを抽出する処理を処理2704で行う事となる。
その結果、得られるレスポンスは図36の通りとなる。
以上の処理を行う事によって、リクエストにおけるクエリー部のみが異なる複数のリクエストに関して、クエリー部を論理和構成可能な場合には、それら複数のリクエストを一つの論理和リクエストとしてまとめ、それぞれのリクエストをサーバに発行するのではなく、論理和リクエストのみをサーバに発行するだけで済ませる事が可能となり、サーバ負荷の軽減が達成される。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
Claims (16)
- 複数のクライアント装置が含まれる通信システムに含まれるクライアント装置であって、
サーバ装置へのリクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられている場合に、自装置が前記通信システムから離脱した後に自装置に代わって動作する予備代表クライアント装置を他のクライアント装置の中から選択し、前記サーバ装置に送信するリクエストに前記予備代表クライアント装置の識別子を追加する代表クライアント処理部と、
前記代表クライアント処理部により前記予備代表クライアント装置の識別子が追加されたリクエストを前記サーバ装置に送信するサーバ通信部とを有するクライアント装置。 - 複数のクライアント装置が含まれる通信システムに含まれるクライアント装置であって、
2以上のクライアント装置で生成されたサーバ装置への同一のリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定部と、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、リクエスト生成元の2以上のクライアント装置のうちのいずれかのクライアント装置を、自装置と協働する代表クライアントクローン装置に指定する代表クライアント処理部と、
前記代表クライアントクローン装置に指定されたクライアント装置に対して、前記代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち前記代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信し、前記取得リクエストに対応するレスポンスを、前記代表クライアントクローン装置に送信し、前記代表クライアントクローン装置から、前記通知メッセージで通知した送信先のクライアント装置に前記レスポンスを送信させる他クライアント通信部とを有するクライアント装置。 - 前記他クライアント通信部は、
前記代表クライアントクローン装置がレスポンスを送信するクライアント装置には、レスポンスを送信しない請求項2に記載のクライアント装置。 - 前記代表クライアント処理部は、
前記取得リクエストのリクエスト生成元のクライアント装置の個数が閾値を超える場合に、前記代表クライアントクローン装置を指定する請求項2に記載のクライアント装置。 - 前記他クライアント通信部は、
他のクライアント装置から、前記代表クライアントクローン装置に指定された旨を通知するとともに、レスポンスの送信先のクライアント装置を通知する通知メッセージを受信する場合があり、
前記通知メッセージを受信した後に、前記他のクライアント装置からレスポンスを受信した場合に、受信したレスポンスを、前記通知メッセージで通知された送信先のクライアント装置に送信する請求項2に記載のクライアント装置。 - 前記代表クライアント処理部は、
前記通知メッセージで通知された送信先のクライアント装置の個数が2以上である場合に、2以上のクライアント装置のうちのいずれかのクライアント装置を、新たな代表クライアントクローン装置に指定し、
前記他クライアント通信部は、
前記新たな代表クライアントクローン装置に指定されたクライアント装置に対して、代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち前記新たな代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信し、
前記他のクライアント装置からレスポンスを受信した場合に、受信したレスポンスを、前記新たな代表クライアントクローン装置に送信し、前記新たな代表クライアントクローン装置から、前記新たな代表クライアントクローン装置への通知メッセージで通知した送信先のクライアント装置に前記レスポンスを送信させる請求項5に記載のクライアント装置。 - 複数のクライアント装置が含まれる通信システムに含まれるクライアント装置であって、
いずれかのクライアント装置により生成されたサーバ装置へのリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定部と、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記取得リクエストに対応する前記サーバ装置からのレスポンスが、自装置がアクセスできるキャッシュ領域にキャッシュされているか否かを判定し、前記取得リクエストに対応するレスポンスが前記キャッシュ領域にキャッシュされておらず、前記取得リクエストに検索条件式が含まれ、当該検索条件式で得られる検索結果よりも広範な検索結果が得られる広範検索条件式に当該検索条件式を変換可能である場合に、前記検索条件式を前記広範検索条件式に変換する代表クライアント処理部と、
前記代表クライアント処理部により変換された前記広範検索条件式が含まれるリクエストを前記サーバ装置に送信するサーバ通信部とを有するクライアント装置。 - 複数のクライアント装置が含まれる通信システムであって、
各クライアント装置は、
サーバ装置へのリクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられている場合に、自装置が前記通信システムから離脱した後に自装置に代わって動作する予備代表クライアント装置を他のクライアント装置の中から選択し、前記サーバ装置に送信するリクエストに前記予備代表クライアント装置の識別子を追加し、
前記予備代表クライアント装置の識別子が追加されたリクエストを前記サーバ装置に送信する通信システム。 - 複数のクライアント装置が含まれる通信システムであって、
各クライアント装置は、
2以上のクライアント装置で生成されたサーバ装置への同一のリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定し、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、リクエスト生成元の2以上のクライアント装置のうちのいずれかのクライアント装置を、自装置と協働する代表クライアントクローン装置に指定し、
前記代表クライアントクローン装置に指定されたクライアント装置に対して、前記代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち前記代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信し、前記取得リクエストに対応するレスポンスを、前記代表クライアントクローン装置に送信し、前記代表クライアントクローン装置から、前記通知メッセージで通知した送信先のクライアント装置に前記レスポンスを送信させる通信システム。 - 複数のクライアント装置が含まれる通信システムであって、
各クライアント装置は、
いずれかのクライアント装置により生成されたサーバ装置へのリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定し、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記取得リクエストに対応する前記サーバ装置からのレスポンスが、自装置がアクセスできるキャッシュ領域にキャッシュされているか否かを判定し、前記取得リクエストに対応するレスポンスが前記キャッシュ領域にキャッシュされておらず、前記取得リクエストに検索条件式が含まれ、当該検索条件式で得られる検索結果よりも広範な検索結果が得られる広範検索条件式に当該検索条件式を変換可能である場合に、前記検索条件式を前記広範検索条件式に変換し、
変換された前記広範検索条件式が含まれるリクエストを前記サーバ装置に送信する通信システム。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置が行うデータ処理方法であって、
サーバ装置へのリクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられている場合に、前記クライアント装置が、自装置が前記通信システムから離脱した後に自装置に代わって動作する予備代表クライアント装置を他のクライアント装置の中から選択し、前記サーバ装置に送信するリクエストに前記予備代表クライアント装置の識別子を追加する代表クライアント処理ステップと、
前記クライアント装置が、前記代表クライアント処理ステップにより前記予備代表クライアント装置の識別子が追加されたリクエストを前記サーバ装置に送信するサーバ通信ステップとを有するデータ処理方法。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置が行うデータ処理方法であって、
前記クライアント装置が、2以上のクライアント装置で生成されたサーバ装置への同一のリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定ステップと、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記クライアント装置が、リクエスト生成元の2以上のクライアント装置のうちのいずれかのクライアント装置を、自装置と協働する代表クライアントクローン装置に指定する代表クライアント処理ステップと、
前記クライアント装置が、前記代表クライアントクローン装置に指定されたクライアント装置に対して、前記代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち前記代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信し、前記取得リクエストに対応するレスポンスを、前記代表クライアントクローン装置に送信し、前記代表クライアントクローン装置から、前記通知メッセージで通知した送信先のクライアント装置に前記レスポンスを送信させる他クライアント通信ステップとを有するデータ処理方法。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置が行うデータ処理方法であって、
前記クライアント装置が、いずれかのクライアント装置により生成されたサーバ装置へのリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定ステップと、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記クライアント装置が、前記取得リクエストに対応する前記サーバ装置からのレスポンスが、自装置がアクセスできるキャッシュ領域にキャッシュされているか否かを判定し、前記取得リクエストに対応するレスポンスが前記キャッシュ領域にキャッシュされておらず、前記取得リクエストに検索条件式が含まれ、当該検索条件式で得られる検索結果よりも広範な検索結果が得られる広範検索条件式に当該検索条件式を変換可能である場合に、前記検索条件式を前記広範検索条件式に変換する代表クライアント処理ステップと、
前記代表クライアント処理ステップにより変換された前記広範検索条件式が含まれるリクエストを前記サーバ装置に送信するサーバ通信ステップとを有するデータ処理方法。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置に、
サーバ装置へのリクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられている場合に、自装置が前記通信システムから離脱した後に自装置に代わって動作する予備代表クライアント装置を他のクライアント装置の中から選択し、前記サーバ装置に送信するリクエストに前記予備代表クライアント装置の識別子を追加する代表クライアント処理ステップと、
前記代表クライアント処理ステップにより前記予備代表クライアント装置の識別子が追加されたリクエストを前記サーバ装置に送信するサーバ通信ステップとを実行させるプログラム。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置に、
2以上のクライアント装置で生成されたサーバ装置への同一のリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定ステップと、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、リクエスト生成元の2以上のクライアント装置のうちのいずれかのクライアント装置を、自装置と協働する代表クライアントクローン装置に指定する代表クライアント処理ステップと、
前記代表クライアントクローン装置に指定されたクライアント装置に対して、前記代表クライアントクローン装置に指定された旨を通知するとともに、前記2以上のクライアント装置のうち前記代表クライアントクローン装置に指定されなかったクライアント装置をレスポンスの送信先として通知する通知メッセージを送信し、前記取得リクエストに対応するレスポンスを、前記代表クライアントクローン装置に送信し、前記代表クライアントクローン装置から、前記通知メッセージで通知した送信先のクライアント装置に前記レスポンスを送信させる他クライアント通信ステップとを実行させるプログラム。 - 複数のクライアント装置が含まれる通信システムに含まれるコンピュータであるクライアント装置に、
いずれかのクライアント装置により生成されたサーバ装置へのリクエストを取得した場合に、取得した取得リクエストを代表して処理する役割である代表クライアントロールが自装置に割り当てられているか否かを判定する代表クライアント判定ステップと、
前記取得リクエストについての代表クライアントロールが自装置に割り当てられている場合に、前記取得リクエストに対応する前記サーバ装置からのレスポンスが、自装置がアクセスできるキャッシュ領域にキャッシュされているか否かを判定し、前記取得リクエストに対応するレスポンスが前記キャッシュ領域にキャッシュされておらず、前記取得リクエストに検索条件式が含まれ、当該検索条件式で得られる検索結果よりも広範な検索結果が得られる広範検索条件式に当該検索条件式を変換可能である場合に、前記検索条件式を前記広範検索条件式に変換する代表クライアント処理ステップと、
前記代表クライアント処理ステップにより変換された前記広範検索条件式が含まれるリクエストを前記サーバ装置に送信するサーバ通信ステップとを実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014243741A JP6324304B2 (ja) | 2014-12-02 | 2014-12-02 | クライアント装置及び通信システム及びデータ処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014243741A JP6324304B2 (ja) | 2014-12-02 | 2014-12-02 | クライアント装置及び通信システム及びデータ処理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016110175A JP2016110175A (ja) | 2016-06-20 |
JP6324304B2 true JP6324304B2 (ja) | 2018-05-16 |
Family
ID=56124309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014243741A Active JP6324304B2 (ja) | 2014-12-02 | 2014-12-02 | クライアント装置及び通信システム及びデータ処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6324304B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112839071B (zh) * | 2019-11-25 | 2024-01-05 | 商汤集团有限公司 | 训练系统、训练数据访问方法及装置、电子设备、介质 |
-
2014
- 2014-12-02 JP JP2014243741A patent/JP6324304B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016110175A (ja) | 2016-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103209223B (zh) | 分布式应用会话信息共享方法、系统和应用服务器 | |
US10491523B2 (en) | Load distribution in data networks | |
CN105939335B (zh) | 发布-订阅数据处理环境中管理通道所有权的方法和系统 | |
JP4599581B2 (ja) | 情報配信システム、配信要求プログラム、転送プログラム及び配信プログラム等 | |
US9164806B2 (en) | Processing pattern framework for dispatching and executing tasks in a distributed computing grid | |
US8655956B2 (en) | Stream processing using a client-server architecture | |
JP5719323B2 (ja) | 分散処理システム、ディスパッチャおよび分散処理管理装置 | |
US20160294667A1 (en) | System and method for providing an application programming interface manager for use with a service bus runtime | |
CN101313292A (zh) | 对等数据传送指挥协调 | |
US8607233B2 (en) | Web service management | |
JP2005158068A (ja) | P2pプロトコルを用いてアプリケーションを共有する方法及び装置 | |
CN114024972B (zh) | 一种长连接通信方法、系统、装置、设备及存储介质 | |
CN111917838B (zh) | 基于微服务的处理方法及装置、存储介质、电子装置 | |
CN105491078B (zh) | Soa系统中的数据处理方法及装置、soa系统 | |
CN103186536A (zh) | 一种调度数据共享装置的方法及系统 | |
WO2017128713A1 (zh) | 订阅消息的发布方法及装置 | |
KR102565409B1 (ko) | 인스턴스 수 조절 방법, 장치, 전자 기기 및 판독 가능한 저장 매체 | |
JP6324304B2 (ja) | クライアント装置及び通信システム及びデータ処理方法及びプログラム | |
JP5109901B2 (ja) | セッションデータ共有方法 | |
US20120254895A1 (en) | Information processing system, control method, and non-transitory computer readable medium storing program | |
CN105335362B (zh) | 实时数据的处理方法及系统、即时处理系统 | |
US20200327122A1 (en) | Conflation of topic selectors | |
CN110798513B (zh) | 物联网设备互联系统及方法 | |
JP5723330B2 (ja) | 分散処理システムおよび分散処理方法 | |
JP2008147819A (ja) | 証券・金融データ配信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180124 |
|
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: 20180313 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180410 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6324304 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |