(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022191874
(43)【公開日】2022-12-28
(54)【発明の名称】データ処理システム、データ処理方法及びデータ処理プログラム
(51)【国際特許分類】
G06F 9/52 20060101AFI20221221BHJP
G06F 9/48 20060101ALI20221221BHJP
G06F 9/54 20060101ALI20221221BHJP
G06F 11/14 20060101ALI20221221BHJP
【FI】
G06F9/52 150A
G06F9/48 370
G06F9/54 B
G06F11/14 612
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021100356
(22)【出願日】2021-06-16
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】西口 侑希
(72)【発明者】
【氏名】金政 泰彦
(57)【要約】 (修正有)
【課題】外部システムから送信されたレスポンスについての不整合の発生を防止することを可能とするデータ処理システム、その方法及プログラムを提供する。
【解決手段】情報処理装置1は、処理対象のデータを受信したことに応じて、受信したデータに対するタスクを実行し、データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、第1処理要求をアクセス代理実行装置2に送信する。アクセス代理実行装置は、第1処理要求の受信に応じて、第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、変換した第1変換識別子を含む第1処理要求を他の情報処理システムに送信し、第1処理要求に対応する処理の第1実行結果の受信に応じて、第1実行結果に含まれる第1変換識別子を第1識別子に再変換し、再変換した第1識別子と第1変換識別子とを含む第1実行結果を情報処理装置1に送信する。
【選択図】
図18
【特許請求の範囲】
【請求項1】
第1情報処理装置と、前記第1情報処理装置とアクセス可能な第2情報処理装置と、を有するデータ処理システムであって、
前記第1情報処理装置は、
処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、
前記データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を前記第2情報処理装置に送信し、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記他の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【請求項2】
請求項1において、
前記第2情報処理装置は、
前記データに対するタスクの実行に伴って他の情報処理システムに対して実行される第2処理要求の受信に応じて、前記第2処理要求に含まれる第2識別子を可逆変換可能な第2変換識別子に変換し、
変換した前記第2変換識別子を含む前記第2処理要求を前記他の情報処理システムに送信し、
前記第2処理要求に対応する処理の第2実行結果の受信に応じて、前記第2実行結果に含まれる前記第2変換識別子を前記第2識別子に再変換し、
再変換した前記第2識別子と前記第2変換識別子とを含む前記第2実行結果を前記第1情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1変換識別子と前記第2変換識別子とが同一であるか否かを判定し、
前記第1変換識別子と前記第2変換識別子とが異なると判定した場合、前記第1実行結果と前記第2実行結果とのうちのいずれかを破棄する、
ことを特徴とするデータ処理システム。
【請求項3】
請求項2において、
前記第1情報処理装置は、前記第1変換識別子と前記第2変換識別子とが異なると判定した場合、前記第1実行結果及び前記第2実行結果のうち、前記第2情報処理装置から後に受信した実行結果を破棄する、
ことを特徴とするデータ処理システム。
【請求項4】
請求項2において、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1変換識別子の生成タイミングを示す第1付加識別子を前記第1識別子に付加することによって前記第1変換識別子を生成し、
前記第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子と前記第1付加識別子とに分割し、
前記第1識別子と前記第1付加識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【請求項5】
請求項4において、
前記第2情報処理装置は、
前記第2処理要求の受信に応じて、前記第2変換識別子の生成タイミングを示す第2付加識別子を前記第2識別子に付加することによって前記第2変換識別子を生成し、
前記第2実行結果の受信に応じて、前記第2実行結果に含まれる前記第2変換識別子を前記第2識別子と前記第2付加識別子とに分割し、
前記第2識別子と前記第2付加識別子とを含む前記第2実行結果を前記第1情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1付加識別子と前記第2付加識別子が同一であるか否かを判定し、
前記第1付加識別子と前記第2付加識別子とが異なると判定した場合、前記第1実行結果と前記第2実行結果とのうちのいずれかを破棄する、
ことを特徴とするデータ処理システム。
【請求項6】
請求項2において、
前記第2情報処理装置は、前記第1識別子と前記第1実行結果の前記他の情報処理システムからの送信順とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【請求項7】
請求項6において、
前記第2情報処理装置は、前記第2識別子と前記第2実行結果の前記他の情報処理システムからの送信順とを含む前記第2実行結果を前記第2情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1実行結果に対応する前記送信順と前記第2実行結果に対応する前記送信順とを比較し、
前記第2実行結果を前記第1実行結果の後に受信した場合であって、前記第2実行結果に対応する前記送信順が前記第1実行結果に対応する前記送信順の後でない場合、前記第2実行結果を破棄する、
ことを特徴とするデータ処理システム。
【請求項8】
請求項1において、
前記第2情報処理装置は、前記第1処理要求よりも先に前記第1実行結果を受信した場合、前記第1処理要求を受信するまで待機する、
ことを特徴とするデータ処理システム。
【請求項9】
請求項2において、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる前記第1識別子を記憶部に記憶し、
前記第2処理要求の受信に応じて、前記記憶部に記憶した前記第1識別子と前記第2処理要求に含まれる前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第2処理要求を前記他の情報処理システムに送信することなく破棄する、
ことを特徴とするデータ処理システム。
【請求項10】
第1情報処理装置と、前記第1情報処理装置とアクセス可能な第2情報処理装置と、を有するデータ処理システムにおけるデータ処理方法であって、
処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、
前記データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を前記第2情報処理装置に送信する、
処理を前記第1情報処理装置が実行し、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記他の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する処理を実行する、
処理を前記第2情報処理装置が実行することを特徴とするデータ処理方法。
【請求項11】
他の情報処理装置から特定の情報処理システムに対する第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記特定の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の前記特定の情報処理システムからの受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記他の情報処理装置に送信する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システム、データ処理方法及びデータ処理プログラムに関する。
【背景技術】
【0002】
近年、複数のセンサ等から受信したIoT(Internet of Thing)データに対して、複数のタスク(タスクプログラム)を連鎖的に実行して出力するストリーム処理システムが用いられている。
【0003】
このようなストリーム処理システムでは、例えば、IoTデータ(以下、単にデータとも呼ぶ)に対するタスクの実行中において必要が生じた場合、他の情報処理システム(以下、外部システムまたは特定の情報処理システムとも呼ぶ)に対して処理要求(以下、リクエストとも呼ぶ)を送信する。そして、外部システムでは、この場合、受信したリクエストに対応する処理を実行し、その処理結果(以下、レスポンスとも呼ぶ)をストリーム処理システムに対して送信する。その後、ストリーム処理システムでは、外部システムから受信したレスポンスをタスクにおいて処理する(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、上記のようなストリーム処理システムでは、耐障害性を確保することを目的として、例えば、各タスクの内部状態についての定期的な保存を行う。具体的に、ストリーム処理システムでは、例えば、各タスクの内部状態をタスクごとに保存する分散チェックポイント方式に従うことによって、各タスクの内部状態についての保存を行う。そして、ストリーム処理システムでは、例えば、ネットワークの切断等の障害が発生した場合、保存済の内部状態を用いることによって障害発生前の状態の復元(以下、リカバリとも呼ぶ)を行い、復元された状態から各タスクの実行を再度行う。
【0006】
しかしながら、例えば、障害の発生時において外部システムに対するリクエストの送信が行われていた場合、ストリーム処理システムと外部システムとの間では、上記のようなリカバリの実行に伴って、リクエストやレスポンスの送受信が再度行われる場合がある。そのため、ストリーム処理システムでは、レスポンスの不整合が発生する可能性がある。
【0007】
そこで、一つの側面では、本発明は、外部システムから送信されたレスポンスについての不整合の発生を防止することを可能とするデータ処理システム、データ処理方法及びデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
実施の形態の一態様では、第1情報処理装置と、前記第1情報処理装置とアクセス可能な第2情報処理装置と、を有するデータ処理システムであって、前記第1情報処理装置は、処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、前記データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を前記第2情報処理装置に送信し、前記第2情報処理装置は、前記第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、変換した前記第1変換識別子を含む前記第1処理要求を前記他の情報処理システムに送信し、前記第1処理要求に対応する処理の第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する。
【発明の効果】
【0009】
一つの側面によれば、外部システムから送信されたレスポンスの不整合の発生を防止することを可能とする。
【図面の簡単な説明】
【0010】
【
図1】
図1は、情報処理システム10の構成について説明する図である。
【
図2】
図2は、分散チェックポイント方式について説明する図である。
【
図3】
図3は、分散チェックポイント方式について説明する図である。
【
図4】
図4は、分散チェックポイント方式について説明する図である。
【
図5】
図5は、分散チェックポイント方式について説明する図である。
【
図6】
図6は、分散チェックポイント方式について説明する図である。
【
図7】
図7は、分散チェックポイント方式について説明する図である。
【
図8】
図8は、分散チェックポイント方式について説明する図である。
【
図9】
図9は、外部システム3に対するアクセスを説明する図である。
【
図10】
図10は、外部システム3に対するアクセスを説明する図である。
【
図11】
図11は、外部システム3に対するアクセスを説明する図である。
【
図12】
図12は、情報処理装置1のハードウエア構成を説明する図である。
【
図13】
図13は、アクセス代理実行装置2のハードウエア構成を説明する図である。
【
図14】
図14は、情報処理装置1の機能のブロック図である。
【
図15】
図15は、アクセス代理実行装置2の機能のブロック図である。
【
図16】
図16は、第1の実施の形態におけるストリームデータ処理の概略を説明するフローチャート図である。
【
図17】
図17は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図18】
図18は、第1の実施の形態におけるストリームデータ処理の概略を説明する図である。
【
図19】
図19は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図20】
図20は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図21】
図21は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図22】
図22は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図23】
図23は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図24】
図24は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図25】
図25は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図26】
図26は、リクエスト管理情報131及びリクエスト管理情報231の具体例を説明する図である。
【
図29】
図29は、外部システム3に対するアクセスを説明する図である。
【
図30】
図30は、第2の実施の形態におけるストリームデータ処理の概略を説明する図である。
【
図31】
図31は、第2の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図32】
図32は、第2の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図33】
図33は、第2の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図34】
図34は、第2の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図35】
図35は、リクエスト管理情報131の具体例を説明する図である。
【
図36】
図36は、外部システム3に対するアクセスを説明する図である。
【
図37】
図37は、第3の実施の形態におけるストリームデータ処理の概略を説明する図である。
【
図38】
図38は、第3の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図39】
図39は、第3の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図40】
図40は、第3の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図41】
図41は、第3の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図42】
図42は、外部システム3に対するアクセスを説明する図である。
【
図43】
図43は、第4の実施の形態におけるストリームデータ処理の概略を説明する図である。
【
図44】
図44は、第4の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図45】
図45は、第4の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図46】
図46は、リクエストID情報232の具体例について説明する図である。
【発明を実施するための形態】
【0011】
[第1の実施の形態における情報処理システムの構成]
初めに、情報処理システム10の構成について説明を行う。
図1は、情報処理システム10の構成について説明する図である。
【0012】
情報処理システム10は、例えば、複数のセンサ(図示せず)から送信されたセンサデータDTを蓄積するキュー4a(以下、記憶装置4aとも呼ぶ)及びキュー4b(以下、記憶装置4bとも呼ぶ)と、キュー4a及びキュー4bに蓄積された各センサデータDTについてのタスクを実行する1以上の物理マシンまたは仮想マシンである情報処理装置1(以下、ストリーム処理装置1とも呼ぶ)とを有する。センサデータDTは、例えば、工場内の温度計の測定値や車両の現在位置等のデータである。以下、キュー4a及びキュー4bを総称して単にキュー4とも呼ぶ。
【0013】
具体的に、情報処理装置1は、例えば、
図1に示すように、各センサデータDTに対してタスクT1とタスクT2とタスクT3とを連鎖的に実行する処理(以下、ストリームデータ処理またはデータ処理とも呼ぶ)を行う。以下、タスクT1、タスクT2及びタスクT3を含む各タスクを総称して単にタスクTとも呼ぶ。なお、以下、情報処理装置1において3つのタスク(タスクT1、タスクT2及びタスクT3)が連鎖的に実行される場合について説明を行うが、情報処理装置1は、3つ以外の数のタスクを連鎖的に実行するものであってもよい。
【0014】
さらに具体的に、情報処理装置1は、例えば、
図1に示すように、キュー4aに蓄積されたセンサデータDTについてのタスクT1の実行を行うとともに、キュー4bに蓄積されたセンサデータDTについてのタスクT2の実行を行う。そして、情報処理装置1は、例えば、タスクT1が実行されたセンサデータDT(タスクT1の実行結果)と、タスクT2が実行されたセンサデータDT(タスクT2の実行結果)とについてのタスクT3の実行を行う。その後、情報処理装置1は、例えば、タスクT3が実行されたセンサデータDT(タスクT3の実行結果)を予め指定された操作端末(図示せず)等に出力する。
【0015】
なお、ストリームデータ処理は、例えば、複数の情報処理装置1において並行して行われるものであってよい。すなわち、複数の情報処理装置1では、例えば、各センサデータDTに対してタスクT1とタスクT2とタスクT3とを並列に実行する分散ストリームデータ処理がそれぞれ行われるものであってよい。また、タスクT1、タスクT2及びタスクT3のそれぞれは、例えば、複数の情報処理装置1が分担して実行するものであってもよい。
【0016】
また、情報処理装置1は、例えば、
図1に示すように、タスクT1の実行結果等の内部状態(以下、タスクT1の内部状態とも呼ぶ)を記憶する記憶装置T1aと、タスクT2の実行結果等の内部状態(以下、タスクT2の内部状態とも呼ぶ)を記憶する記憶装置T2aと、タスクT3の実行結果等の内部状態(以下、タスクT3の内部状態とも呼ぶ)を記憶する記憶装置T3aとを有する。
【0017】
ここで、情報処理システム10は、耐障害性を確保することを目的として、例えば、各タスクの内部状態についての定期的な保存を行う。具体的に、情報処理システム10は、例えば、各タスクの内部状態をタスクごとに保存する分散チェックポイント方式に従うことによって、各タスクの内部状態についての保存を行う。そして、情報処理システム10は、例えば、ネットワークの切断等の障害が発生した場合、保存済の内部状態を用いることによって障害発生前の状態の復元を行い、復元された状態から各タスクの実行を再度行う。以下、分散チェックポイント方式について説明を行う。
【0018】
[分散チェックポイント]
図2から
図8は、分散チェックポイント方式について説明する図である。
【0019】
情報処理装置1では、各タスクに対して内部状態の保存を行うタイミングを通知するために、タスク間においてバリアマーカの送受信が行われる。具体的に、各タスクは、バリアマーカを受信したことに応じて各タスクにおける内部状態の保存を行う。
【0020】
さらに具体的に、情報処理装置1は、例えば、
図2に示すように、センサデータDTとともにバリアマーカBM1及びバリアマーカBM2を含む各バリアマーカの送受信を定期的に行う。バリアマーカBM1は、タスクT1を経由してタスクT3に送信されるバリアマーカであり、バリアマーカBM2は、タスクT2を経由してタスクT3に送信されるバリアマーカである。
【0021】
そして、例えば、
図3に示すように、バリアマーカBM2がタスクT2に到達した場合、タスクT2は、バリアマーカBM2の受信時点において記憶装置T2aに記憶されていた内部状態を記憶装置T0に保存する。
【0022】
続いて、例えば、
図4に示すように、バリアマーカBM2がタスクT3に到達した場合、タスクT3は、バリアマーカBM1が到達するまで待機する。
【0023】
すなわち、タスクT3は、タスクT1が実行されたセンサデータDT(タスクT1の実行結果)及びタスクT2が実行されたセンサデータDT(タスクT2の実行結果)に対して実行するタスクである。そのため、タスクT3は、タスクT3に対するセンサデータDTの送信元の全て(タスクT1及びタスクT2)からバリアマーカが到達するまで待機する。
【0024】
その後、例えば、バリアマーカBM1がタスクT1に到達した場合、タスクT1は、バリアマーカBM1の受信時点において記憶装置T1aに記憶されていた内部状態を記憶装置T0に保存する。
【0025】
そして、例えば、
図5に示すように、バリアマーカBM1がタスクT3に到達した場合、タスクT3は、タスクT3に対するセンサデータDTの送信元の全てからバリアマーカが到達したものと判定し、
図6に示すように、バリアマーカBM1の受信時点において記憶装置T3aに記憶されていた内部状態を記憶装置T0に保存する。さらに、タスクT3は、この場合、例えば、次のタスクTに対してバリアマーカBM3の送信を行う。
【0026】
これにより、情報処理装置1は、内部状態の保存を行うまでに処理を行うセンサデータDTをタスク間において揃えることが可能になる。
【0027】
ここで、例えば、情報処理装置1における終端のタスクまでバリアマーカBM3が到着することによってチェックポイントが完了し、かつ、このチェックポイントが障害発生前に完了した最後のチェックポイントであった場合において、障害の発生に伴うリカバリが行われる場合、情報処理装置1は、
図7に示すように、記憶装置T0に記憶されている内部状態のうち、バリアマーカBM1の到達に伴って記憶装置T1aから送信された内部状態を記憶装置T1aに戻す。また、情報処理装置1は、この場合、記憶装置T0に記憶されている内部状態のうち、バリアマーカBM2の到達に伴って記憶装置T2aから送信された内部状態を記憶装置T2aに戻す。さらに、情報処理装置1は、この場合、記憶装置T0に記憶されている内部状態のうち、バリアマーカBM1及びバリアマーカBM2の到達に伴って記憶装置T3aから送信された内部状態を記憶装置T3aに戻す。
【0028】
すなわち、情報処理装置1は、障害の発生に伴うリカバリを行う場合、分散チェックポイント方式に従うことによって保存した内部状態を用いることによって、タスクT1、タスクT2及びタスクT3の状態を障害の発生前の状態に復元する。
【0029】
そして、情報処理装置1は、
図8に示すように、バリアマーカBM1及びバリアマーカBM2の直後のセンサデータDTから順に処理を行い、障害発生時点のセンサデータDTの読み込み位置に追いつくことでリカバリを完了する。
【0030】
これにより、情報処理装置1は、障害に発生に伴ってリカバリを実行した場合であっても、リカバリの前後における不整合の発生を防止することが可能になる。
【0031】
[外部システムへのアクセス]
次に、外部システム3に対するアクセスについて説明を行う。
図9から
図11は、外部システム3に対するアクセスを説明する図である。
【0032】
初めに、情報処理装置1、アクセス代理実行装置2及び外部システム3の構成について説明を行う。
図9は、情報処理装置1、アクセス代理実行装置2及び外部システム3の構成を説明する図である。
【0033】
アクセス代理実行装置2(以下、情報処理装置2とも呼ぶ)は、例えば、1以上の物理マシンまたは仮想マシンであり、外部システム3に対するリクエストの送信や外部システム3からのレスポンスの受信(待ち合わせ)を情報処理装置1に代わって行う。アクセス代理実行装置2は、例えば、情報処理装置1と同様にストリームデータ処理を行い、分散チェックポイント方式によって耐障害性を確保する。
【0034】
また、外部システム3は、例えば、情報処理装置1が各タスクの内部状態として記憶していない各種データを管理するデータベースシステムである。
【0035】
そして、情報処理装置1は、例えば、センサデータDTについてのタスクの実行に伴って、外部システム3へのリクエストの送信を行う必要が生じた場合、送信を行う必要が生じたリクエストをアクセス代理実行装置2に対して送信する。
【0036】
具体的に、例えば、センサデータDTについてのタスクの実行中において必要が生じた場合、情報処理装置1は、
図9に示すように、外部システム3に対するリクエストをキュー5aに蓄積する。
【0037】
続いて、アクセス代理実行装置2は、例えば、キュー5aに蓄積されたリクエストを取得してキュー6aに蓄積する。そして、外部システム3は、例えば、キュー6aに蓄積されたリクエストに対応する処理を実行する。
【0038】
その後、外部システム3は、例えば、リクエストに対応する処理の実行終了に応じて、リクエストに対する複数のレスポンスをキュー6bに蓄積する。そして、アクセス代理実行装置2は、例えば、キュー6bに蓄積された複数のレスポンスを取得してキュー5bに蓄積する。さらに、情報処理装置1は、例えば、キュー5bに蓄積される複数のレスポンスを順次取得し、取得した各レスポンスについてのタスクの実行を順次行う。
【0039】
すなわち、情報処理装置1は、センサデータDTについてのタスクの実行に伴って外部システム3へのリクエストの送信を行う必要が生じた場合、アクセス代理実行装置2に対してリクエストの送信を行う。この場合、情報処理装置1は、アクセス代理実行装置2との間におけるリクエスト及びレスポンスの送受信をキュー5a及びキュー5bを介して行う。また、アクセス代理実行装置2は、外部システム3との間におけるリクエスト及びレスポンスの送受信をキュー6a及びキュー6bを介して行う。
【0040】
これにより、情報処理装置1は、外部システム3へのリクエストの送信を行う必要が生じた場合であっても、アクセス代理実行装置2からのレスポンスを受信するまで待ち合わせる必要がなくなり、次以降のセンサデータDTについてのタスクの実行を継続して行うことが可能になる。同様に、アクセス代理実行装置2は、外部システム3へのリクエストの送信を行う必要が生じた場合であっても、外部システム3からのレスポンスを受信するまで待ち合わせる必要がなくなり、次以降のリクエストの送信を継続して行うことが可能になる。
【0041】
そのため、情報処理装置1は、例えば、外部システム3に対するアクセスに伴って発生するバリアマーカの待ち合わせ時間(例えば、
図2等で説明したタスクT3におけるバリアマーカBM1及びバリアマーカBM2の待ち合わせ時間)を抑制することが可能になる。したがって、情報処理装置1は、例えば、各タスクにおける処理速度の低下を抑制することが可能になる。
【0042】
次に、外部システム3に対するアクセスが行われる際のシーケンスチャート図について説明を行う。
図10及び
図11は、外部システム3に対するアクセスが行われる際のシーケンスチャート図である。以下、キュー5a及びキュー5bを総称して単にキュー5とも呼び、キュー6a及びキュー6bを総称して単にキュー6とも呼ぶ。
【0043】
情報処理装置1は、
図10に示すように、例えば、センサデータDTについてのタスクの実行中において必要が生じた場合、キュー5、アクセス代理実行装置2及びキュー6を介して外部システム3に対してリクエスト(1)を送信する。そして、外部システム3は、情報処理装置1から送信されたリクエスト(1)を受信した場合、受信したリクエスト(1)に対応する処理を実行する。
【0044】
その後、外部システム3は、例えば、情報処理装置1から送信されたリクエスト(1)に対応するレスポンスとしてレスポンス(1)及びレスポンス(2)を生成した場合、リクエスト(1)に対応する最後のレスポンスでないことを示す情報を付加したレスポンス(1)を、キュー6、アクセス代理実行装置2及びキュー5を介して情報処理装置1に送信する。また、外部システム3は、この場合、リクエスト(1)に対応する最後のレスポンスであることを示す情報を付加したレスポンス(2)を、キュー6、アクセス代理実行装置2及びキュー5を介して情報処理装置1に送信する。
【0045】
そして、情報処理装置1は、レスポンス(1)を受信した場合、受信したレスポンス(1)に付加されている情報に従って、リクエスト(1)に対応するさらなるレスポンスを受信するまで待ち合わせる。さらに、情報処理装置1は、レスポンス(2)を受信した場合、受信したレスポンス(2)に付加されている情報に従って、リクエスト(1)に対応するレスポンスの待ち合わせを終了する。
【0046】
ここで、例えば、障害の発生時において外部システム3に対するリクエストの送信が行われていた場合、リカバリの実行に伴って、外部システム3に対するリクエストの送信や情報処理装置1に対するレスポンスの送信が再度行われる場合がある。そのため、情報処理装置1では、例えば、リクエストに対するレスポンスの不整合が発生する可能性がある。
【0047】
具体的に、
図11に示すように、例えば、アクセス代理実行装置2における障害の発生に伴ってリカバリが実行され、アクセス代理実行装置2の内部状態が時点CPまで戻った場合、アクセス代理実行装置2は、時点CPよりも後に取得が行われたリクエスト(1)をキュー5から再度取得し、キュー6を介して外部システム3に送信する可能性がある。
【0048】
そのため、この場合、外部システム3に対してリクエスト(1)が2回送信されることになり、外部システム3は、1回目のリクエスト(1)に対応するレスポンス(1)及びレスポンス(2)に加え、2回目のリクエスト(1)(以下、リクエスト(1)(再)とも呼ぶ)に対応するレスポンス(1)(以下、レスポンス(1)(再)とも呼ぶ)及びレスポンス(2)(以下、レスポンス(2)(再)とも呼ぶ)についても情報処理装置1に送信する。
【0049】
そして、この場合において、例えば、レスポンス(1)、レスポンス(1)(再)、レスポンス(2)及びレスポンス(2)(再)の順で情報処理装置1に到達した場合、情報処理装置1は、リクエスト(1)に対応する最後のレスポンスであることを示す情報が付加されたレスポンス(2)を受信するまでに受信した各レスポンス(レスポンス(1)、レスポンス(1)(再)及びレスポンス(2))を、リクエスト(1)に対応するレスポンスとして受信する。
【0050】
すなわち、情報処理装置1では、この場合、同一内容のレスポンスであるレスポンス(1)及びレスポンス(1)(再)を、リクエスト(1)に対応するレスポンスとしてそれぞれ受信することになり、リクエスト(1)に対応するレスポンスの不整合が発生する。
【0051】
そこで、本実施の形態における情報処理装置1は、例えば、処理対象のセンサデータDTを受信したことに応じて、受信したセンサデータDTに対するタスクを実行する。そして、情報処理装置1は、センサデータDTに対するタスクの実行に伴って外部システム3(以下、他の情報処理システムとも呼ぶ)に対してリクエストを行う処理が実行される場合、リクエストをアクセス代理実行装置2に送信する。
【0052】
一方、本実施の形態におけるアクセス代理実行装置2は、リクエストの受信に応じて、リクエストに含まれる識別子を可逆変換可能な変換識別子に変換する。具体的に、アクセス代理実行装置2は、例えば、リクエストに含まれる識別子(例えば、リクエストID)にタイムスタンプ(以下、付加識別子とも呼ぶ)を付加することによって新たな識別子である変換識別子を生成する。そして、アクセス代理実行装置2は、変換した変換識別子を含むリクエストを外部システム3に送信する。
【0053】
また、アクセス代理実行装置2は、リクエストに対応するレスポンスの受信に応じて、レスポンスに含まれる変換識別子を識別子に再変換する。そして、アクセス代理実行装置2は、再変換した識別子と変換識別子とを含むレスポンスを情報処理装置1に送信する。
【0054】
すなわち、本実施の形態におけるアクセス代理実行装置2は、リクエストに含まれる識別子を変換識別子に変換することで、リカバリの実行に伴って同一のリクエストが複数回送信される場合であっても、それぞれのリクエストを区別可能な状態で外部システム3に送信する。そして、アクセス代理実行装置2は、外部システム3からレスポンスを受信した場合、受信したレスポンスを、そのレスポンスに対応するリクエストが区別可能な状態のままで情報処理装置1に送信する。
【0055】
これにより、本実施の形態における情報処理装置1は、リカバリの実行に伴って同一のリクエストが複数回送信された場合であっても、各リクエストに対応するレスポンスを互いに異なるリクエストに対応するレスポンスとして識別することが可能になる。そのため、情報処理装置1は、アクセス代理実行装置2から受信したレスポンスのうち、破棄する必要があるレスポンス(既に受信しているレスポンスと同一のレスポンス)を特定することが可能になり、レスポンスについての不整合の発生を防止することが可能になる。
【0056】
[情報処理システムのハードウエア構成]
次に、情報処理システム10のハードウエア構成について説明する。
図12は、情報処理装置1のハードウエア構成を説明する図である。また、
図13は、アクセス代理実行装置2のハードウエア構成を説明する図である。
【0057】
初めに、情報処理装置1のハードウエア構成について説明を行う。
【0058】
情報処理装置1は、
図12に示すように、プロセッサであるCPU101と、メモリ102と、I/Oインタフェース103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
【0059】
記憶媒体104は、例えば、ストリームデータ処理を行うためのプログラム110を記憶するプログラム格納領域(図示せず)を有する。また、記憶媒体104は、例えば、ストリームデータ処理を行う際に用いられる情報を記憶する情報格納領域130を有する。なお、記憶媒体104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
【0060】
CPU101は、記憶媒体104からメモリ102にロードされたプログラム110を実行してストリームデータ処理を行う。
【0061】
I/Oインタフェース103は、例えば、ネットワークインターフェースカード等のインタフェース機器であり、インターネット等のネットワークを介してアクセス代理実行装置2とアクセスが可能である。
【0062】
次に、アクセス代理実行装置2のハードウエア構成について説明を行う。
【0063】
アクセス代理実行装置2は、
図13に示すように、プロセッサであるCPU201と、メモリ202と、I/Oインタフェース203と、記憶媒体204とを有する。各部は、バス205を介して互いに接続される。
【0064】
記憶媒体204は、例えば、ストリームデータ処理を行うためのプログラム210を記憶するプログラム格納領域(図示せず)を有する。また、記憶媒体204は、例えば、ストリームデータ処理を行う際に用いられる情報を記憶する情報格納領域230を有する。なお、記憶媒体204は、例えば、HDDやSSDであってよい。
【0065】
CPU201は、記憶媒体204からメモリ202にロードされたプログラム210を実行してストリームデータ処理を行う。
【0066】
I/Oインタフェース203は、例えば、ネットワークインターフェースカード等のインタフェース機器であり、インターネット等のネットワークを介して情報処理装置1及び外部システム3とアクセスが可能である。
【0067】
[情報処理システムの機能]
次に、情報処理システム10の機能について説明を行う。
図14は、情報処理装置1の機能のブロック図である。また、
図15は、アクセス代理実行装置2の機能のブロック図である。
【0068】
初めに、情報処理装置1の機能のブロック図について説明を行う。
【0069】
情報処理装置1は、
図14に示すように、例えば、CPU101やメモリ102等のハードウエアとプログラム110とが有機的に協働することにより、データ受信部111と、アプリケーションタスク実行部112(以下、アプリタスク実行部112とも表記する)と、リクエスト管理部113と、リクエスト送信部114と、レスポンス受信部115と、一貫性判定部116と、重複判定部117とを含む各種機能を実現する。
【0070】
また、情報処理装置1は、例えば、リクエスト管理情報131と、実行時固有情報132と、レスポンス特定情報133とを情報格納領域130に記憶する。
【0071】
データ受信部111は、例えば、キュー4に蓄積されたセンサデータDTを順次取得する。また、データ受信部111は、例えば、前段タスク(同一の情報処理装置1または他の情報処理装置1において動作する前段タスク)から送信されたセンサデータDTを受信する。
【0072】
アプリケーションタスク実行部112は、例えば、データ受信部111が受信したセンサデータDTについてのタスクを実行する。
【0073】
リクエスト管理部113は、例えば、アプリケーションタスク実行部112によるタスクの実行に伴って外部システム3に対するリクエストの送信が必要になった場合、外部システム3に対するリクエストを生成する。そして、リクエスト管理部113は、例えば、生成したリクエストについての情報をリクエスト管理情報131として情報格納領域130に記憶する。
【0074】
リクエスト送信部114は、例えば、リクエスト管理部113が生成したリクエストをアクセス代理実行装置2に送信する。
【0075】
レスポンス受信部115は、例えば、アクセス代理実行装置2から送信されたレスポンス(リクエスト送信部114が送信したリクエストに対応するレスポンス)を受信する。具体的に、レスポンス受信部115は、例えば、キュー5に蓄積されたレスポンスを順次取得する。
【0076】
一貫性判定部116は、例えば、レスポンス受信部115が受信したレスポンスに含まれる内容から、レスポンス受信部115が受信したレスポンスが破棄すべきレスポンスであるか否かを判定する。そして、一貫性判定部116は、例えば、レスポンス受信部115が受信したレスポンスが破棄すべきレスポンスであると判定した場合、レスポンス受信部115が受信したレスポンスを破棄する。
【0077】
重複判定部117は、例えば、レスポンス受信部115が受信したレスポンスに含まれる内容から、レスポンス受信部115が受信したレスポンスが過去に受信済のレスポンスと同一のレスポンス(以下、重複レスポンスとも呼ぶ)であるか否かを判定する。そして、重複判定部117は、例えば、レスポンス受信部115が受信したレスポンスが重複レスポンスであると判定した場合、レスポンス受信部115が受信したレスポンスを破棄する。実行時固有情報132及びレスポンス特定情報133についての説明は後述する。
【0078】
次に、アクセス代理実行装置2の機能のブロック図について説明を行う。
【0079】
アクセス代理実行装置2は、
図15に示すように、例えば、CPU201やメモリ202等のハードウエアとプログラム210とが有機的に協働することにより、リクエスト受信部211と、重複フィルタ部212と、固有情報生成部213と、リクエスト管理部214と、リクエスト処理部215と、識別子変換部216と、リクエスト送信部217と、レスポンス受信部218と、固有情報抽出部219と、特定情報付加部220と、レスポンス処理部221と、レスポンス送信部222とを含む各種機能を実現する。
【0080】
また、アクセス代理実行装置2は、例えば、リクエスト管理情報231と、リクエストID情報232とを情報格納領域230に記憶する。
【0081】
リクエスト受信部211は、例えば、情報処理装置1から送信されたリクエストを受信する。具体的に、リクエスト受信部211は、例えば、キュー5に蓄積されたリクエストを順次取得する。
【0082】
重複フィルタ部212は、例えば、リクエスト受信部211が受信したリクエストの内容から、リクエスト受信部211が受信したリクエストが過去に受信済のリクエストと同一のリクエスト(以下、重複リクエストとも呼ぶ)であるか否かを判定する。そして、重複フィルタ部212は、例えば、リクエスト受信部211が受信したリクエストが重複リクエストであると判定した場合、リクエスト受信部211が受信したリクエストを破棄する。
【0083】
固有情報生成部213は、例えば、リクエスト受信部211がリクエストに対応する実行時固有情報を生成する。実行時固有情報は、例えば、リクエスト受信部211がリクエストを受信した時刻を示すタイムスタンプである。
【0084】
リクエスト管理部214は、例えば、リクエスト受信部211が受信したリクエストに対応する情報をリクエスト管理情報231として情報格納領域130に記憶する。
【0085】
リクエスト処理部215は、例えば、リクエストの送信先の外部システム3に応じて、リクエスト受信部211が受信したリクエストを変換する。
【0086】
識別子変換部216は、例えば、リクエスト受信部211が受信したリクエストに含まれる識別子を可逆変換可能な変換識別子に変換する。識別子は、例えば、各リクエストを識別可能なリクエストIDである。
【0087】
具体的に、識別子変換部216は、例えば、リクエスト受信部211が受信したリクエストに含まれる識別子に対して、固有情報生成部213が生成した実行時固有情報を付加することによって変換識別子を生成する。
【0088】
リクエスト送信部217は、例えば、識別子変換部216が変換した変換識別子を含むリクエストを外部システム3に送信する。
【0089】
レスポンス受信部218は、例えば、外部システム3から送信されたレスポンス(リクエスト送信部217が送信したリクエストに対応するレスポンス)を受信する。具体的に、レスポンス受信部218は、例えば、キュー6に蓄積されたレスポンスを順次取得する。
【0090】
固有情報抽出部219は、例えば、レスポンス受信部218が受信したレスポンスから実行時固有情報を抽出する。そして、固有情報抽出部219は、例えば、レスポンス受信部218が受信したレスポンスに対して、抽出した実行時固有情報を付加する。
【0091】
特定情報付加部220は、例えば、レスポンス受信部218が受信したレスポンスに対応するレスポンス特定情報を取得する。レスポンス特定情報は、例えば、レスポンス受信部218が受信したレスポンスが格納されていたキュー6における格納位置(オフセット)である。そして、特定情報付加部220は、例えば、レスポンス受信部218が受信したレスポンスに対して、取得したレスポンス特定情報を付加する。
【0092】
レスポンス処理部221は、例えば、必要に応じて、固有情報抽出部219が実行時固有情報を付加したレスポンス(特定情報付加部220がレスポンス特定情報を付加したレスポンス)を変換する。
【0093】
レスポンス送信部222は、例えば、レスポンス処理部221が変換したレスポンスを情報処理装置1に送信する。リクエストID情報232の説明については後述する。
【0094】
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明する。
図16及び
図17は、第1の実施の形態におけるストリームデータ処理の概略を説明するフローチャート図である。また、
図18は、第1の実施の形態におけるストリームデータ処理の概略を説明する図である。
【0095】
情報処理装置1は、
図16に示すように、例えば、センサデータDTを受信するまで待機する(S11のNO)。
【0096】
そして、センサデータDTを受信した場合(S11のYES)、情報処理装置1は、例えば、センサデータDTについてのタスクの実行を開始する(S12)。
【0097】
続いて、情報処理装置1は、例えば、センサデータDTに対するタスクの実行に伴って外部システム3に対するリクエストの送信が必要になった場合(S13のYES)、外部システム3に対するリクエストをアクセス代理実行装置2に送信する(S14)。
【0098】
なお、情報処理装置1は、外部システム3に対するリクエストの送信が必要でない場合(S13のNO)、S14の処理を実行しない。
【0099】
一方、アクセス代理実行装置2は、
図17に示すように、例えば、情報処理装置1から送信されたリクエストを受信するまで待機する(S21のNO)。
【0100】
そして、情報処理装置1から送信されたリクエストを受信した場合(S21のYES)、アクセス代理実行装置2は、例えば、リクエストに含まれる識別子を可逆変換可能な変換識別子に変換する(S22)。
【0101】
さらに、アクセス代理実行装置2は、例えば、変換識別子を含むリクエストを外部システム3に送信する(S23)。
【0102】
その後、アクセス代理実行装置2は、例えば、外部システム3からレスポンスを受信するまで待機する(S24のNO)。
【0103】
そして、外部システム3からレスポンスを受信した場合(S24のYES)、アクセス代理実行装置2は、例えば、レスポンスに含まれる変換識別子を識別子に再変換する(S25)。
【0104】
さらに、アクセス代理実行装置2は、例えば、再変換した識別子と変換識別子とを含むレスポンスを情報処理装置1に送信する(S26)。
【0105】
これにより、本実施の形態における情報処理装置1は、リカバリの実行に伴って同一のリクエストが複数回送信された場合であっても、各リクエストに対応するレスポンスを互いに異なるリクエストに対応するレスポンスとして識別することが可能になる。そのため、情報処理装置1は、アクセス代理実行装置2から受信したレスポンスのうち、破棄する必要があるレスポンスを特定することが可能になり、レスポンスについての不整合の発生を防止することが可能になる。
【0106】
具体的に、
図18に示すように、例えば、リカバリの実行に伴って同一のリクエストであるリクエスト(1)及びリクエスト(1)(再)が発生した場合、リクエスト(1)には、リクエスト(1)に含まれる識別子から生成された変換識別子(以下、第1変換識別子とも呼ぶ)が付加され、リクエスト(1)(再)には、リクエスト(1)(再)に含まれる識別子から生成された他の変換識別子(以下、第2変換識別子とも呼ぶ)が付加される。すなわち、リクエスト(1)及びリクエスト(1)(再)のそれぞれには、各リクエストを区別して識別することが可能な第1変換識別子及び第2変換識別子がそれぞれ付加される。
【0107】
そして、レスポンス(1)及びレスポンス(2)のそれぞれは、例えば、各レスポンスに対応するリクエスト(1)を識別可能な第1変換識別子を保持した状態で情報処理装置1に送信され、レスポンス(1)(再)及びレスポンス(2)(再)のそれぞれは、各レスポンスに対応するリクエスト(1)(再)を識別可能な第2変換識別子を保持した状態で情報処理装置1に送信される。
【0108】
その後、例えば、レスポンス(1)の後にレスポンス(1)(再)を受信した場合、情報処理装置1は、レスポンス(1)が有する識別子とレスポンス(1)(再)が有する識別子とが同一であるが、レスポンス(1)が有する第1変換識別子とレスポンス(1)(再)が有する第2変換識別子とが異なると判定して、レスポンス(1)(再)の破棄を行う。また、例えば、レスポンス(1)の後にレスポンス(2)(再)を受信した場合、レスポンス(1)が有する識別子とレスポンス(2)(再)が有する識別子とが同一であるが、レスポンス(1)が有する第1変換識別子とレスポンス(2)(再)が有する第2変換識別子とが異なると判定して、レスポンス(2)(再)の破棄を行う。
【0109】
すなわち、情報処理装置1は、この場合、リクエスト(1)と同一のリクエストであるリクエスト(1)(再)が発生しているものと判定して、例えば、レスポンス(1)(再)及びレスポンス(2)(再)の破棄を行う。
【0110】
一方、例えば、レスポンス(1)の後にレスポンス(2)を受信した場合、情報処理装置1は、レスポンス(1)が有する識別子とレスポンス(2)が有する識別子とが同一であり、かつ、レスポンス(1)が有する第1変換識別子とレスポンス(2)が有する第1変換識別子とが同一であると判定して、レスポンス(2)の破棄を行わない。
【0111】
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明を行う。
図19から
図25は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。また、
図26から
図28は、第1の実施の形態におけるストリームデータ処理の詳細を説明する図である。
【0112】
[タスク実行処理]
初めに、ストリームデータ処理のうち、センサデータDTについてのタスクの実行を行う処理(以下、タスク実行処理とも呼ぶ)について説明を行う。
【0113】
データ受信部111は、
図19に示すように、例えば、センサデータDTを受信するまで待機する(S31のNO)。
【0114】
そして、センサデータDTを受信した場合(S31のYES)、アプリケーションタスク実行部112は、例えば、受信したセンサデータDTについてのタスクの実行を開始する(S32)。
【0115】
続いて、リクエスト管理部113は、例えば、センサデータDTに対するタスクの実行に伴って外部システム3に対するリクエストの送信が必要になった場合(S33のYES)、外部システム3に対するリクエストを識別するリクエストIDを生成する(S34)。そして、リクエスト管理部113は、例えば、S34の処理で生成したリクエストIDを含む情報をリクエスト管理情報131として情報格納領域130に記憶する(S35)。以下、リクエスト管理情報131の具体例について説明を行う。
【0116】
[リクエスト管理情報の具体例(1)]
図26及び
図35は、リクエスト管理情報131及びリクエスト管理情報231の具体例を説明する図である。具体的に、
図26(A)、
図26(C)及び
図35は、リクエスト管理情報131の具体例を説明する図である。また、
図26(B)は、リクエスト管理情報231の具体例を説明する図である。
【0117】
図26(A)等に示すリクエスト管理情報131は、例えば、各リクエストを識別するリクエストIDが設定される「リクエストID」と、各リクエストに対応するリクエスト管理情報131の生成時刻が設定される「タイムスタンプ」と、各リクエストに対応するタイムアウト時刻(各リクエストに対応するレスポンスの待ち合わせを終了する時刻)が設定される「タイムアウト時刻」とを項目として有する。
【0118】
具体的に、
図26(A)に示すリクエスト管理情報131には、「リクエストID」として「e4fde84d-eedc-3500-a9a0-000000000000」が設定され、「タイムスタンプ」として「1614593910」が設定され、「タイムアウト時刻」として「1614594510」が設定されている。
【0119】
図19に戻り、リクエスト管理部113は、例えば、情報格納領域130に記憶したリクエスト管理情報131に含まれる各情報から、外部システム3に対するリクエストを生成する(S36)。以下、リクエストの具体例について説明を行う。
【0120】
[リクエストの具体例(1)]
図27は、リクエストの具体例を説明する図である。具体的に、
図27(A)は、S36の処理において生成されるリクエスト(以下、リクエストRQ1とも呼ぶ)の具体例を説明する図である。また、
図27(B)は、後述するS55の処理においてリクエストIDに対して実行時固有情報を付加したリクエスト(以下、リクエストRQ2とも呼ぶ)の具体例を説明する図である。
【0121】
図27(A)に示すリクエストRQ1には、例えば、「requestId」において、
図26(A)において説明したリクエスト管理情報131に含まれる「リクエストID」の情報が設定されている。また、
図27(A)に示すリクエストRQ1には、例えば、「eventTime」において、
図26(A)において説明したリクエスト管理情報131に含まれる「タイムスタンプ」の時刻に対応する時刻が設定されている。
【0122】
具体的に、
図27(A)に示すリクエストRQ1には、例えば、「requestId」として「e4fde84d-eedc-3500-a9a0-000000000000」が設定され、「eventTime」として「1614593910128」が設定されている。
【0123】
図19に戻り、リクエスト送信部114は、例えば、S36の処理で生成したリクエストをキュー5に送信する(S37)。
【0124】
一方、リクエスト管理部113及びリクエスト送信部114は、例えば、センサデータDTに対するタスクの実行に伴って外部システム3に対するリクエストの送信が必要でなかった場合(S33のNO)、S34以降の処理を行わない。
【0125】
[第1タイムアウト処理]
次に、ストリームデータ処理のうち、情報処理装置1においてリクエストのタイムアウトが発生した場合に行う処理(以下、第1タイムアウト処理とも呼ぶ)について説明を行う。
【0126】
リクエスト管理部113は、
図20に示すように、例えば、判定タイミングになるまで待機する(S41のNO)。判定タイミングは、例えば、1分間隔等の定期的なタイミングであってよい。
【0127】
そして、判定タイミングになった場合(S41のYES)、リクエスト管理部113は、例えば、情報格納領域130に記憶したリクエスト管理情報131を参照し、タイムアウトが発生したリクエストが存在しているか否かを判定する(S42)。
【0128】
具体的に、リクエスト管理部113は、例えば、
図26(A)で説明したリクエスト管理情報131を参照し、「タイムアウト」に設定された時刻が既に経過しているリクエストが存在するか否かを判定する。
【0129】
その結果、タイムアウトが発生したリクエストが存在すると判定した場合(S42のYES)、リクエスト管理部113は、例えば、情報格納領域130に記憶したリクエスト管理情報131のうち、タイムアウトが発生したと判定したリクエストに対応するリクエスト管理情報131を削除する(S43)。
【0130】
その後、リクエスト管理部113は、S42の処理において存在すると判定したリクエストについてタイムアウトが発生したことを示す情報をアプリケーションタスク実行部112に通知する(S44)。
【0131】
一方、タイムアウトが発生したリクエストが存在しないと判定した場合(S42のNO)、リクエスト管理部113は、S43以降の処理を行わない。
【0132】
[リクエスト受信処理]
次に、ストリームデータ処理のうち、アクセス代理実行装置2が情報処理装置1から送信されたリクエストを受信した場合に行う処理(以下、リクエスト受信処理とも呼ぶ)について説明を行う。
【0133】
固有情報生成部213は、
図21に示すように、例えば、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信するまで待機する(S51のNO)。
【0134】
具体的に、固有情報生成部213は、例えば、リクエスト受信部211がキュー5からリクエストを取得するまで待機する。なお、リクエスト受信部211は、例えば、1秒間隔等の定期的なタイミングでリクエストの取得を行うものであってよい。
【0135】
そして、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信した場合(S51のYES)、固有情報生成部213は、例えば、受信したリクエストに対応する実行時固有情報を生成する(S52)。
【0136】
具体的に、固有情報生成部213は、例えば、リクエスト受信部211がリクエストを受信した時刻を示すタイムスタンプを実行時固有情報として生成する。
【0137】
続いて、リクエスト管理部214は、例えば、S52の処理で生成した実行時固有情報を含む各情報をリクエスト管理情報231として情報格納領域230に記憶する(S53)。以下、リクエスト管理情報231の具体例について説明を行う。
【0138】
[リクエスト管理情報の具体例(2)]
図26(B)に示すリクエスト管理情報231は、例えば、各リクエストを識別するリクエストIDが設定される「リクエストID」と、各リクエストに対応するリクエスト管理情報231の生成時刻が設定される「タイムスタンプ」と、各リクエストに対応するタイムアウト時刻(各リクエストに対応するレスポンスの待ち合わせを終了する時刻)が設定される「タイムアウト時刻」とを項目として有する。
【0139】
具体的に、
図26(B)に示すリクエスト管理情報231には、「リクエストID」として「e4fde84d-eedc-3500-a9a0-000000000000」が設定され、「タイムスタンプ」として「1614593910」が設定され、「タイムアウト時刻」として「1614594510」が設定されている。
【0140】
図21に戻り、リクエスト処理部215は、例えば、S51の処理で受信したリクエストのペイロードの生成(変換)を行う(S54)。
【0141】
具体的に、リクエスト処理部215は、例えば、S51の処理で受信したリクエストを、リクエストの送信を行う外部システム3が識別可能な状態に変換する。
【0142】
そして、識別子変換部216は、例えば、S51の処理で受信したリクエストに含まれるリクエストIDを変換する(S55)。
【0143】
具体的に、識別子変換部216は、例えば、S51の処理で受信したリクエストに含まれるリクエストIDに対して、S52の処理で生成した実行時固有情報を付加する。以下、S55の処理が行われた後のリクエストの具体例について説明を行う。
【0144】
[リクエストの具体例(2)]
図27(B)に示すリクエストRQ2には、例えば、末尾がタイムスタンプ(例えば、リクエスト受信部211がリクエストを受信した時刻を示すタイムスタンプ)に変換されたリクエストIDが「requestId」に設定されている。
【0145】
具体的に、
図27(B)に示すリクエストRQ2には、例えば、「requestId」として「e4fde84d-eedc-3500-a9a1-614593910764」が設定されている。
【0146】
図21に戻り、リクエスト送信部217は、例えば、S55の処理でリクエストIDを変換したリクエストをキュー6に送信する(S56)。
【0147】
[第2タイムアウト処理]
次に、ストリームデータ処理のうち、アクセス代理実行装置2においてリクエストのタイムアウトが発生した場合に行う処理(以下、第2タイムアウト処理とも呼ぶ)について説明を行う。
【0148】
リクエスト管理部214は、
図22に示すように、例えば、判定タイミングになるまで待機する(S61のNO)。判定タイミングは、例えば、1分間隔等の定期的なタイミングであってよい。
【0149】
そして、判定タイミングになった場合(S61のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231を参照し、タイムアウトが発生したリクエストが存在しているか否かを判定する(S62)。
【0150】
具体的に、リクエスト管理部214は、例えば、
図26(B)で説明したリクエスト管理情報231を参照し、「タイムアウト」に設定された時刻が既に経過しているリクエストが存在するか否かを判定する。
【0151】
その結果、タイムアウトが発生したリクエストが存在すると判定した場合(S62のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231のうち、タイムアウトが発生したと判定したリクエストに対応するリクエスト管理情報231を削除する(S63)。
【0152】
そして、リクエスト管理部214は、S62の処理において存在すると判定したリクエストについてタイムアウトが発生したことを示す情報をレスポンス処理部221に送信する(S64)。
【0153】
一方、タイムアウトが発生したリクエストが存在しないと判定した場合(S62のNO)、リクエスト管理部214は、S63以降の処理を行わない。
【0154】
[第1レスポンス受信処理]
次に、ストリームデータ処理のうち、アクセス代理実行装置2が外部システム3から送信されたレスポンスを受信した場合に行う処理(以下、第1レスポンス受信処理とも呼ぶ)について説明を行う。
【0155】
固有情報抽出部219は、
図23に示すように、例えば、外部システム3から送信されたレスポンスをレスポンス受信部218が受信するまで待機する(S71のNO)。具体的に、固有情報抽出部219は、例えば、レスポンス受信部218がキュー6からレスポンスを取得するまで待機する。なお、レスポンス受信部218は、例えば、1秒間隔等の定期的なタイミングでレスポンスの取得を行うものであってよい。以下、S71の処理で受信するレスポンスの具体例について説明を行う。
【0156】
[レスポンスの具体例(1)]
図28は、レスポンスの具体例を説明する図である。具体的に、
図28(A)は、S71の処理で受信するレスポンス(以下、レスポンスRS1とも呼ぶ)の具体例を説明する図である。また、
図28(B)は、後述するS79の処理で変換を行った後のレスポンス(以下、レスポンスRS2とも呼ぶ)の具体例を説明する図である。
【0157】
図28(A)に示すレスポンスRS1には、例えば、末尾がタイムスタンプ(リクエスト受信部211がリクエストを受信した時刻を示すタイムスタンプ)に変換されたリクエストIDが「requestId」に設定されている。また、
図28(A)に示すレスポンスRS1には、例えば、各レスポンスが最終レスポンスであるか否かを示す「hasNext」が設定されている。最終レスポンスは、各リクエストに対応するレスポンスのうち、外部システム3から送信される最後のレスポンスである。また、「hasNext」には、例えば、各レスポンスが最終レスポンスであることを示す「false」、または、各レスポンスが最終レスポンスでないことを示す「true」が設定される。
【0158】
具体的に、
図28(A)に示すレスポンスRS1には、例えば、「requestId」として「e4fde84d-eedc-3500-a9a1-614593910764」が設定され、「hasNext」として「false」が設定されている。
【0159】
図23に戻り、外部システム3から送信されたレスポンスを受信した場合(S71のYES)、固有情報抽出部219は、受信したレスポンスに含まれるリクエストIDを復元する(S72)。
【0160】
具体的に、固有情報抽出部219は、例えば、レスポンス受信部218が受信したレスポンスに含まれるリクエストIDのうち、実行時固有情報以外の部分を復元後のリクエストIDとして特定する。
【0161】
さらに、固有情報抽出部219は、例えば、S71の処理で受信したレスポンスに対して、S71の処理で受信したレスポンスに含まれる実行時固有情報を付加する(S73)。
【0162】
具体的に、固有情報抽出部119は、S71の処理で受信したレスポンスにおけるリクエストID以外の項目において実行時固有情報を設定する。
【0163】
その後、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231を参照し、S72の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しているか否かを判定する(S74)。
【0164】
その結果、S72の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在すると判定した場合(S74のYES)、リクエスト管理部214は、例えば、S71の処理で受信したレスポンスに対して、S71の処理で受信したレスポンスに対応するリクエストについての必要な情報を付加する(S76)。
【0165】
具体的に、リクエスト管理部214は、例えば、S71の処理で受信したレスポンスに対して、S71の処理で受信したレスポンスに対応するリクエスト(S51の処理で受信したリクエスト)に含まれている情報のうち、情報処理装置においてレスポンスを処理するために必要な情報(例えば、リクエストの出力元タスクを識別するための情報等)を付加する。
【0166】
続いて、リクエスト管理部214は、例えば、S71の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S77)。
【0167】
具体的に、リクエスト管理部214は、例えば、S71の処理で受信したレスポンスの「hasNext」が「false」であるか否かについての判定を行う。
【0168】
その結果、S71の処理で受信したレスポンスが最終レスポンスであると判定した場合(S77のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231のうち、S74の処理で存在すると判定したリクエスト管理情報231を削除する(S78)。
【0169】
一方、S71の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S77のNO)、リクエスト管理部214は、S78の処理を行わない。
【0170】
そして、レスポンス処理部221は、例えば、S76の処理で情報を付加したレスポンスのペイロードの生成(変換)を行う(S79)。以下、S79の処理で変換を行った後のレスポンスの具体例について説明を行う。
【0171】
[レスポンスの具体例(2)]
図28(B)に示すリクエストRQ2には、例えば、末尾に「0」を再設定することによって再変換されたリクエストID(S72の処理で復元したリクエストID)が「requestId」に設定されている。また、
図28(B)に示すリクエストRQ2には、例えば、実行時固有情報が「acceptedTime」に設定されている。
【0172】
具体的に、
図28(B)に示すリクエストRQ2には、例えば、「requestId」として「e4fde84d-eedc-3500-a9a0-000000000000」が設定され、「hasNext」として「false」が設定され、「acceptedTime」として「1614593910764」が設定されている。
【0173】
図23に戻り、レスポンス送信部222は、例えば、S79の処理で変換を行ったレスポンスをキュー5に送信する(S80)。
【0174】
一方、S72の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しないと判定した場合(S74のNO)、リクエスト管理部214は、S71の処理で受信したレスポンスを破棄する(S75)。
【0175】
[第2レスポンス受信処理]
次に、ストリームデータ処理のうち、情報処理装置1が外部システム3から送信されたレスポンスを受信した場合に行う処理(以下、第2レスポンス受信処理とも呼ぶ)について説明を行う。
【0176】
一貫性判定部116は、
図24に示すように、例えば、アクセス代理実行装置2から送信されたレスポンスをレスポンス受信部115が受信するまで待機する(S81のNO)。
【0177】
具体的に、一貫性判定部116は、例えば、レスポンス受信部115がキュー5からレスポンスを取得するまで待機する。なお、レスポンス受信部115は、例えば、1秒間隔等の定期的なタイミングでレスポンスの取得を行うものであってよい。
【0178】
そして、アクセス代理実行装置2から送信されたレスポンスをレスポンス受信部115が受信した場合(S81のYES)、一貫性判定部116は、例えば、情報格納領域130に記憶したリクエスト管理情報131を参照し、受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在するか否かを判定する(S82)。
【0179】
その結果、S81の処理で受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在すると判定した場合(S82のYES)、一貫性判定部116は、例えば、存在すると判定したリクエスト管理情報131に実行時固有情報132が含まれているか否かを判定する(S84)。実行時固有情報132は、後述するS93の処理において情報格納領域130に記憶される実行時固有情報である。
【0180】
そして、リクエスト管理情報131に実行時固有情報132が含まれていると判定した場合(S84のNO)、一貫性判定部116は、
図25に示すように、例えば、S81の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S91)。
【0181】
その結果、S81の処理で受信したレスポンスが最終レスポンスであると判定した場合(S91のYES)、一貫性判定部116は、例えば、情報格納領域130に記憶したリクエスト管理情報131のうち、S82の処理で存在すると判定したリクエスト管理情報131を削除する(S92)。
【0182】
一方、S81の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S91のNO)、一貫性判定部116は、例えば、S81の処理で受信したレスポンスに含まれる実行時固有情報を実行時固有情報132として情報格納領域130に記憶する(S93)。
【0183】
具体的に、一貫性判定部116は、
図26(C)に示すように、例えば、S82の処理で存在すると判定したリクエスト管理情報131の一部として実行時固有情報132を情報格納領域130に記憶する。
【0184】
そして、S92またはS93の処理の後、一貫性判定部116は、例えば、S81の処理で受信したレスポンスをアプリケーションタスク実行部112に通知する(S94)。
【0185】
一方、リクエスト管理情報131に実行時固有情報132が含まれていると判定した場合(S84のYES)、一貫性判定部116は、S81の処理で受信したレスポンスに含まれる実行時固有情報と、S82の処理で存在すると判定したリクエスト管理情報131に含まれる実行時固有情報132とが一致するか否かを判定する(S85)。
【0186】
その結果、S81の処理で受信したレスポンスに含まれる実行時固有情報と、S82の処理で存在すると判定したリクエスト管理情報131に含まれる実行時固有情報132とが一致すると判定した場合(S85のYES)、一貫性判定部116は、例えば、S81の処理で受信したレスポンスをアプリケーションタスク実行部112に通知する(S86)。
【0187】
その後、一貫性判定部116は、例えば、S81の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S87)。
【0188】
その結果、S81の処理で受信したレスポンスが最終レスポンスであると判定した場合(S87のYES)、一貫性判定部116は、例えば、情報格納領域230に記憶したリクエスト管理情報131のうち、S82の処理で存在すると判定したリクエスト管理情報131を削除する(S88)。
【0189】
一方、S81の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S87のNO)、リクエスト管理部214は、S88の処理を行わない。
【0190】
また、S81の処理で受信したレスポンスに含まれる実行時固有情報と、S82の処理で存在すると判定したリクエスト管理情報131に含まれる実行時固有情報132とが一致しないと判定した場合(S85のNO)、一貫性判定部116は、例えば、S81の処理で受信したレスポンスを破棄する(S83)。
【0191】
すなわち、一貫性判定部116は、受信済のレスポンスと同一のリクエストIDを有するレスポンスを受信した場合であっても、実行時固有情報が異なっている場合、受信済のレスポンスと同一のレスポンスが再度送信されたものと判定する。そして、一貫性判定部116は、この場合、受信したレスポンスをアプリケーションタスク実行部112に通知することなく破棄する。
【0192】
これにより、情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生を防止することが可能になる。
【0193】
なお、一貫性判定部116は、S81の処理で受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在しないと判定した場合についても同様に(S82のNO)、S81の処理で受信したレスポンスを破棄する(S83)。
【0194】
このように、本実施の形態における情報処理装置1は、例えば、処理対象のセンサデータDTを受信したことに応じて、受信したセンサデータDTに対するタスクを実行する。そして、情報処理装置1は、センサデータDTに対するタスクの実行に伴って外部システム3に対してリクエストを行う処理が実行される場合、リクエストをアクセス代理実行装置2に送信する。
【0195】
一方、本実施の形態におけるアクセス代理実行装置2は、リクエストの受信に応じて、リクエストに含まれる識別子を可逆変換可能な変換識別子に変換する。そして、アクセス代理実行装置2は、変換した変換識別子を含むリクエストを外部システム3に送信する。
【0196】
また、アクセス代理実行装置2は、リクエストに対応するレスポンスの受信に応じて、レスポンスに含まれる変換識別子を識別子に再変換する。そして、アクセス代理実行装置2は、再変換した識別子と変換識別子とを含むレスポンスを情報処理装置1に送信する。
【0197】
すなわち、本実施の形態におけるアクセス代理実行装置2は、リクエストに含まれる識別子を変換識別子に変換することで、リカバリの実行に伴って同一のリクエストが複数回送信される場合であっても、それぞれのリクエストが区別可能な状態で外部システム3に送信する。そして、アクセス代理実行装置2は、外部システム3からレスポンスを受信した場合、受信したレスポンスを、そのレスポンスに対応するリクエストが区別可能な状態のままで情報処理装置1に送信する。
【0198】
これにより、本実施の形態における情報処理装置1は、リカバリの実行に伴って同一のリクエストが複数回送信された場合であっても、各リクエストに対応するレスポンスを互いに異なるリクエストに対応するレスポンスとして識別することが可能になる。そのため、情報処理装置1は、アクセス代理実行装置2から受信したレスポンスのうち、破棄する必要があるレスポンスを特定することが可能になり、レスポンスについての不整合の発生を防止することが可能になる。
【0199】
[第2の実施の形態の概略]
次に、第2の実施の形態の概略について説明する。
図29は、外部システム3に対するアクセスを説明する図である。また、
図30は、第2の実施の形態におけるストリームデータ処理の概略を説明する図である。なお、以下、第1の実施の形態におけるストリームデータ処理を異なる点について説明を行う。
【0200】
図29に示すように、例えば、障害に発生に伴うリカバリによって、アクセス代理実行装置2の内部状態が時点CPまで戻った場合、アクセス代理実行装置2は、時点CPよりも後に取得が行われたレスポンス(1)をキュー6から再度取得し、キュー5を介して情報処理装置1に送信する場合がある。
【0201】
そのため、情報処理装置1では、この場合、同一内容のレスポンスであるレスポンス(1)及びレスポンス(1)(再)がそれぞれ受信することになり、リクエスト(1)に対応するレスポンスの不整合が発生する。
【0202】
そこで、第2の実施の形態におけるアクセス代理実行装置2は、
図30に示すように、外部システム3から受信したレスポンスに対して、外部システム3からの送信順(キュー6における到着順)を示す情報を付加する。そして、アクセス代理実行装置2は、外部システム3からの送信順を示す情報を付加したレスポンスを情報処理装置1に送信する。
【0203】
その後、情報処理装置1は、アクセス代理実行装置2からレスポンスを受信した場合、受信したレスポンスの送信順が受信済の他のレスポンスの送信順よりも後であるか否かを判定する。その結果、受信したレスポンスの送信順が受信済の他のレスポンスの送信順よりも後でないと判定した場合、情報処理装置1は、受信したレスポンスを破棄する。
【0204】
すなわち、情報処理装置1は、受信したレスポンスの送信順が受信済のレスポンスの送信順よりも後でない場合、受信済のレスポンスがアクセス代理実行装置2から再度送信されたものと判定し、受信したレスポンスをアプリケーションタスク実行部112に通知することなく破棄する。
【0205】
これにより、本実施の形態における情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生をより防止することが可能になる。
【0206】
[第2の実施の形態の詳細]
次に、第2の実施の形態の詳細について説明を行う。
図31から
図34は、第2の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。また、
図35は、第2の実施の形態におけるストリームデータ処理の詳細を説明する図である。
【0207】
[第1レスポンス受信処理]
初めに、第2の実施の形態における第1レスポンス受信処理について説明を行う。
【0208】
固有情報抽出部219は、
図31に示すように、例えば、外部システム3から送信されたレスポンスをレスポンス受信部218が受信するまで待機する(S101のNO)。
【0209】
そして、外部システム3から送信されたレスポンスをレスポンス受信部218が受信した場合(S101のYES)、固有情報抽出部219は、例えば、受信したレスポンスに含まれるリクエストIDを復元する(S102)。
【0210】
さらに、固有情報抽出部219及び特定情報付加部220は、例えば、S101の処理で受信したレスポンスに対して、S101の処理で受信したレスポンスに含まれる実行時固有情報及びレスポンス特定情報を付加する(S103)。
【0211】
具体的に、固有情報抽出部119は、例えば、S101の処理で受信したレスポンス(S101の処理で受信したレスポンスのリクエストID以外の項目)において実行時固有情報を設定する。
【0212】
また、特定情報付加部220は、例えば、S101の処理で受信したレスポンスが格納されていたキュー6における格納位置(オフセット)をレスポンス特定情報として特定する。そして、特定情報付加部220は、例えば、S101の処理で受信したレスポンスにおいてレスポンス特定情報を設定する。
【0213】
すなわち、特定情報付加部220は、例えば、S101の処理で受信したレスポンスに対して、S101の処理で受信したレスポンスの外部システム3からの送信順(キュー6への到着順)を示す情報であるレスポンス特定情報を付加する。
【0214】
その後、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231を参照し、S102の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しているか否かを判定する(S104)。
【0215】
その結果、S102の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在すると判定した場合(S104のYES)、リクエスト管理部214は、S101の処理で受信したレスポンスに対して、S101の処理で受信したレスポンスに対応するリクエストについての必要な情報を付加する(S106)。
【0216】
続いて、S101の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S107)。
【0217】
その結果、S101の処理で受信したレスポンスが最終レスポンスであると判定した場合(S107のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231のうち、S104の処理で存在すると判定したリクエスト管理情報231を削除する(S108)。
【0218】
一方、S101の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S107のNO)、リクエスト管理部214は、S108の処理を行わない。
【0219】
そして、レスポンス処理部221は、例えば、S106の処理で情報を付加したレスポンスのペイロードの生成(変換)を行う(S109)。
【0220】
その後、レスポンス送信部222は、例えば、S109の処理で変換を行ったレスポンスをキュー5に送信する(S110)。
【0221】
一方、S102の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しないと判定した場合(S104のNO)、リクエスト管理部214は、S104の処理で存在すると判定したリクエスト管理情報231を削除する(S105)。
【0222】
[第3レスポンス受信処理]
次に、第2の実施の形態におけるストリームデータ処理のうち、情報処理装置1が外部システム3から送信されたレスポンスを受信した場合に行う処理であって、第2レスポンス受信処理の前に行われる処理(以下、第3レスポンス受信処理とも呼ぶ)について説明を行う。
【0223】
重複判定部117は、
図32に示すように、例えば、アクセス代理実行装置2から送信されたレスポンスをレスポンス受信部115が受信するまで待機する(S111のNO)。
【0224】
そして、アクセス代理実行装置2から送信されたレスポンスをレスポンス受信部115が受信した場合(S111のYES)、重複判定部117は、例えば、情報格納領域130に記憶したリクエスト管理情報131を参照し、受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在するか否かを判定する(S112)。
【0225】
その結果、S111の処理で受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在すると判定した場合(S112のYES)、重複判定部117は、例えば、存在すると判定したリクエスト管理情報131にレスポンス特定情報133が含まれているか否かを判定する(S114)。レスポンス特定情報133は、後述するS133の処理において情報格納領域130に記憶されるレスポンス特定情報である。
【0226】
そして、リクエスト管理情報131にレスポンス特定情報133が含まれていないと判定した場合(S114のNO)、重複判定部117は、
図34に示すように、S111の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S131)。
【0227】
その結果、S111の処理で受信したレスポンスが最終レスポンスであると判定した場合(S131のYES)、重複判定部117は、例えば、情報格納領域130に記憶したリクエスト管理情報131のうち、S112の処理で存在すると判定したリクエスト管理情報131を削除する(S132)。
【0228】
一方、S111の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S131のNO)、重複判定部117は、例えば、S111の処理で受信したレスポンスに含まれるレスポンス特定情報をレスポンス特定情報133として情報格納領域130に記憶する(S133)。
【0229】
具体的に、リクエスト管理部113は、
図35に示すように、例えば、S112の処理で存在すると判定したリクエスト管理情報131の一部としてレスポンス特定情報133を情報格納領域130に記憶する。
【0230】
そして、S132またはS133の処理の後、重複判定部117は、例えば、S111の処理で受信したレスポンスをアプリケーションタスク実行部112に通知する(S134)。
【0231】
一方、リクエスト管理情報131にレスポンス特定情報133が含まれていると判定した場合(S114のYES)、リクエスト管理部113は、例えば、S111の処理で受信したレスポンスに含まれるレスポンス特定情報がS112の処理で存在すると判定したリクエスト管理情報131に含まれるレスポンス特定情報133よりも大きいか否かを判定する(S115)。
【0232】
その結果、S111の処理で受信したレスポンスに含まれるレスポンス特定情報がS112の処理で存在すると判定したリクエスト管理情報131に含まれるレスポンス特定情報133よりも大きいと判定した場合(S115のYES)、重複判定部117は、例えば、S112の処理で存在すると判定したリクエスト管理情報131に含まれるレスポンス特定情報133を、S81の処理で受信したレスポンスに含まれるレスポンス特定情報に更新する(S116)。
【0233】
そして、重複判定部117は、
図33に示すように、S111の処理で受信したレスポンスをアプリケーションタスク実行部112に通知する(S121)。
【0234】
その後、重複判定部117は、S111の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S122)。
【0235】
その結果、S111の処理で受信したレスポンスが最終レスポンスであると判定した場合(S122のYES)、重複判定部117は、例えば、情報格納領域230に記憶したリクエスト管理情報131のうち、S112の処理で存在すると判定したリクエスト管理情報131を削除する(S123)。
【0236】
一方、S111の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S122のNO)、リクエスト管理部214は、S123の処理を行わない。
【0237】
また、重複判定部117は、例えば、S111の処理で受信したレスポンスに含まれるレスポンス特定情報がS112の処理で存在すると判定したリクエスト管理情報131に含まれるレスポンス特定情報133よりも大きくないと判定した場合(S115のNO)、S111の処理で受信したリクエストを破棄する(S113)。
【0238】
すなわち、情報処理装置1は、S81の処理で受信したレスポンスのレスポンス特定情報が情報格納領域130に記憶したレスポンス特定情報133よりも大きくない場合、受信済のレスポンスがアクセス代理実行装置2から再度送信されたものと判定し、S81の処理で受信したレスポンスを破棄する。
【0239】
これにより、本実施の形態における情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生をより防止することが可能になる。
【0240】
なお、重複判定部117は、例えば、S111の処理で受信したレスポンスに含まれるリクエストIDに対応するリクエスト管理情報131が存在しないと判定した場合についても同様に(S112のNO)、S111の処理で受信したリクエストを破棄する(S113)。
【0241】
[第3の実施の形態の概略]
次に、第3の実施の形態の概略について説明する。
図36は、外部システム3に対するアクセスを説明する図である。また、
図37は、第3の実施の形態におけるストリームデータ処理の概略を説明する図である。なお、以下、第1の実施の形態におけるストリームデータ処理を異なる点について説明を行う。
【0242】
図36に示すように、例えば、障害に発生に伴うリカバリによって、アクセス代理実行装置2の内部状態が時点CPまで戻った場合、アクセス代理実行装置2は、時点CPよりも後に取得が行われたリクエスト(1)をキュー5から再度取得し、キュー6を介して外部システム3に送信するとともに、時点CPよりも後に取得が行われたレスポンス(1)をキュー6から再度取得し、キュー5を介して情報処理装置1に送信する。
【0243】
この場合において、アクセス代理実行装置2では、レスポンス(1)(再)をリクエスト(1)(再)よりも先に取得する可能性がある。そのため、アクセス代理実行装置2では、レスポンス(1)(再)を受信した場合であっても、リクエスト(1)(再)に対応するリクエスト管理情報231が存在しないため、受信したレスポンス(1)(再)を破棄する可能性がある。したがって、情報処理装置1では、この場合、リクエスト(1)に対する全てのレスポンスを受信することができなくなり、リクエスト(1)に対応するレスポンスの不整合が発生する。
【0244】
そこで、第3の実施の形態におけるアクセス代理実行装置2は、
図37に示すように、情報処理装置1から送信されたリクエストよりも先に外部システム3から送信されたレスポンスを受信した場合、受信したレスポンスに対応するリクエストを受信するまで待機する。
【0245】
これにより、本実施の形態における情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生をより防止することが可能になる。
【0246】
[第3の実施の形態の詳細]
次に、第3の実施の形態の詳細について説明を行う。
図38から
図41は、第3の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。なお、以下、リクエストの受信まで待機しているレスポンスを待機レスポンスとも呼ぶ。
【0247】
[リクエスト受信処理]
次に、第3の実施の形態におけるリクエスト受信処理について説明を行う。
【0248】
リクエスト管理部214は、
図38に示すように、例えば、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信するまで待機する(S141のNO)。
【0249】
そして、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信した場合(S141のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231を参照し、S141の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在するか否かを判定する(S142)。
【0250】
その結果、S141の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在すると判定した場合(S142のYES)、リクエスト管理部214は、例えば、S141の処理で受信したリクエストを破棄する(S143)。
【0251】
一方、S141の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在しないと判定した場合(S142のNO)、リクエスト管理部214は、例えば、待機レスポンス用キュー(図示せず)において、S141の処理で受信したリクエストに含まれるリクエストIDに対応する待機レスポンスが存在しているか否かを判定する(S144)。
【0252】
その結果、S141の処理で受信したリクエストに含まれるリクエストIDに対応する待機レスポンスが存在していると判定した場合(S144のYES)、リクエスト管理部214は、例えば、存在すると判定した待機レスポンスを先頭から1つ取得する(S145)。
【0253】
続いて、レスポンス送信部222は、例えば、S145の処理で取得した待機レスポンスをキュー5に送信する(S146)。
【0254】
具体的に、レスポンス送信部222は、例えば、S145の処理で取得した待機レスポンスのペイロードの生成(変換)を行い、変換を行ったレスポンスをキュー5に送信する。
【0255】
そして、S141の処理で受信したリクエストに含まれるリクエストIDに対応する待機レスポンスを全て取得した場合(S147のYES)、アクセス代理実行装置2は、リクエスト受信処理を終了する。
【0256】
一方、S141の処理で受信したリクエストに含まれるリクエストIDに対応する待機レスポンスの全てを取得していない場合(S147のNO)、リクエスト管理部214は、S145以降の処理を再度行う。
【0257】
また、S141の処理で受信したリクエストに含まれるリクエストIDに対応する待機レスポンスが存在しないと判定した場合(S144のNO)、固有情報生成部213は、
図39に示すように、例えば、S141の処理で受信したリクエストに対応する実行時固有情報を生成する(S151)。
【0258】
続いて、リクエスト管理部214は、例えば、S151の処理で生成した実行時固有情報を含む各情報をリクエスト管理情報231として情報格納領域230に記憶する(S152)。
【0259】
そして、リクエスト処理部215は、例えば、S152の処理で受信したリクエストのペイロードの生成(変換)を行う(S153)。
【0260】
さらに、識別子変換部216は、例えば、S152の処理で受信したリクエストに含まれるリクエストIDを変換する(S154)。
【0261】
その後、リクエスト送信部217は、例えば、S154の処理でリクエストIDを変換したリクエストをキュー6に送信する(S155)。
【0262】
[第1レスポンス受信処理]
次に、第3の実施の形態における第1レスポンス受信処理について説明を行う。
【0263】
固有情報抽出部219は、
図40に示すように、例えば、外部システム3から送信されたレスポンスをレスポンス受信部218が受信するまで待機する(S161のNO)。
【0264】
そして、外部システム3から送信されたレスポンスをレスポンス受信部218が受信した場合(S161のYES)、固有情報抽出部219は、例えば、受信したレスポンスに含まれるリクエストIDを復元する(S162)。
【0265】
さらに、固有情報抽出部219は、例えば、S161の処理で受信したレスポンスに対して、S161の処理で受信したレスポンスに含まれる実行時固有情報を付加する(S163)。
【0266】
その後、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231を参照し、S162の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しているか否かを判定する(S164)。
【0267】
その結果、S162の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在すると判定した場合(S164のYES)、リクエスト管理部214は、例えば、S161の処理で受信したレスポンスに対して、S161の処理で受信したレスポンスに対応するリクエストについての必要な情報を付加する(S166)。
【0268】
続いて、リクエスト管理部214は、例えば、S161の処理で受信したレスポンスが最終レスポンスであるか否かを判定する(S167)。
【0269】
その結果、S161の処理で受信したレスポンスが最終レスポンスであると判定した場合(S167のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエスト管理情報231のうち、S164の処理で存在すると判定したリクエスト管理情報231を削除する(S168)。
【0270】
一方、S161の処理で受信したレスポンスが最終レスポンスでないと判定した場合(S167のNO)、リクエスト管理部214は、S168の処理を行わない。
【0271】
そして、レスポンス処理部221は、例えば、S166の処理で情報を付加したレスポンスのペイロードの生成(変換)を行う(S169)。
【0272】
その後、レスポンス送信部222は、例えば、S169の処理で変換を行ったレスポンスをキュー5に送信する(S170)。
【0273】
一方、S162の処理で復元したリクエストIDを含むリクエストに対応するリクエスト管理情報231が存在しないと判定した場合(S164のNO)、リクエスト管理部214は、例えば、S161の処理で受信したレスポンスを待機レスポンスとして待機レスポンス用キューに追加する(S165)。
【0274】
すなわち、リクエスト管理部214は、この場合、S161の処理で受信したレスポンスを待機レスポンスとすることにより、S161の処理で受信したレスポンスに対応するリクエストを待ち合わせる。
【0275】
これにより、本実施の形態における情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生をより防止することが可能になる。
【0276】
[レスポンス削除処理]
次に、第3の実施の形態におけるストリームデータ処理のうち、待機レスポンス用キューに格納された待機レスポンスを削除する処理(以下、レスポンス削除処理とも呼ぶ)について説明を行う。
【0277】
リクエスト管理部214は、
図41に示すように、例えば、判定タイミングになるまで待機する(S171のNO)。判定タイミングは、例えば、1分間隔等の定期的なタイミングであってよい。
【0278】
そして、判定タイミングになった場合(S171のYES)、リクエスト管理部214は、例えば、待機レスポンス用キューの格納された待機メッセージのうち、キューに格納されてから経過した時間が所定時間以上である待機レスポンスが存在するか否かを判定する(S172)。
【0279】
その結果、キューに格納されてから経過した時間が所定時間以上である待機レスポンスが存在すると判定した場合(S172のYES)、リクエスト管理部214は、例えば、待機レスポンス用キューの格納された待機メッセージのうち、キューに格納されてから経過した時間が所定時間以上である待機レスポンスを削除する(S173)。
【0280】
一方、キューに格納されてから経過した時間が所定時間以上である待機レスポンスが存在しないと判定した場合(S172のNO)、リクエスト管理部214は、S173の処理を行わない。
【0281】
[第4の実施の形態の概略]
次に、第4の実施の形態の概略について説明する。
図42は、外部システム3に対するアクセスを説明する図である。また、
図43は、第4の実施の形態におけるストリームデータ処理の概略を説明する図である。なお、以下、第1の実施の形態におけるストリームデータ処理を異なる点について説明を行う。
【0282】
図42に示すように、例えば、障害に発生に伴うリカバリによって、情報処理装置1の内部状態が時点CPまで戻った場合、情報処理装置1は、時点CPよりも後に送信したリクエストをキュー5に対して再度送信する。
【0283】
そのため、この場合、外部システム3に対してリクエスト(1)が2回送信されることになり、外部システム3は、リクエスト(1)に対応するレスポンス(1)に加え、リクエスト(1)(再)に対応するレスポンス(1)(再)を情報処理装置1に送信する。すなわち、情報処理装置1では、この場合、同一内容のレスポンスであるレスポンス(1)とレスポンス(1)(再)とを受信することになり、リクエスト(1)に対応するレスポンスの不整合が発生する。
【0284】
そこで、第4の実施の形態におけるアクセス代理実行装置2は、
図43に示すように、情報処理装置1からリクエストを受信した場合、受信したリクエストに含まれるリクエストIDを記憶する。そして、アクセス代理実行装置2は、記憶したリクエストIDを有する他のリクエストを情報処理装置1から受信した場合、受信した他のリクエストをキュー6に送信することなく破棄する。
【0285】
すなわち、アクセス代理実行装置2は、過去に受信したリクエストと同一のリクエストIDを有するリクエストを受信した場合、同一のリクエストが情報処理装置1から送信されたと判定し、受信したリクエストを破棄する。
【0286】
これにより、本実施の形態における情報処理装置1は、外部システム3から送信されたレスポンスについての不整合の発生をより防止することが可能になる。
【0287】
[第4の実施の形態の詳細]
次に、第4の実施の形態の詳細について説明を行う。
図44及び
図45は、第4の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。また、
図46は、第4の実施の形態におけるストリームデータ処理の詳細を説明する図である。
【0288】
[リクエスト受信処理]
次に、第4の実施の形態におけるリクエスト受信処理について説明を行う。
【0289】
リクエスト管理部214は、
図44に示すように、例えば、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信するまで待機する(S181のNO)。
【0290】
そして、情報処理装置1から送信されたリクエストをリクエスト受信部211が受信した場合(S181のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエストID情報232を参照し、S181の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在するか否かを判定する(S182)。
【0291】
その結果、S181の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在すると判定した場合(S182のYES)、リクエスト管理部214は、例えば、S181の処理で受信したリクエストを破棄する(S183)。
【0292】
一方、S181の処理で受信したリクエストに含まれるリクエストIDに対応するリクエスト管理情報231が存在しないと判定した場合(S182のNO)、リクエスト管理部214は、例えば、S181の処理で受信したリクエストに含まれるリクエストIDをリクエストID情報232として情報格納領域230に記憶する(S184)。以下、リクエストID情報232の具体例について説明を行う。
【0293】
[リクエストID情報の具体例]
図46は、リクエストID情報232の具体例について説明する図である。
【0294】
図46に示すリクエストID情報には、「リクエストID」として「b0db6333-6196-4a76-ab0a-ced4d6dd9593」と「7fc986ee-49b4-4c31-b09b-2ca0ba1df969」とが記憶されている。
【0295】
図44に戻り、固有情報生成部213は、例えば、S181の処理で受信したリクエストに対応する実行時固有情報を生成する(S185)。
【0296】
続いて、リクエスト管理部214は、例えば、S185の処理で生成した実行時固有情報を含む各情報をリクエスト管理情報231として情報格納領域230に記憶する(S186)。
【0297】
そして、リクエスト処理部215は、例えば、S181の処理で受信したリクエストのペイロードの生成(変換)を行う(S187)。
【0298】
さらに、識別子変換部216は、例えば、S181の処理で受信したリクエストに含まれるリクエストIDを変換する(S188)。
【0299】
その後、リクエスト送信部217は、例えば、S188の処理でリクエストIDを変換したリクエストをキュー6に送信する(S189)。
【0300】
[ID削除処理]
次に、第4の実施の形態におけるストリームデータ処理のうち、リクエストID情報232に含まれるリクエストIDを削除する処理(以下、ID削除処理とも呼ぶ)について説明を行う。
【0301】
リクエスト管理部214は、
図45に示すように、例えば、判定タイミングになるまで待機する(S191のNO)。判定タイミングは、例えば、1分間隔等の定期的なタイミングであってよい。
【0302】
そして、判定タイミングになった場合(S191のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエストID情報232に含まれるリクエストIDのうち、リクエストID情報232として記憶されてから経過した時間が所定時間以上であるリクエストIDが存在するか否かを判定する(S192)。
【0303】
その結果、リクエストID情報232として記憶されてから経過した時間が所定時間以上であるリクエストIDが存在すると判定した場合(S192のYES)、リクエスト管理部214は、例えば、情報格納領域230に記憶したリクエストID情報232に含まれるリクエストIDのうち、リクエストID情報232として記憶されてから経過した時間が所定時間以上であるリクエストIDを削除する(S193)。
【0304】
一方、リクエストID情報232として記憶されてから経過した時間が所定時間以上であるリクエストIDが存在しないと判定した場合(S192のNO)、リクエスト管理部214は、S193の処理を行わない。
【0305】
以上の実施の形態をまとめると、以下の付記のとおりである。
【0306】
(付記1)
第1情報処理装置と、前記第1情報処理装置とアクセス可能な第2情報処理装置と、を有するデータ処理システムであって、
前記第1情報処理装置は、
処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、
前記データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を前記第2情報処理装置に送信し、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記他の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【0307】
(付記2)
付記1において、
前記第2情報処理装置は、
前記データに対するタスクの実行に伴って他の情報処理システムに対して実行される第2処理要求の受信に応じて、前記第2処理要求に含まれる第2識別子を可逆変換可能な第2変換識別子に変換し、
変換した前記第2変換識別子を含む前記第2処理要求を前記他の情報処理システムに送信し、
前記第2処理要求に対応する処理の第2実行結果の受信に応じて、前記第2実行結果に含まれる前記第2変換識別子を前記第2識別子に再変換し、
再変換した前記第2識別子と前記第2変換識別子とを含む前記第2実行結果を前記第1情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1変換識別子と前記第2変換識別子とが同一であるか否かを判定し、
前記第1変換識別子と前記第2変換識別子とが異なると判定した場合、前記第1実行結果と前記第2実行結果とのうちのいずれかを破棄する、
ことを特徴とするデータ処理システム。
【0308】
(付記3)
付記2において、
前記第1情報処理装置は、前記第1変換識別子と前記第2変換識別子とが異なると判定した場合、前記第1実行結果及び前記第2実行結果のうち、前記第2情報処理装置から後に受信した実行結果を破棄する、
ことを特徴とするデータ処理システム。
【0309】
(付記4)
付記2において、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1変換識別子の生成タイミングを示す第1付加識別子を前記第1識別子に付加することによって前記第1変換識別子を生成し、
前記第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子と前記第1付加識別子とに分割し、
前記第1識別子と前記第1付加識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【0310】
(付記5)
付記4において、
前記第2情報処理装置は、
前記第2処理要求の受信に応じて、前記第2変換識別子の生成タイミングを示す第2付加識別子を前記第2識別子に付加することによって前記第2変換識別子を生成し、
前記第2実行結果の受信に応じて、前記第2実行結果に含まれる前記第2変換識別子を前記第2識別子と前記第2付加識別子とに分割し、
前記第2識別子と前記第2付加識別子とを含む前記第2実行結果を前記第1情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1付加識別子と前記第2付加識別子が同一であるか否かを判定し、
前記第1付加識別子と前記第2付加識別子とが異なると判定した場合、前記第1実行結果と前記第2実行結果とのうちのいずれかを破棄する、
ことを特徴とするデータ処理システム。
【0311】
(付記6)
付記4において、
前記第1付加識別子は、前記第2情報処理装置が前記第1処理要求を受信した時刻を示すタイムスタンプであり、
前記第2付加識別子は、前記第2情報処理装置が前記第2処理要求を受信した時刻を示すタイムスタンプである、
ことを特徴とするデータ処理システム。
【0312】
(付記7)
付記2において、
前記第2情報処理装置は、前記第1識別子と前記第1実行結果の前記他の情報処理システムからの送信順とを含む前記第1実行結果を前記第1情報処理装置に送信する、
ことを特徴とするデータ処理システム。
【0313】
(付記8)
付記7において、
前記第2情報処理装置は、前記第2識別子と前記第2実行結果の前記他の情報処理システムからの送信順とを含む前記第2実行結果を前記第2情報処理装置に送信し、
前記第1情報処理装置は、
前記第1実行結果と前記第2実行結果との受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1実行結果に対応する前記送信順と前記第2実行結果に対応する前記送信順とを比較し、
前記第2実行結果を前記第1実行結果の後に受信した場合であって、前記第2実行結果に対応する前記送信順が前記第1実行結果に対応する前記送信順の後でない場合、前記第2実行結果を破棄する、
ことを特徴とするデータ処理システム。
【0314】
(付記9)
付記1において、
前記第2情報処理装置は、前記第1処理要求よりも先に前記第1実行結果を受信した場合、前記第1処理要求を受信するまで待機する、
ことを特徴とするデータ処理システム。
【0315】
(付記10)
付記2において、
前記第2情報処理装置は、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる前記第1識別子を記憶部に記憶し、
前記第2処理要求の受信に応じて、前記記憶部に記憶した前記第1識別子と前記第2処理要求に含まれる前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第2処理要求を前記他の情報処理システムに送信することなく破棄する、
ことを特徴とするデータ処理システム。
【0316】
(付記11)
第1情報処理装置と、前記第1情報処理装置とアクセス可能な第2情報処理装置と、を有するデータ処理システムにおけるデータ処理方法であって、
処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、
前記データに対するタスクの実行に伴って他の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を前記第2情報処理装置に送信する、
処理を前記第1情報処理装置が実行し、
前記第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記他の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記第1情報処理装置に送信する処理を実行する、
処理を前記第2情報処理装置が実行することを特徴とするデータ処理方法。
【0317】
(付記12)
他の情報処理装置から特定の情報処理システムに対する第1処理要求の受信に応じて、前記第1処理要求に含まれる第1識別子を可逆変換可能な第1変換識別子に変換し、
変換した前記第1変換識別子を含む前記第1処理要求を前記特定の情報処理システムに送信し、
前記第1処理要求に対応する処理の第1実行結果の前記特定の情報処理システムからの受信に応じて、前記第1実行結果に含まれる前記第1変換識別子を前記第1識別子に再変換し、
再変換した前記第1識別子と前記第1変換識別子とを含む前記第1実行結果を前記他の情報処理装置に送信する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
【0318】
(付記13)
処理対象のデータを受信したことに応じて、受信した前記データに対するタスクを実行し、
前記データに対するタスクの実行に伴って特定の情報処理システムに対して第1処理要求を行う処理が実行される場合、前記第1処理要求を他の情報処理装置に送信し、
前記データに対するタスクの実行に伴って特定の情報処理システムに対して第2処理要求を行う処理が実行される場合、前記第2処理要求を前記他の情報処理装置に送信し、
前記第1処理要求に含まれる第1識別子と前記他の情報処理装置が前記第1識別子を可逆変換可能に変換した第1変換識別子とを含む、前記第1処理要求に対応する処理の第1実行結果と、前記第2処理要求に含まれる第2識別子と前記他の情報処理装置が前記第2識別子を可逆変換可能に変換した第2変換識別子とを含む、前記第2処理要求に対応する処理の第2実行結果との前記他の情報処理装置からの受信に応じて、前記第1識別子と前記第2識別子とが同一であるか否かを判定し、
前記第1識別子と前記第2識別子とが同一であると判定した場合、前記第1変換識別子と前記第2変換識別子とが同一であるか否かを判定し、
前記第1変換識別子と前記第2変換識別子とが異なると判定した場合、前記第1実行結果と前記第2実行結果とのうちのいずれかを破棄する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
【符号の説明】
【0319】
1:情報処理装置 2a:キュー
2b:キュー 10:情報処理システム
DT:センサデータ T1:タスク
T1a:記憶装置 T2:タスク
T2a:記憶装置 T3:タスク
T3a:記憶装置