JP2015527658A - 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 - Google Patents
分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 Download PDFInfo
- Publication number
- JP2015527658A JP2015527658A JP2015524671A JP2015524671A JP2015527658A JP 2015527658 A JP2015527658 A JP 2015527658A JP 2015524671 A JP2015524671 A JP 2015524671A JP 2015524671 A JP2015524671 A JP 2015524671A JP 2015527658 A JP2015527658 A JP 2015527658A
- Authority
- JP
- Japan
- Prior art keywords
- message
- sequence
- rank
- outbound
- messages
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信するステップ;および
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理すべきメッセージであるかを判断するステップを含み、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理すべきメッセージであると判断された場合、その着信メッセージを共有キューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、共有キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する。
・ 前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
・ メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を含み、
・ メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され;
・ メッセージランクがシーケンスランクよりも大きい場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージとは判断しない。
・ 別の着信メッセージがストレージ層に格納されているか、インバウンドハンドラによって受信されている場合;および
・ 前記シーケンスのメッセージに対する受け手の応答が、アウトバウンドハンドラによって受信され、処理されている場合。アウトバウンドハンドラが受け手から応答(肯定応答)を受信した場合、シーケンス、対応するランク、もしあれば、前記シーケンスに送信する次のメッセージを探す時間、およびランクのインクリメントはロックされる。
・ それぞれが、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラ;
・ それぞれが、複数の着信メッセージを独立して処理し、転送する、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラ;および
・ ストレージ層を含み、前記ストレージ層は、少なくとも1つのメモリと:
・ 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
・ シーケンスストレージ、を含み、前記シーケンスストレージは、着信メッセージのシーケンスのステータスを維持し、更新するシーケンスステータスコンテキスト(802)、およびインバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成されたオーバーフローストレージ、を含む。
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下の処理を実行するよう構成されている。
シーケンスステータスが、アウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージ格納し、さらなる処理のために保持する。
・ 複数の並列インバウンドハンドラのうちの1つのインバウンドハンドラにおいて着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし;
・ 前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断し;
シーケンスステータスが、複数の並列アウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し;
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し;
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む。
・ インバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し、前記シーケンス内の着信メッセージの順序を示すメッセージランクを判断し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし:
シーケンスステータスがいずれのアウトバウンドハンドラも、前記シーケンスのメッセージを現時点で処理していないことを示し;
受信した着信メッセージが、シーケンス内でのメッセージランクを示す如何なるインデックスも付与されておらず、シーケンスストレージが前記シーケンスの処理すべきメッセージを未だに含んでいない場合;あるいは、
受信した着信メッセージは、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクと同等)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義し;
次に、着信メッセージをキューストレージに転送し、続いて、それを処理が可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、または、受信した着信メッセージが、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクよりも大きい)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義する場合、次に、着信メッセージをさらなる処理のためにオーバーフローストレージに格納する。
・ 十分なインタフェースを介して、メッセージまたはサービスコールのエミッタ/送り手によって明示的に提供される。例えば、メッセージは、そのシーケンス内のメッセージのランクを定義するインデックスを有するフィールドを含む;または
・ シーケンス内のメッセージまたはサービスコールを、時間を超過して受信する場合の順序を使用して非明示的に提供される。
・ アウトバウンドハンドラ層がシーケンスの次のメッセージを待っている状態(つまり、シーケンスステータスが「待ち(Waiting)」)であることを、シーケンスステータスが示した場合、着信メッセージ501が、アウトバウンドハンドラ530の標準的動作により通常通り処理(522)される(メッセージは非同期処理可能となる);
・ あるいは、シーケンスのメッセージが現在、処理中である、つまり、シーケンスステータスが「処理中(Processing)」とシーケンスステータスが示す場合、着信メッセージ501は、後に処理(524)を受けるため、特定のシーケンスオーバーフローストレージ領域540に格納される。オーバーフローストレージ領域540は、着信メッセージの順序が失われないように構成/インデックス付けされる。このように、着信メッセージ501は、さらなる処理のために保持され、即時処理のために使用可能とはならない(シーケンスから除外)。
・ 「ポストおよびクイット」の原則を利用して、別の処理(肯定応答処理)は肯定応答を受信する役割を担いながら、メッセージがポストされ、肯定応答を待つことなく処理を行う、全面的な非同期配信処理を実行し、それによって非常に高度なメッセージスループットによる処理が可能になる;
・ および、全面的な分散処理を実行し、シーケンスとインバウンド/アウトバウンドハンドラ間の類似性を取り除くことによって、インバウンド/アウトバウンドハンドラは、どのシーケンスのメッセージの取扱いも可能になる。
・ インバウンドハンドラのメッセージ受け入れのキュー処理、およびアウトバウンドハンドラ層のメッセージ処理のキュー処理は、本発明によって達成されるので、シーケンスの保持をサポートする必要はない;
・ メッセージの並列ストレージおよび並列取得(つまり、キューイング/デキューイング)は、完全に維持される;
・ 非制限的な実施形態によると、キューストレージ自体は、ノードに対してローカルになることができ、オーバーフローストレージ領域は、グローバルなままである(つまり、すべてのアウトバウンドハンドラに共有されている)。どのノードも与えられたシーケンスを処理することができるので、オーバーフローストレージは共有される必要があり、オーバーフローストレージは一意的なオーバーフロー領域にアクセスし、ストレージにおいて実際にキューおよびデキューイングを行う。キューストレージがすべてのアウトバウンドハンドラによって共有されない場合、単独のアウトバウンドハンドラまたは複数のアウトバウンドハンドラに専有とすることができる。キューストレージがすべてのアウトバウンドハンドラに共有されない場合、各メッセージは、1つのローカルのキューストレージのみによって受信される;
・ メッセージは、ステータスが変更されてオーバーフロー領域に配置するので、例外キューの必要がなく、拒絶メッセージのストレージは容易である。
与えられた伝送チャネルにおいて共有されるメッセージまたはイベントのフロー中で、関連メッセージのセットは、シーケンスが優先されるので、明確に定義される必要がある。図6は、エミットシステム610およびプロセスシステム630間の伝送および処理チャネル620内で、シーケンスを識別する処理を例証するフローチャートである。
特定の順序によって処理される必要のあるメッセージは、以下の2種類に分類される:
・ 第1種類のメッセージは、シーケンス内の順序またはランクがメッセージの作成時に判明し、メッセージの総数も、メッセージの作成時に判明することが好ましく、生成処理は、各メッセージの伝送要素に特定のメッセージランク番号を割り当てることができる。このメッセージランク番号は、次に、全体的なチェーンの一部として、最終処理が実行されるまで、各処理によって運ばれ、格納される;
・ 第2種類のメッセージのシーケンス内の順序は、生成時に判断される。これらの第2種類のメッセージの処理は通常、インクリメンタルであり、つまり、処理内の各新規メッセージ(またはイベント)は、シーケンス内の前のメッセージの処理結果を変更する。その点において、メッセージのエミットシステムは、与えられたシーケンス内のメッセージランクもメッセージの数も把握しておらず、シーケンス内のメッセージの総数も把握していない。
分かり易くするために、この記述では、与えられたシーケンス内のメッセージのメッセージランク番号をメッセージランクと呼ぶ。
図7に例証するように、非同期分散処理システムは以下を含む:
・ 複数のインバウンドハンドラ710、720、…、740が、インバウンドハンドラ層を形成する。インバウンドハンドラは着信メッセージ711、721、731、および741を受信し、それらを個別にキューストレージ750に格納し、これら着信メッセージ711、721、731、および741を問題なく受信したことを示す肯定応答を、エミットシステムに送る;
・ 複数のアウトバウンドハンドラ760、770、…、790が、アウトバウンドハンドラ層を形成する。各アウトバウンドハンドラはキューストレージ750からメッセージを取得し、それらを処理するよう構成される。アウトバウンドハンドラはまた、処理済みメッセージのアプリケーションへの転送を担当する。
・ ミューテックスとも呼ばれる、集中型、または共有型シーケンスであるミューテックス804は、一度に、1つのハンドラのみが、与えられたシーケンス(または同じシーケンス相関値が付与されたもの)のメッセージを取り扱うことを確実にし、競合する場合、先着順とする;
・ ステータスとも呼ばれる、集中型または共有型シーケンスステータスコンテキスト802は、すべての処理の間のシーケンスステータスの共有を維持し、シーケンスは、シーケンス自体のシーケンス相関値により一意的に識別される。ステータスはまた、与えられたシーケンスの各イベントに対し、適用する動作を決定することができる;
・ 「待ち(waiting)」ステータスは、次の着信メッセージを配信のためにキューに入れることを意味する;
・ 「配信中(delivering)」ステータスは、次の着信メッセージが保持されていることを意味する;
・ オーバーフロー、またはオーバーフローストレージ領域とも呼ばれる集中型または共有型オーバーフローストレージ806は、複数のアウトバウンドハンドラによって次に処理されるメッセージのみが、それらにアクセスできることを確実にし、他はこのオーバーフロー領域において「保留(pending)」とする。オーバーフローストレージは、インデックス付けされ、順序づけされた、現在のシーケンスステータスに関して、配信される準備ができていないシーケンスメッセージである。
・ すべての分散処理が同じノードで実行される場合は、メモリーデータ、またはファイルベースのストレージ;または
・ サーバシステムが遠隔システムであるいくつかのノードで分散処理が実行される場合は、クライアント/サーバストレージデータベース。
・ キューストレージ850は、複数のインバウンドハンドラと複数のアウトバウンドハンドラの間のメッセージの交換を可能にし、シーケンスストレージ800から独立して動作し;
・ シーケンスストレージ800のオーバーフローストレージ806は、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890間のメッセージ交換のシーケンシングを確実にする。
・ メッセージ801−1は、シーケンス相関値「A」に属し、インバウンドハンドラ810により受信する;
・ インバウンドハンドラ810は、812に示すように、シーケンス「A」のミューテックス804をロックし、すべてのインバウンドハンドラ、またはアウトバウンドハンドラが、シーケンス相関値が「A」のメッセージを取り扱うことを防ぐ;
・ インバウンドハンドラ810は、814に示すように、シーケンス「A」の中央ステータスコンテキスト802に、シーケンスが存在しないか、シーケンスが「待ち(Waiting)」ステータスであるかをチェックする;
・ インバウンドハンドラ810は、814に示すように、シーケンス「A」のステータスコンテキスト802を「処理中(Processing)」に設定する。本発明は、着信メッセージに、先に受信したメッセージに1をプラスしてインクリメントしたランクと同じ、メッセージランクを付与する。着信メッセージはこのシーケンスの最初のメッセージであるので、メッセージに割り当てられるメッセージランクは1に設定される。メッセージランクはシーケンスストレージ800に、より正確には、シーケンスコンテキスト802に格納されるのが好ましい。インバウンドハンドラ810は、816に示すようにメッセージ851をキューストレージ850に格納することが好ましい;および
・ インバウンドハンドラ810は、メッセージエミッタに肯定応答を行い、シーケンス「A」のミューテックス804をリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
・ 第2メッセージ801−2はシーケンス「A」に属し、インバウンドハンドラ820によって受信される;
・ インバウンドハンドラ820は、822に示すように、シーケンス「A」のミューテックス804をロックし、インバウンドハンドラ810、830、または840、あるいは、アウトバウンドハンドラが、シーケンス「A」内の別のメッセージを取り扱うことを防ぐ;
・ インバウンドハンドラ820は、824に示すように、シーケンスステータスが「処理中(Processing)」であるシーケンス「A」の中央ステータスコンテキスト802をチェックする。メッセージは、どのアウトバウンドハンドラでも利用不可能なので、インバウンドハンドラ820は、826に示すように、メッセージ807をオーバーフローストレージ806に格納する。
先の着信メッセージに1をプラスしてインクリメントしたメッセージランクの値を着信メッセージにメッセージランクとして割り当てる。前のメッセージのメッセージランクが1であるので、着信メッセージに割り当てられるメッセージランクは、2となる。さらに、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。同じシーケンスからの複数のメッセージがシーケンスストレージ800に格納されている場合、これらのメッセージランクによってシステムは、キューストレージ850に転送されるべき正しいメッセージを識別することができる。正しいメッセージとは、シーケンスに定義されたシーケンスランクに対応するメッセージランクを有するメッセージである。有利なことに、これは着信メッセージがエミッタによって割り当てられたメッセージランクを有し、着信メッセージのランクが、インバウンドハンドラでの到着順にしたがって割り当てられたときに適用される;
・ インバウンドハンドラ820は、メッセージエミッタに肯定応答を行い、シーケンス「A」のミューテックスをリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
・ アウトバウンドハンドラ870のうちの1つが、871に示すように、キューストレージ850から、シーケンス「A」のメッセージ851を取得する。本発明により、このメッセージは自動的に、処理されるべきシーケンスの次のメッセージである。したがって、そのランクは最後に処理されたメッセージのランクに1をプラスしてインクリメントした値である。この例証した実施形態において、キューストレージに格納されたメッセージは、シーケンスAの最初のメッセージなので、そのランクは必然的に「1」となる;
・ アウトバウンドハンドラ870は、873に示すように、メッセージランク「1」が付与されたメッセージを、その受信者へのさらなる配信の前に、関係する受信者または、別のルーティング手段によって、配信する。一度、メッセージがステップ873によって送信されると、アウトバウンドハンドラ870が別の処理のために使用可能となる。これは、受け手から肯定応答を受信するまで、継続される。例えば、アウトバウンドハンドラ870は、他のシーケンスに関する別のメッセージを取得して送信することができるので、非同期配信を達成し、スループットが向上する。これも、エミッタのメッセージの肯定応答を受けることができる。したがって、ステップ873におけるメッセージのエミッタの応答時間によって、アウトバウンドハンドラが処理するメッセージおよび処理の数に制限がない;
・ 受け手は、ステップ873で送信されたアウトバウンドハンドラ870の配信処理8701からのメッセージを受信する。これを受けて、受け手は、肯定応答メッセージをシステムに送信する。同じアウトバウンドハンドラ870の肯定応答処理8702、または別のアウトバウンドハンドラ860の肯定応答処理8602は、肯定応答メッセージを受信する。これは、図8Cに示すステップ874に該当する。
・ アウトバウンドハンドラ860は、862に示すステータスコンテキスト802のシーケンスランクをチェックし、肯定応答したメッセージのシーケンス内で、処理すべき次のメッセージのランクを判断する。シーケンスランクは、「2」に設定されているので、アウトバウンドハンドラ860は、809に示すメッセージランク「2」を有するオーバーフローストレージ領域806からの、シーケンス「A」のメッセージ807を取得する。このメッセージ807は、次に、キューストレージ850に格納され、すべてのアウトバウンドハンドラに対し、利用可能となる。ステータスコンテキスト802は「処理中(Processing)」のままである。シーケンスランクは、インクリメントされ、「3」に設定されるので、次に処理されるメッセージは「3」と同等のメッセージランクを有することを示す;
・ アウトバウンドハンドラ860は、停止し、キューストレージ850に格納されている別のメッセージの処理を行うよう準備する;
・ 処理は、着信メッセージがすべてのシーケンスが処理され、配信されるまで、継続される。
図8A〜8Dに詳細に示した、着信メッセージが厳格なシーケンス順序に従ってインバウンドハンドラによって受信される処理に加えて、シーケンス外で受信したメッセージを処理するため、同じ処理を実行した。唯一の事実上の前提条件は、メッセージのエミッタが同じシーケンス内の各メッセージに対し、シーケンス内でのメッセージのランクを示すインデックスを提供することである。
複数のインバウンドハンドラ810、…、840、によって実行される前述の処理に加えて、インデックスの命令により行われた再配列に関するステップが追加される場合がある;
・ メッセージのインデックスにより示されるメッセージのランクは、シーケンスの順序を維持するため、次に処理されるメッセージのランクと比較される。シーケンス順序を維持するための、次に処理するメッセージのこのランクは、インクリメントして更新されるシーケンスランクによって、好ましくはシーケンスストレージにおいて示される;
・ メッセージのランクが818に示すようにシーケンスランクと一致する場合、着信メッセージ815はキューストレージ850に格納され、複数のアウトバウンドハンドラに使用可能となる。シーケンスステータスは「処理中(Processing)」に設定される。処理するシーケンスランクは、インクリメントされ、先述した処理が適用される;
・ インデックスにより示されるメッセージのランクが、シーケンスランク819を越える場合、メッセージ813は、オーバーフローストレージ806に格納される。シーケンスステータス802は「保留(Pending)」に設定される。メッセージは、事実上、処理されない。所望のメッセージランクを有する、処理すべきメッセージがインバウンドハンドラにより受信されると、シーケンシングは再開される。その場合、インバウンドハンドラは対応するメッセージをキューストレージに格納し、シーケンスステータスを「処理中(Processing)」に設定する。
前述した通り、与えられたシーケンスの受信メッセージは、これらのメッセージランクが処理すべきメッセージに合致しない限り、オーバーフロー806に格納される。これは、次と予想される処理すべきメッセージがインバウンドハンドラによって受信されない限り、シーケンス全体にとってはロック状態となる。
・ オーバーフローストレージ806およびシーケンスコンテキスト802における対応するメッセージを消去する;
・ 特定のシーケンス期限イベントに対し、十分な処理と記録を実行する;
・アイテムを順番に取るか、見つかるまで次を待つ間はアイテムを無視して、同期をずらす;
・アラームを発する。
・ 企業、より具体的には、ソフトウェア企業のインフラストラクチャのハブとし作動するアプリケーションが長時間のメッセージングを取扱うAMS(Amadeus Messaging Server)などのメッセージングサーバ。予約業務を必要とする業界では、AMSは予約システムおよび出発管理システムの両方で使用される。シーケンシングは、すべてのテレタイプのトラフィックのために実行される。テレタイプのメッセージは、通常、TTYと呼ばれる。TTYタイプBは、航空業界の標準であり、与えられた機能的コンテキストにおいて厳格な順序で処理を行う非同期チャネルを介してメッセージを交換する。例えば、第1メッセージは、搭乗客のリストを含み、第2リストは、非搭乗の乗客(suppressed passengers)を含み、第3リストは、追加の乗客のリストを含む。これらの乗客名簿は、順序を厳格に守る必要がある;
・ 別の分野の用途として、例えば、OHF(OTF high-level framework)があり、これは、保証された非同期配信を実行するための多くの用途で使用されるミドルウェアソフトウェアコンポーネントである。OHFのシーケンシングの主な使用方法として、CDB(coupon database)と電子チケット用途の間の同期化が挙げられる。限られた時間内に、1つのクーポンに多くの変更が加えられることはよくある。これらの変更は、同期を維持するため、正しい順序で、電子チケットアプリケーション、またはクーポンデータベースに転送される必要がある。
Claims (21)
- インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する方法であって:
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および
前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する、方法。 - 前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるか判断する、以下のステップを含む請求項1に記載の方法であって:
前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を有し、
メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され、
メッセージランクがシーケンスランクと同一でない場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために次に処理すべきメッセージとは判断されない、方法。 - 請求項1又は2に記載の方法であって、アウトバウンドハンドラにおける与えられたシーケンスのメッセージの処理が完了した際に、前記与えられたシーケンスのシーケンスランクがインクリメントされ、シーケンスのシーケンスランクがインクリメントされたとき、オーバーフローストレージが、インクリメントされたシーケンスランクと同一であるメッセージランクを有するメッセージを含む場合、このメッセージをキューストレージに転送する、方法。
- 請求項2又は3に記載の方法であって、受信した着信メッセージに、シーケンスのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む、方法。
- 請求項4に記載の方法であって、割り当てられたメッセージランクは、前記シーケンスに1をプラスしてインクリメントした、インバウンドハンドラの任意の1箇所において最後に受信したメッセージのランクに相当している、方法。
- 請求項1〜3の何れか1項目に記載の方法であって、インバウンドハンドラにおいて受信した着信メッセージには、シーケンス内のメッセージランクを示すインデックスが付与されている、方法。
- 請求項2〜6のいずれか1項にに記載の方法であって、キューストレージが着信メッセージのシーケンスの、どのメッセージをも含んでおらず、着信メッセージのメッセージランクがシーケンスストレージに示されたシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される、方法。
- 請求項1〜7のいずれか1項に記載の方法であって、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる、方法。
- 請求項1〜8のいずれか1項に記載の方法であって、アウトバウンドハンドラは、メッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含み、配信処理および肯定確認動作は独立している、方法。
- 請求項1〜9のいずれか1項に記載の方法であって、着信メッセージを受信してから、チェックするステップまで、すべてのインバウンドハンドラが前記シーケンスの別のメッセージを受信することを防止される、インバウンドをロックするステップを、着信メッセージがシーケンスストレージに格納されるまで、あるいは、キューストレージに送信されるまで実行し、前記インバウンドをロックするステップは、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれる、方法。
- 請求項1〜10のいずれか1項に記載の方法であって、キューストレージからアウトバウンドハンドラに着信メッセージを転送後、すべての他のアウトバウンドハンドラが前記シーケンスの別のメッセージを受信することを、着信メッセージの処理が完了するまで防止される、アウトバウンドをロックするステップを実行し、アウトバウンドをロックするステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれている、方法。
- 請求項11に記載の方法であって、アウトバウンドハンドラが利用可能であるとき、キューストレージの中の、前記メッセージのシーケンスのミューテックスをチェックし、ミューテックスがロックされていない場合のみ、前記メッセージを取得する、方法。
- 請求項2〜12の何れか1項目に記載の方法であって、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスとメッセージの何れか一方に割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される、方法。
- ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項1〜13の何れか1項目に記載の方法の実行を含む、非一時的コンピュータ可読媒体。
- 非同期メッセージをシーケンシングする分散並列型処理システムであって:
インバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラを含み、複数のインバウンドハンドラのそれぞれは、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、複数のインバウンドハンドラを含む、インバウンドハンドラ層;および、
アウトバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラを含み、複数のアウトバウンドハンドラのそれぞれは、複数の着信メッセージを独立して処理し転送するように構成されている、複数のアウトバウンドハンドラを含む、アウトバウンドハンドラ層、を含む分散並列型処理システムであって;システムは:
少なくとも1つのメモリを含むストレージ層を含み;当該ストレージ層は:
- 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
- 共有シーケンスストレージを含み;当該共有シーケンスストレージは:
- 着信メッセージの各シーケンスのステータスを維持し、更新するためのシーケンスステータスコンテキスト;および
- インバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成された共有オーバーフローストレージ;を含み、
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下のステップを実行するよう構成されたシステムであって:
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取り出すステップ;および
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージをオーバーフローストレージのメモリに格納し、さらなる処理のために保持する、ステップを実行するよう構成された非同期メッセージをシーケンシングする分散並列型処理システム。 - 複数の並列型インバウンドハンドラおよび複数の並列型アウトバウンドハンドラを有し、並列環境における少なくとも1つのサーバプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するために少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する旅行モニタリング方法であって:
複数のインバウンドハンドラのうちの1つのインバウンドハンドラにおいて、受信メッセージを含むシーケンスを特定するシーケンス相関値が伴う着信メッセージを受信するステップと;
シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップと;
前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断するステップと;を有し、
シーケンスステータスが、複数のアウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し、
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し、
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む、旅行モニタリング方法。 - 請求項16に記載の方法であって、処理済みのメッセージをアウトバウンドハンドラから、旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、および、地上業務の運用システムの少なくとも1つに転送する、方法。
- 請求項16および17の何れか1項に記載の方法であって、交通サービスのリファレンスは少なくとも、フライトナンバー、日付および予約クラスうちの1つを含む、方法。
- 請求項16〜18の何れか1項に記載の方法であって、メッセージは、搭乗客、キャンセルした乗客、追加の乗客の何れか1つを記述する、方法。
- 請求項16〜19の何れか1項に記載の方法であって、フライトの出発時刻または、フライト提示の終了、あるいは、プロモーションの終了のうちの何れか1つによって起動されるシーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与される、方法。
- ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項16〜20の何れか1項に記載の方法からなる動作の実行を含む、非一時的コンピュータ可読媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP12368017.5 | 2012-08-02 | ||
US13/565,284 | 2012-08-02 | ||
US13/565,284 US8903767B2 (en) | 2012-08-02 | 2012-08-02 | Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment |
EP12368017.5A EP2693337B1 (en) | 2012-08-02 | 2012-08-02 | Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment |
PCT/EP2013/002302 WO2014019701A1 (en) | 2012-08-02 | 2013-08-01 | Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015527658A true JP2015527658A (ja) | 2015-09-17 |
JP2015527658A5 JP2015527658A5 (ja) | 2017-08-24 |
JP6198825B2 JP6198825B2 (ja) | 2017-09-20 |
Family
ID=48953356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015524671A Active JP6198825B2 (ja) | 2012-08-02 | 2013-08-01 | 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP6198825B2 (ja) |
KR (1) | KR101612682B1 (ja) |
CN (1) | CN104428754B (ja) |
IN (1) | IN2014DN10080A (ja) |
WO (1) | WO2014019701A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107093138B (zh) * | 2017-04-21 | 2019-04-30 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
ES2898755T3 (es) * | 2017-06-08 | 2022-03-08 | Amadeus Sas | Procesamiento de mensajes multiestándar |
EP3419250B1 (en) * | 2017-06-23 | 2020-03-04 | Vestel Elektronik Sanayi ve Ticaret A.S. | Methods and apparatus for distributing publish-subscribe messages |
CN110865891B (zh) * | 2019-09-29 | 2024-04-12 | 深圳市华力特电气有限公司 | 一种异步消息编排方法和装置 |
CN111045839A (zh) * | 2019-12-04 | 2020-04-21 | 中国建设银行股份有限公司 | 分布式环境下基于两阶段事务消息的顺序调用方法及装置 |
CN111506430B (zh) * | 2020-04-23 | 2024-04-19 | 上海数禾信息科技有限公司 | 多任务下数据处理的方法、装置及电子设备 |
CN111562888B (zh) * | 2020-05-14 | 2023-06-23 | 上海兆芯集成电路有限公司 | 存储器自更新的调度方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07319787A (ja) * | 1994-05-23 | 1995-12-08 | Hewlett Packard Co <Hp> | メッセージ処理方法及び処理ノード |
JPH09101901A (ja) * | 1995-10-06 | 1997-04-15 | N T T Data Tsushin Kk | マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 |
WO2008105099A1 (ja) * | 2007-02-28 | 2008-09-04 | Fujitsu Limited | アプリケーション連携制御プログラム、アプリケーション連携制御方法およびアプリケーション連携制御装置 |
US7991847B2 (en) * | 2009-05-18 | 2011-08-02 | Amadeus S.A.S. | Method and system for managing the order of messages |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182464A1 (en) * | 2002-02-15 | 2003-09-25 | Hamilton Thomas E. | Management of message queues |
US7698267B2 (en) * | 2004-08-27 | 2010-04-13 | The Regents Of The University Of California | Searching digital information and databases |
GB0613195D0 (en) * | 2006-07-01 | 2006-08-09 | Ibm | Methods, apparatus and computer programs for managing persistence in a messaging network |
US8392925B2 (en) * | 2009-03-26 | 2013-03-05 | Apple Inc. | Synchronization mechanisms based on counters |
US8495656B2 (en) * | 2010-10-15 | 2013-07-23 | Attivio, Inc. | Ordered processing of groups of messages |
-
2013
- 2013-08-01 KR KR1020157002898A patent/KR101612682B1/ko active IP Right Grant
- 2013-08-01 WO PCT/EP2013/002302 patent/WO2014019701A1/en active Application Filing
- 2013-08-01 JP JP2015524671A patent/JP6198825B2/ja active Active
- 2013-08-01 IN IN10080DEN2014 patent/IN2014DN10080A/en unknown
- 2013-08-01 CN CN201380036210.XA patent/CN104428754B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07319787A (ja) * | 1994-05-23 | 1995-12-08 | Hewlett Packard Co <Hp> | メッセージ処理方法及び処理ノード |
JPH09101901A (ja) * | 1995-10-06 | 1997-04-15 | N T T Data Tsushin Kk | マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 |
WO2008105099A1 (ja) * | 2007-02-28 | 2008-09-04 | Fujitsu Limited | アプリケーション連携制御プログラム、アプリケーション連携制御方法およびアプリケーション連携制御装置 |
US7991847B2 (en) * | 2009-05-18 | 2011-08-02 | Amadeus S.A.S. | Method and system for managing the order of messages |
Also Published As
Publication number | Publication date |
---|---|
JP6198825B2 (ja) | 2017-09-20 |
IN2014DN10080A (ja) | 2015-08-21 |
CN104428754B (zh) | 2018-04-06 |
CN104428754A (zh) | 2015-03-18 |
WO2014019701A1 (en) | 2014-02-06 |
KR101612682B1 (ko) | 2016-04-14 |
KR20150037980A (ko) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6198825B2 (ja) | 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 | |
US8903925B2 (en) | Scheduled messages in a scalable messaging system | |
US8139596B2 (en) | Communicating prioritized messages to a destination queue from multiple source queues using source-queue-specific priority values | |
US10133797B1 (en) | Distributed heterogeneous system for data warehouse management | |
US20140089619A1 (en) | Object replication framework for a distributed computing environment | |
US8984530B2 (en) | Queued message dispatch | |
US20110173252A1 (en) | System and method for context-based serialization of messages in a parallel execution environment | |
KR20140072044A (ko) | 다중-소스 푸시 통지를 다수의 타겟들로의 분배 기법 | |
US10592827B2 (en) | Throttling solutions into a legacy inventory system during a service disruption | |
US9262241B2 (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
US20190238495A1 (en) | Multi-standard message processing | |
WO2019231645A1 (en) | Change notifications for object storage | |
US8903767B2 (en) | Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment | |
EP2693337B1 (en) | Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment | |
EP2756421A2 (en) | Scale-out system to acquire event data | |
US8762533B2 (en) | Moving a project in a complex event processing cluster | |
US20130031186A1 (en) | Systems and methods for secure message delivery to a transient recipient in a dynamically routed network | |
US11714692B2 (en) | Classical management of qubit requests | |
CN110709820B (zh) | 多标准消息处理 | |
CN117806785A (zh) | 一种数据处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20150831 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20151014 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160502 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170619 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20170714 |
|
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: 20170724 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170822 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6198825 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |