JP2015527658A - Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment - Google Patents
Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment 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
- 238000000034 method Methods 0.000 title claims abstract description 133
- 238000012163 sequencing technique Methods 0.000 title claims abstract description 32
- 238000004590 computer program Methods 0.000 title description 4
- 238000012545 processing Methods 0.000 claims abstract description 131
- 230000008569 process Effects 0.000 claims abstract description 84
- 238000007726 management method Methods 0.000 claims description 7
- 230000000717 retained effect Effects 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 2
- 230000006399 behavior Effects 0.000 claims 1
- 238000012790 confirmation Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000000370 acceptor Substances 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002427 irreversible effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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
インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する方法であって:複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する方法。【選択図】図8BDistributed asynchronous message sequencing by a computer using at least one data processor in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer A method in which any of the plurality of inbound handlers receives an incoming message that includes a sequence correlation value that identifies a sequence that includes the incoming message; the sequence status of the sequence in a shared sequence storage; Checking; and determining whether the incoming message is the next message to process in order to maintain the order of the messages in the sequence. And when the sequence status indicates that none of the outbound handlers of the outbound handler layer is currently processing the message of the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, The incoming message is forwarded to queue storage and then retrieved by the outbound handler layer's available outbound handler for processing, and the sequence status is at least one of the outbound handler layer's outbound handlers currently said sequence The queue storage already contains messages to be processed in the sequence, or the incoming message is in the sequence Then when it is determined not to be the message to be processed, and stores the incoming message in the memory of the shared overflow storage, a method of holding for further processing. [Selection] Figure 8B
Description
本発明は、一般に通信システムのデータおよび情報処理に関し、具体的には、分散並列処理環境において、シーケンスの非同期メッセージを処理する方法、装置、およびシステムに関する。 The present invention relates generally to data and information processing in communication systems, and more specifically to a method, apparatus, and system for processing a sequence of asynchronous messages in a distributed parallel processing environment.
サービスコールまたはイベント処理において、分散ソフトウェアアーキテクチャを使用する場合、メッセージの伝送は同期、あるいは非同期で行われる。メッセージは個々のフルレシピエント(Full recipient)に配信およびマルチキャストされ、各マルチキャストメッセージは個別に処理される。 When a distributed software architecture is used in service calls or event processing, message transmission is performed synchronously or asynchronously. Messages are delivered and multicast to individual full recipients, and each multicast message is processed individually.
図1は、一方は呼出システム110であり、もう一方は遠隔システム120である2つのシステム間のメッセージ、またはサービスコールの同期伝送を示し、呼出システム110がメッセージ処理の順序を制御する。この場合、呼出システム110は遠隔処理の結果を待ち、その結果、呼出側は、メッセージをサーバシステム、または遠隔システムで実際に処理する順序に関するマスターとなる。
FIG. 1 shows the synchronous transmission of a message or service call between two systems, one of which is a
呼出システム110からの第1メッセージAの伝送111は、遠隔システム120で処理され、次に、処理済みメッセージA121として、呼出システム110に返される。一度、処理済みメッセージAを受信すると、呼出システム110は第2メッセージBの伝送113を、遠隔システム120に向けて行うことができる。第2メッセージBは、次に、遠隔システム120によって処理され、処理済みメッセージB123は呼出システム110に返される。
Transmission 111 of the first message A from the
このフローチャートで示した例は、呼出システム110と遠隔システム120間の同期の呼出し、またはメッセージの処理の順番を示し、サーバシステムまたは遠隔システム120の第1メッセージAの処理112が、第2メッセージBの処理114の前に行われていることがわかる。
The example shown in this flow chart shows the sequence of synchronous calls or message processing between the
図2は、呼出システム210とサーバシステムまたは遠隔システム220の間のメッセージまたはサービスコールの非同期伝送について示し、この呼出システム210は、サービスコールまたはメッセージをサーバシステムまたは遠隔システム220に送信し、これらのシステム220は、それ自体のスケジューリングに従って、メッセージの処理を行う。クライアントシステム、または呼出システム210は、メッセージ処理のタイミングの制御を緩める。
FIG. 2 shows the asynchronous transmission of a message or service call between the
呼出システム210からの第1メッセージAの伝送211は、遠隔システム220により処理される。その間に、呼出システム210は、第2メッセージBの遠隔システム220への伝送213を開始している。第2メッセージBは、次に、遠隔システム220によって処理されるが、メッセージAが処理されるまで、処理済みメッセージBを呼出システム210に返す判断はできない。
このフローチャートで示した例は、非同期の呼出し、または呼出システム210と遠隔システム220間のメッセージの処理の順番を示し、サーバシステムまたは遠隔システム220の第1メッセージAの処理212が、第2メッセージBの処理214とほぼ同時に行われることを示す。第2メッセージBを第1メッセージAより先に処理することも可能であるが、メッセージAおよびBを含むシーケンスの適合性に重大な影響を与える可能性がある。
The example shown in this flowchart shows the order of asynchronous calls or message processing between the
図3は、分散システムにおけるサービスコールまたはメッセージの並列処理を例証するフローチャートである。分散システムにおいて、障害許容力とスケーラビリティの要件を満たすために、サービスコールまたはメッセージは、インスタンス化による並列処理および/またはマルチスレッディングでの処理が行われる。この図では、処理システムの310−1、310−2、…、および310−nに該当するインスタンス1、2、3、…、およびnが、メッセージキュー340の4つのメッセージ1、2、3および4をインバウンドシーケンスによって処理する。
FIG. 3 is a flowchart illustrating parallel processing of service calls or messages in a distributed system. In distributed systems, service calls or messages are processed in parallel and / or multi-threaded by instantiation to meet fault tolerance and scalability requirements. In this figure,
並列処理は、連続するサービスコールやメッセージを処理し完了させる順序を保証するものではない。しかし、サービスコールやメッセージ処理は、関連するイベントやメッセージ間のシーケンスの遂行を強く求めることがある。 Parallel processing does not guarantee the order in which consecutive service calls and messages are processed and completed. However, service calls and message processing may strongly require execution of sequences between related events and messages.
図3に示す例では、メッセージ1はインスタンス2によって処理され、メッセージ2はインスタンス3によって処理され、メッセージ3はインスタンス1によって処理され、メッセージ4は、メッセージ2のようにインスタンス3によって処理される。メッセージの処理は調整されないので、メッセージ2が最初に処理され、次に、メッセージ1、メッセージ4、最後にメッセージ3が処理される。これは一貫性のない処理順序となる。
In the example shown in FIG. 3,
この図では、シーケンスは、サービスコールやメッセージの分散システムによる伝送および/または処理に関する順序を参照する。この順序は通常、業務処理、または業界標準により進められる。この順序に従わないことにより、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損や呼び出されたデータベースの破損に至る。 In this figure, the sequence refers to the order for service call and message transmission and / or processing by the distributed system. This order is usually driven by business processing or industry standards. Failure to follow this order results in inadequate processing, which in the worst case results in irreversible corruption of the stored functional data and corruption of the called database.
図4は、分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。 FIG. 4 is a flow chart illustrating the parallel processing of asynchronous calls or messages in a distributed processing system and the risk of message processing not being performed in order and the risk of data corruption.
同期環境では、遠隔システムへのメッセージ伝送を順次実行し、関連するメッセージ間のシーケンスフローを事実上制御するエミッタシステムまたは呼出システムによってシーケンシングが確保される。 In a synchronous environment, sequencing is ensured by an emitter system or paging system that sequentially executes message transmissions to remote systems and effectively controls the sequence flow between related messages.
遠隔システム420でのメッセージ処理の終了を判断できないので、このシーケンシングは、エミッタシステムまたは呼出システム410が非同期分散処理を取り扱う必要性が生じると不可能になる。図4は、第1メッセージAの呼出システム410から遠隔システム420への伝送411に続く、第2メッセージBの伝送413の、このリスクを示す。第2メッセージBの処理414は、第1メッセージAの処理414の処理412の前に開始する。したがって、メッセージ処理が逆になり、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損やデータベースの破損に至る。
Since it is not possible to determine the end of message processing at the
したがって、本発明は、前述の問題を緩和し、格納する機能データやデータベースの不可逆的な破損を避けることを目的とする。 Accordingly, an object of the present invention is to alleviate the above-mentioned problems and to avoid irreversible damage to stored functional data and databases.
本発明の一実施形態は、インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて、分散非同期メッセージのシーケンシングをコンピュータで実行する方法を提供し、この方法は、少なくとも1台のデータプロセッサを用いて実行し:
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信するステップ;および
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理すべきメッセージであるかを判断するステップを含み、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理すべきメッセージであると判断された場合、その着信メッセージを共有キューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、共有キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する。
One embodiment of the present invention performs distributed asynchronous message sequencing on a computer in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer. A method is provided that is performed using at least one data processor:
Receiving an incoming message with a sequence correlation value identifying a sequence including the incoming message in any of the plurality of inbound handlers; and checking the sequence status of the sequence in the shared sequence storage; Determining whether the incoming message is the next message to be processed in order to maintain the order of the messages in the sequence;
If the sequence status indicates that none of the outbound handler layer's outbound handlers is currently processing messages in the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, Forward the incoming message to shared queue storage, then get the message by an outbound handler available for processing,
If the sequence status indicates that at least one of the outbound handler layer's outbound handlers is currently processing the message of the sequence, or if the shared queue storage already contains the message to be processed of the sequence Alternatively, if it is determined that the incoming message is not a message to be processed next in the sequence, the incoming message is stored in the shared overflow storage memory and retained for further processing.
したがって、分散並列システムは、:多くのシーケンスに関係するメッセージを受信する、インバウンドハンドラ層に互いに平行に配列されたインバウンドハンドラ;および、共有シーケンスストレージ、キューストレージおよび共有オーバーフローストレージを含み、インバウンドハンドラからメッセージを受信し、それらをメモリに格納するように構成されたストレージ層、を含むルーターと見なすことができる。シーケンスストレージは、オーバーフローストレージを含んでもよい。分散並列システムは、同システムが、それぞれのシーケンス内で正確なメッセージのシーケンシングを確保しながら、アウトバウンドハンドラ層において互いに平行に配列され、処理のために共有キューストレージからメッセージを取得するように構成されたアウトバウンドハンドラをさらに含む。アウトバウンドハンドラは、処理を行い、場合によっては正しい受け手に配信するために、メッセージを受信するように構成される。 Thus, a distributed parallel system includes: an inbound handler arranged in parallel to each other in an inbound handler layer that receives messages related to many sequences; and a shared sequence storage, a queue storage, and a shared overflow storage from an inbound handler It can be considered a router that includes a storage layer configured to receive messages and store them in memory. The sequence storage may include overflow storage. A distributed parallel system is configured so that it is arranged in parallel with each other in the outbound handler layer and retrieves messages from shared queue storage for processing, ensuring accurate message sequencing within each sequence A further outbound handler. The outbound handler is configured to receive a message for processing and possibly delivery to the correct recipient.
オーバーフローストレージおよびシーケンスストレージは、インバウンドハンドラおよびアウトバウンドハンドラに共有される。それらは、並列インバウンドハンドラおよび並列アウトバウンドハンドラによって共有して使用される。 Overflow storage and sequence storage are shared by inbound handlers and outbound handlers. They are shared and used by parallel inbound handlers and parallel outbound handlers.
したがって、本発明は、分散環境における様々なシーケンスの並列処理を実行しながら、同一のシーケンスに関するメッセージの順序を維持するためのソリューションを提供する。さらに、インバウンドハンドラをアウトバウンドハンドラから切り離すことによって、受け手のスループットからエミッタのスループットを分離することが可能になる。さらに、インバウンドハンドラおよびアウトバウンドハンドラの数を、高度かつ個別に拡張できる。また、本発明は、シーケンスとインバウンドハンドラまたはアウトバウンドハンドラ間に類似性が生じることを避けるので、インバウンドハンドラまたはアウトバウンドハンドラは、どのシーケンスのメッセージでも処理できる。したがって、一部のハンドラやアウトバウンドハンドラの停止が、メッセージの処理に影響しないので、本発明は、強い障害許容性を提供する。 Thus, the present invention provides a solution for maintaining the order of messages for the same sequence while performing parallel processing of various sequences in a distributed environment. Further, separating the inbound handler from the outbound handler makes it possible to separate the emitter throughput from the receiver throughput. In addition, the number of inbound and outbound handlers can be advanced and individually expanded. The present invention also avoids similarities between sequences and inbound or outbound handlers so that inbound or outbound handlers can process any sequence of messages. Therefore, the present invention provides strong fault tolerance because some handlers and outbound handlers do not affect message processing.
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れかを含んでよい。 The method of the present invention may further include any of the additional functions and steps shown below.
一実施形態において、前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるかどうかの判断は:
・ 前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
・ メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を含み、
・ メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され;
・ メッセージランクがシーケンスランクよりも大きい場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージとは判断しない。
In one embodiment, to maintain the order of messages in the sequence, the determination of whether an incoming message is the next message to process is:
Determining a message rank indicating the order of incoming messages in the sequence; andcompare the message rank with a sequence rank defining a rank of the next message to be processed in the sequence;
If the message rank is the same as the sequence rank, the message is determined to be the next message to be processed in order to maintain the order of the messages in the sequence;
If the message rank is greater than the sequence rank, the message is not considered the next message to be processed in order to maintain the order of the messages in the sequence.
シーケンスに含まれ、特定の順序に処理されるべきメッセージは、メッセージランク番号を付与され、これは現在のメッセージランクの記述として参照される。メッセージランクは、シーケンス内のメッセージの順序を定義する。メッセージにはメッセージ発信者または、サードパーティによってメッセージランクが付与されることがある。メッセージランクは、シーケンスのメッセージの到着順に応じて、システムにより割り当てられる場合もある。 Messages that are included in the sequence and are to be processed in a particular order are given a message rank number, which is referred to as a description of the current message rank. Message rank defines the order of messages in a sequence. A message rank may be given to a message by a message originator or a third party. The message rank may be assigned by the system depending on the order of arrival of the messages in the sequence.
本明細書の記述通り、シーケンスランクは、与えられたシーケンスのどのメッセージが次に処理すべきかを定義する、つまり、次に処理されるべきメッセージが有するべきメッセージランクを定義する。 As described herein, the sequence rank defines which message of a given sequence should be processed next, that is, the message rank that the message to be processed next should have.
シーケンスランクは、シーケンスストレージ内に示されることが好ましい。 The sequence rank is preferably indicated in the sequence storage.
典型的に、アウトバウンドハンドラによってメッセージを処理することは、アウトバウンドハンドラがメッセージを受け手に送信または配信することを意味する。 Typically, processing a message by an outbound handler means that the outbound handler sends or delivers the message to the recipient.
有利なことに、アウトバウンドハンドラにおいて与えられたシーケンスのメッセージの処理が完了したら、前記与えられたシーケンスのシーケンスランクは、インクリメントされる。 Advantageously, once processing of a given sequence of messages in the outbound handler is complete, the sequence rank of the given sequence is incremented.
シーケンスのシーケンスランクをインクリメントする際、方法は、オーバーフローストレージに、メッセージランクがインクリメントされ、シーケンスランクと同等であるメッセージが含まれるかをチェックし、次いで、このメッセージをキューストレージに転送することが好ましい。 When incrementing the sequence rank of a sequence, the method preferably checks whether the overflow storage contains a message whose message rank is incremented and is equal to the sequence rank, and then forwards this message to the queue storage. .
有利な実施形態によれば、受信した着信メッセージに、シーケンス内でのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む。 According to an advantageous embodiment, the step of determining the message rank when the received incoming message is not given an index indicating the message rank in the sequence comprises the step of determining the message rank indicating the rank of the incoming message in the sequence: Assigning to incoming messages and storing the assigned message rank in sequence storage.
割り当てられたメッセージランクは、前記シーケンスに1を加えてインクリメントした、インバウンドハンドラの任意の1箇所において最後に受信したメッセージのランクに相当していることが好ましい。したがって、着信メッセージが、前記シーケンスの第1メッセージであれば、メッセージランクは1となる。あるインバウンドハンドラで受信した前のメッセージのメッセージランクがNであれば、新たに着信したメッセージに割り当てられるメッセージランクはN+1となる。 The assigned message rank preferably corresponds to the rank of the last message received at any one place in the inbound handler, incremented by adding 1 to the sequence. Therefore, if the incoming message is the first message in the sequence, the message rank is 1. If the message rank of the previous message received by a certain inbound handler is N, the message rank assigned to the newly received message is N + 1.
別の有利な実施形態では、インバウンドハンドラで受信した着信メッセージには、シーケンス内でのメッセージランクを示すインデックスが付与されている。 In another advantageous embodiment, incoming messages received by the inbound handler are given an index that indicates the message rank in the sequence.
メッセージランクがシーケンスランクよりも大きい場合、シーケンスのステータスを「保留(pending)」に設定することが好ましい。したがって、「保留」は、オーバーフローストレージ領域は、与えられたシーケンスの少なくとも1つのメッセージを含むが、この(これらの)メッセージのメッセージランクは、シーケンスランクと同等ではないことを意味する。 If the message rank is greater than the sequence rank, it is preferable to set the status of the sequence to “pending”. Thus, “pending” means that the overflow storage area contains at least one message of a given sequence, but the message rank of this (these) messages is not equal to the sequence rank.
どのアウトバウンドハンドラも現在、前記シーケンスのメッセージを処理しておらず、そのシーケンスのメッセージがオーバーフローストレージ領域にない場合、典型的に、シーケンスステータスは、「待つ(waiting)」に設定される。少なくとも1つのアウトバウンドハンドラが現在、前記シーケンスのメッセージを処理している場合、典型的にシーケンスステータスは「処理中(processing)」に設定される。 If no outbound handler is currently processing the sequence message and the sequence message is not in the overflow storage area, typically the sequence status is set to “waiting”. If at least one outbound handler is currently processing a message of the sequence, typically the sequence status is set to “processing”.
有利なことに、キューストレージが着信メッセージのシーケンスのメッセージを含まない場合、そして、着信メッセージのメッセージランクがシーケンスストレージに示されるシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ、着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される。 Advantageously, if the queue storage does not contain a message in the sequence of incoming messages, and if the message rank of the incoming message is greater than the sequence rank indicated in the sequence storage, the incoming message is incremented by the sequence rank and the incoming message It is stored in overflow storage until it is equal to the message rank of the message.
したがって、メッセージにメッセージの発信者または第三者からメッセージランクが付与されていて、メッセージランクがシーケンスランクよりも大きい場合、メッセージは、オーバーフローストレージに格納される。他のメッセージランクの低いメッセージが処理される場合、メッセージランクが、先に格納したメッセージのメッセージランクに到達するまで、シーケンスランクはインクリメントされる。このメッセージは、次にシーケンスストレージ、より具体的には、オーバーフローストレージからリリースされ、一度、キューストレージおよびインバウンドハンドラが、このシーケンスのメッセージを格納せず、処理しなくなると、キューストレージに送信されることがある。 Thus, if a message is given a message rank from the message originator or a third party and the message rank is greater than the sequence rank, the message is stored in overflow storage. If other lower message rank messages are processed, the sequence rank is incremented until the message rank reaches the message rank of the previously stored message. This message is then released from sequence storage, more specifically overflow storage, and once queue storage and inbound handlers have not stored and cannot process this sequence of messages, they are sent to queue storage. Sometimes.
同様のことは、メッセージランクは付与されないものの、到着順に応じてシステムによりメッセージランクが割り当てられるメッセージについても適用される。 The same applies to messages that are not assigned a message rank but are assigned a message rank by the system according to the order of arrival.
有利なことに、アウトバウンドハンドラにより、メッセージが適切に処理された場合、そのメッセージは、キューストレージから削除される。 Advantageously, if the message is properly processed by the outbound handler, the message is deleted from the queue storage.
有利なことに、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる。 Advantageously, the outbound handler operates asynchronously, allowing the message to be sent and allowing further processing after sending the message until an acknowledgment is received from the recipient of the message.
有利な実施形態によると、アウトバウンドハンドラはメッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含む。配信処理と肯定応答処理は、独立して作動するので、配信処理は、メッセージ送信後すぐに使用可能となる。 According to an advantageous embodiment, the outbound handler includes a delivery process for sending a message to the recipient and an acknowledgment process for receiving an acknowledgment from the recipient. Since the delivery process and the acknowledgment process operate independently, the delivery process can be used immediately after sending the message.
有利なことに、着信メッセージを受信し、チェックステップに進むまで、この方法は、着信メッセージがシーケンスストレージに格納されるか、キューストレージに送信されるまで、すべてのインバウンドハンドラが、前記シーケンスの他のメッセージを受信することを停止される、インバウンドロックステップを実行することを含む。 Advantageously, until an incoming message is received and proceeds to the checking step, this method ensures that all inbound handlers will receive the rest of the sequence until the incoming message is stored in sequence storage or sent to queue storage. Performing an inbound lock step that is stopped from receiving the message.
有利なことに、同一シーケンスの他のメッセージがアウトバウンドハンドラによって送信され、処理される間に、着信メッセージは、インバウンドハンドラによって受け入れられることが可能である。着信メッセージがロックからリリースされるために待つ必要が生じる状況は以下に限定される:
・ 別の着信メッセージがストレージ層に格納されているか、インバウンドハンドラによって受信されている場合;および
・ 前記シーケンスのメッセージに対する受け手の応答が、アウトバウンドハンドラによって受信され、処理されている場合。アウトバウンドハンドラが受け手から応答(肯定応答)を受信した場合、シーケンス、対応するランク、もしあれば、前記シーケンスに送信する次のメッセージを探す時間、およびランクのインクリメントはロックされる。
Advantageously, incoming messages can be accepted by the inbound handler while other messages in the same sequence are sent and processed by the outbound handler. Situations where an incoming message needs to wait for release from lock are limited to:
If another incoming message is stored in the storage layer or received by the inbound handler; and if the recipient's response to the sequence of messages is received and processed by the outbound handler. If the outbound handler receives a response (acknowledgment) from the recipient, the sequence, the corresponding rank, if any, the time to look for the next message to send to the sequence, and the rank increment are locked.
インバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。 The inbound lock step preferably includes locking the sequence-specific mutex stored in the sequence storage.
着信メッセージを受信すると、インバウンドハンドラは、前記着信メッセージのシーケンスのシーケンス相関値をチェックし、その着信メッセージを受け取る前に、前記シーケンスのミューテックスパラメータを読むことが好ましい。ミューテックスがロックされていなければ、インバウンドハンドラは着信メッセージを受け取る。ミューテックスがロックされていると、着信メッセージはミューテックスがリリースされるのを待つ。 Upon receipt of an incoming message, the inbound handler preferably checks the sequence correlation value of the sequence of incoming messages and reads the mutex parameters of the sequence before receiving the incoming message. If the mutex is not locked, the inbound handler receives an incoming message. If the mutex is locked, the incoming message waits for the mutex to be released.
より具体的には、ミューテックスは、シーケンスストレージに含まれるシーケンスレジスターに格納される。 More specifically, the mutex is stored in a sequence register included in the sequence storage.
有利なことに、インバウンドハンドラおよびアウトバウンドハンドラのシーケンス1つに対し、ミューテックスは1つだけ存在する。キューストレージのストレージキューは、与えられたシーケンスに対し、アウトバウンドハンドラ層がそのシーケンスのメッセージの処理を完了するまで、1つのメッセージのみがアウトバウンドハンドラに伝播されることを確実にする。 Advantageously, there is only one mutex per sequence of inbound and outbound handlers. A storage queue in queue storage ensures that for a given sequence, only one message is propagated to the outbound handler until the outbound handler layer has finished processing the messages in that sequence.
アウトバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。 Preferably, the outbound lock step includes locking the sequence-specific mutex stored in the sequence storage.
有利なことに、アウトバウンドハンドラが使用可能である場合、アウトバウンドハンドラは、処理が可能なメッセージがないかキューストレージをチェックし、前記メッセージを取り出して、処理を行う。アウトバウンドハンドラが使用可能であれば、アウトバウンドハンドラは、処理可能なメッセージがないか、キューストレージ850をチェックすることが好ましい。
Advantageously, if an outbound handler is available, the outbound handler checks the queue storage for messages that can be processed, retrieves the messages, and processes them. If an outbound handler is available, the outbound handler preferably checks the
メッセージがあれば、このメッセージは、前記与えられたシーケンスに対し、自動的に修正され、処理される。 If there is a message, this message is automatically modified and processed for the given sequence.
一実施形態において、着信メッセージのシーケンスストレージ、具体的には、オーバーフローストレージへの格納時に、インバウンドハンドラは肯定応答メッセージを送信する。 In one embodiment, when storing incoming messages in sequence storage, specifically overflow storage, the inbound handler sends an acknowledgment message.
典型的に、肯定応答メッセージは、メッセージの発信者に送信される。 Typically, an acknowledgment message is sent to the originator of the message.
有利なことに、シーケンスランクよりも大きいメッセージランクを有するメッセージが、そのメッセージランクがシーケンスランク(つまり、次に処理されるメッセージのランク)に合致しない限り、オーバーフローストレージに格納され、メッセージシーケンスはロックされる。 Advantageously, messages with a message rank greater than the sequence rank are stored in overflow storage and the message sequence is locked unless the message rank matches the sequence rank (ie, the rank of the next message to be processed). Is done.
シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄されることが好ましい。別の方法として、または追加として、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される。 Preferably, messages having a message rank greater than the sequence rank are first stored in the overflow storage and then discarded from the overflow storage after reaching the timeout value assigned to the sequence of messages. Alternatively or additionally, messages having a message rank greater than the sequence rank are first stored in the overflow storage and then discarded from the overflow storage after reaching the timeout value assigned to the message.
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1台のデータプロセッサによるソフトウェアプログラム命令の実行は、本発明による方法の実行を含む動作の実行となる。 In another embodiment, the invention relates to a non-transitory computer readable medium comprising software program instructions, wherein execution of the software program instructions by at least one data processor is an execution of an operation comprising execution of a method according to the invention. .
他の実施形態では、本発明は、非同期メッセージのシーケンシングを行う分散並列型処理システムに関し、分散並列型処理システムは:
・ それぞれが、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラ;
・ それぞれが、複数の着信メッセージを独立して処理し、転送する、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラ;および
・ ストレージ層を含み、前記ストレージ層は、少なくとも1つのメモリと:
・ 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
・ シーケンスストレージ、を含み、前記シーケンスストレージは、着信メッセージのシーケンスのステータスを維持し、更新するシーケンスステータスコンテキスト(802)、およびインバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成されたオーバーフローストレージ、を含む。
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下の処理を実行するよう構成されている。
シーケンスステータスが、アウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージ格納し、さらなる処理のために保持する。
In another embodiment, the invention relates to a distributed parallel processing system that performs asynchronous message sequencing, the distributed parallel processing system comprising:
A plurality of inbound handlers including at least one data processor, each configured to independently receive a plurality of incoming messages associated with various sequences;
A plurality of outbound handlers including at least one data processor, each independently processing and forwarding a plurality of incoming messages; and a storage layer, said storage layer comprising at least one memory:
A queue storage for storing incoming messages in a state to be transmitted to a plurality of outbound handlers; and a sequence storage, wherein the sequence storage maintains a status of the sequence of incoming messages and updates a sequence status context (802) ), And overflow storage configured to receive messages from inbound handlers and forward them sequentially to queue storage.
The system also determines whether the incoming message is the next message to be processed in order to maintain the message order in this sequence of messages, and performs the following processing executed by at least one data processor: It is configured as follows.
If the sequence status indicates that none of the outbound handlers is currently processing messages in the sequence and it is determined that the incoming message is a message to be processed next to the sequence, the incoming message is queued. And then forward to an outbound handler that is available for processing.
If the sequence status indicates that at least one of the outbound handlers is currently processing messages for the sequence, or if the queue storage already contains messages to be processed for the sequence, or an incoming message Is determined not to be the next message to be processed in the sequence, the incoming message is stored in shared overflow storage and retained for further processing.
追加の実施形態において、ストレージ層のキューストレージおよびシーケンスストレージは、インメモリーデータまたはファイルベースストレージに実装される。別の方法として、ストレージ層のキューストレージおよびシーケンスストレージは、クライアント/サーバストレージデータベースに実装される。 In additional embodiments, storage layer queue storage and sequence storage are implemented in in-memory data or file-based storage. Alternatively, storage layer queue storage and sequence storage are implemented in a client / server storage database.
シーケンスステータスのチェックには、前記シーケンスのシーケンス相関値に基づくシーケンスのステータスを取得することを含んでいることが好ましい。 Preferably, the checking of the sequence status includes obtaining the status of the sequence based on the sequence correlation value of the sequence.
別の実施形態において、本発明は、複数の並列インバウンドハンドラと複数の並列アウトバウンドハンドラを有する並列環境における少なくとも1つのサーバプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するためにコンピュータにより実施される旅行モニタリング方法に関し、この方法は、少なくとも1つのデータプロセッサで以下のステップを実行する:
・ 複数の並列インバウンドハンドラのうちの1つのインバウンドハンドラにおいて着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし;
・ 前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断し;
シーケンスステータスが、複数の並列アウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し;
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し;
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む。
In another embodiment, the invention is implemented by a computer to process asynchronous messages between at least one server application and at least one client application in a parallel environment having multiple parallel inbound handlers and multiple parallel outbound handlers. With regard to the travel monitoring method to be performed, this method performs the following steps with at least one data processor:
Receiving an incoming message with a sequence correlation value specifying a sequence including the incoming message in one inbound handler of a plurality of parallel inbound handlers;
Check the sequence status of the sequence in the sequence storage;
Determining whether the incoming message is the next message to be processed in order to maintain the message order in the sequence;
Sequence status indicates that none of the multiple outbound outbound handlers is currently processing messages in the sequence, and the incoming message is determined to be the next message to be processed after the sequence If so, send the incoming message to queue storage and then forward it to an outbound handler available for processing;
If the sequence status indicates that at least one of the outbound handlers is currently processing a message of the sequence, or if the queue storage already contains a message to be processed of the sequence, or an incoming message Is determined not to be the next message to be processed in the sequence, the incoming message is stored in the shared overflow storage and retained for further processing;
The message includes data relating to passengers and data including sequence correlation values relating to traffic service references.
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れか1つを含む。 The method of the present invention further includes any one of the following additional functions and steps.
一度、処理されると、メッセージは、アウトバウンドハンドラから以下のうちの少なくとも1つに転送される。旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、地上業務の運用システム。 Once processed, the message is forwarded from the outbound handler to at least one of the following: Travel reservation system, airline inventory system, airline e-ticket system, airport departure control system, airport operation system, airline operation system, ground service operation system.
一実施形態では、交通サービスのリファレンスとして、フライトナンバー、日付および予約クラス以のうち少なくとも1つを含む。 In one embodiment, the traffic service reference includes at least one of a flight number, date and booking class.
一実施形態におけるメッセージは、搭乗客、キャンセルした搭乗客、追加の乗客のうち少なくとも1つを明示する。 The message in one embodiment specifies at least one of a passenger, a canceled passenger, or an additional passenger.
一実施形態において、シーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与されていて、シーケンスタイムアウト値は、フライトの出発時刻または、フライト提示の終了、あるいはプロモーションの終了のうちの何れか1つによって起動される。 In one embodiment, each incoming message is given a sequence timeout value to delete incoming messages stored in overflow storage after the sequence timeout value is reached, and the sequence timeout value is the flight departure time or It is activated by either one of the end of flight presentation or the end of promotion.
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1つのデータプロセッサによる当該ソフトウェアプログラム命令の実行は、本発明による上記方法の実行を含む動作の実行となる。 In another embodiment, the present invention relates to a non-transitory computer readable medium comprising software program instructions, wherein execution of said software program instructions by at least one data processor comprises execution of operations including execution of said method according to the present invention. Become.
さらに別の実施形態で、本発明は、複数のインバウンドハンドラ、および複数のアウトバウンドハンドラを有し、メッセージを処理する少なくとも1つのプロセッサを含む分散並列システムにおいて、配信された非同期メッセージをコンピュータによりシーケンシングする方法に関し、この方法は、少なくとも1つのデータプロセッサを用いる、以下のステップを含む:
・ インバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し、前記シーケンス内の着信メッセージの順序を示すメッセージランクを判断し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし:
シーケンスステータスがいずれのアウトバウンドハンドラも、前記シーケンスのメッセージを現時点で処理していないことを示し;
受信した着信メッセージが、シーケンス内でのメッセージランクを示す如何なるインデックスも付与されておらず、シーケンスストレージが前記シーケンスの処理すべきメッセージを未だに含んでいない場合;あるいは、
受信した着信メッセージは、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクと同等)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義し;
次に、着信メッセージをキューストレージに転送し、続いて、それを処理が可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、または、受信した着信メッセージが、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクよりも大きい)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義する場合、次に、着信メッセージをさらなる処理のためにオーバーフローストレージに格納する。
In yet another embodiment, the present invention provides a computer for sequencing delivered asynchronous messages in a distributed parallel system having a plurality of inbound handlers and a plurality of outbound handlers and including at least one processor for processing messages. The method includes the following steps using at least one data processor:
In an inbound handler, receive an incoming message with a sequence correlation value that identifies a sequence including the incoming message, and determine a message rank indicating the order of the incoming message in the sequence;
Check the sequence status of the sequence in the sequence storage:
The sequence status indicates that none of the outbound handlers is currently processing the message of the sequence;
The received incoming message does not have any index indicating the message rank in the sequence and the sequence storage does not yet contain the message to be processed in the sequence; or
Received incoming messages are given an index indicating the message rank in the sequence (equivalent to the sequence rank shown in the sequence storage), the message rank defining the rank of the message in the sequence to be processed next;
It then forwards the incoming message to queue storage, which is then forwarded to an outbound handler that can process it.
If the sequence status indicates that at least one of the outbound handlers is currently processing messages for the sequence, or if the queue storage already contains messages to be processed for the sequence, or received If an incoming message is indexed to indicate the message rank in the sequence (greater than the sequence rank shown in the sequence storage), and the message rank defines the rank of the message in the sequence to be processed next, then Incoming messages are stored in overflow storage for further processing.
本発明の前記実施形態および他の態様の実施形態は、以下の図を参照することにより、さらに理解されよう。
以下の記述は、旅行業界への応用を意図するものであるが、本発明は、ホテル客室、レンタカー、鉄道チケットなどの旅行商品を始めとして、あらゆる用途のデータ処理に使用可能であるので、本発明は以下の例に限定されない。 The following description is intended for applications in the travel industry, but the present invention can be used for data processing for any application, including travel products such as hotel rooms, rental cars, and rail tickets. The invention is not limited to the following examples.
本発明によると、メッセージの処理順序は、与えられたシーケンスの次のメッセージを送信する前に、メッセージのエミッタまたは呼出システムによって、非同期並列環境において、シーケンス内の各メッセージのランクを示すインデックスを付与することによって明示的に、あるいは、メッセージを順次配信して、そのメッセージの肯定応答が配信されるのを待つことによって非明示的に、定義される。 According to the present invention, the message processing order is indexed by the message emitter or call system in the asynchronous parallel environment to indicate the rank of each message in the sequence before sending the next message in the given sequence. Defined explicitly, or implicitly by delivering messages sequentially and waiting for the acknowledgment of the message to be delivered.
本発明は、同時に独立して実行される処理が、シーケンスと定義された、与えられたメッセージのセットを処理するためのシーケンシングの順序を順守することを確実にすることを目的とする。 The present invention aims to ensure that processing performed independently at the same time adheres to the sequencing order for processing a given set of messages, defined as a sequence.
その点に関し、本発明による分散非同期メッセージのシーケンシングを行うための、方法、装置、およびシステムは、様々な動作を実行するが、それらは下記に簡潔に説明し、後に図を用いて詳細に説明する。 In that regard, the method, apparatus and system for performing distributed asynchronous message sequencing according to the present invention perform various operations, which will be briefly described below and will be described in detail later with reference to the drawings. explain.
与えられたシーケンスの各メッセージまたはサービスコールは、インタフェース定義によりタグ付けされ、それが属する特定のシーケンスを実際に参照する。 Each message or service call in a given sequence is tagged with an interface definition and actually refers to the specific sequence to which it belongs.
メッセージのシーケンス内のメッセージまたはサービスコールのランクは、下記の何れかである:
・ 十分なインタフェースを介して、メッセージまたはサービスコールのエミッタ/送り手によって明示的に提供される。例えば、メッセージは、そのシーケンス内のメッセージのランクを定義するインデックスを有するフィールドを含む;または
・ シーケンス内のメッセージまたはサービスコールを、時間を超過して受信する場合の順序を使用して非明示的に提供される。
The rank of a message or service call within a sequence of messages is one of the following:
• Explicitly provided by the emitter / sender of the message or service call via a sufficient interface. For example, a message includes a field with an index that defines the rank of the message in the sequence; or • Implicitly using the order in which messages or service calls in the sequence are received over time Provided to.
一度、シーケンスおよび、メッセージランク、またはサービスコールの順序が特定されると、シーケンスは適切に管理される必要がある。 Once the sequence and message rank or service call order is identified, the sequence needs to be managed appropriately.
図5は、本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。この図は、システムの主要機能および主要ステップを詳述している。 FIG. 5 is a block diagram illustrating high level sequence management in a centralized and shared sequence context according to the present invention. This figure details the major functions and major steps of the system.
非同期分散処理システムは、着信メッセージ501を受信するインバウンドハンドラ510、およびメッセージを処理し、それらを配信するよう構成される、アウトバウンドハンドラ530を含む。システムはまた、当該メッセージが属するシーケンスの順序を維持するため、メッセージ501の処理を保留する必要がある場合、インバウンドハンドラから受信したメッセージを格納することがある、オーバーフローストレージ領域540を含む。
The asynchronous distributed processing system includes an
システムは、複数の並列インバウンドハンドラ510と複数の並列アウトバウンドハンドラ530を含むが、図5は分かり易くするために簡潔に示されていることを理解されたい。
Although the system includes a plurality of parallel
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。したがって、複数のインバウンドハンドラを含むインバウンドハンドラ層は、アクセプター層とも呼ばれることがある。 Inbound handlers are also called acceptors or acceptor processes. Accordingly, an inbound handler layer including a plurality of inbound handlers may be referred to as an acceptor layer.
アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。したがって、複数のアウトバウンドハンドラを含むアウトバウンドハンドラ層は、配信層とも呼ばれることがある。 An outbound handler may be referred to as a processor or delivery process. Thus, an outbound handler layer that includes multiple outbound handlers may also be referred to as a distribution layer.
インバウンドハンドラ510は、以下のうちの何れか1つを実行するよう構成される。パブリッシャーなどのエミッタからメッセージを受信する、メッセージのインテグリティのバリデーションを行う、シーケンスロックおよびステータスのバリデーションを行う、2領域のうちの1領域にメッセージを格納する(例:キューストレージまたは、オーバーフロー領域)、エミッタに応答する。
The
有利な実施形態によると、アウトバウンドハンドラ530は、2つの処理から構成される。デリバリー処理531と呼ばれる第1処理は、以下の何れか1つの処理を実行するように構成されている。ストレージキューからメッセージを入手する;そのメッセージを、通信チャネルを介して受け手に送信する;および、他の処理によって使用されることを停止する。
According to an advantageous embodiment, the
肯定応答処理532と呼ばれる第2処理は、以下の何れか1つの処理を実行するように構成されている。受け手から肯定応答を受信する;シーケンス管理を実行して次のメッセージを対応するシーケンス(もしあれば、ストレージキュー)に入れる;および、他の処理によって使用されることを停止する。
The second process called the
したがって、アウトバウンドハンドラ532により形成される配信層は、高い拡張性の要件に対応する非同期である。このように、システムは受け手の待ち時間に対し、独立している。より正確には、アウトバウンドハンドラは、第1シーケンスのメッセージを取得および配信し、次に、アウトバウンドハンドラが第1シーケンスのメッセージの配信に対する肯定応答を受信するまでに、第2シーケンスの別のメッセージを取得し、配信することができることを意味する。したがって、アウトバウンドハンドラは非同期的に多くのシーケンスからのメッセージを取り扱うことができ、それによって、常に各シーケンスの正確な順序を維持しながら、システムが送ることができるメッセージの数を増やすことができる。
Thus, the delivery layer formed by the
本発明によると、ステートマシンが各シーケンスに使用される、中央共有シーケンスコンテキストが実装される。着信メッセージ501がインバウンドハンドラ510に受信される度に、それに対応するシーケンスコンテキストステータスがチェックされる(520)。一実施形態によれば、対応するシーケンスコンテキストが存在しない場合、動的および透過的に作成される。したがって、本発明は、システムにおいて前もってシーケンスを定義する必要はなく、この点については、全面的に動的である。さらに、メッセージに、シーケンス内のメッセージのランクを示すインデックスが付与されていない場合、メッセージランクは、メッセージの到着順序に応じてメッセージに割り当てられる:
・ アウトバウンドハンドラ層がシーケンスの次のメッセージを待っている状態(つまり、シーケンスステータスが「待ち(Waiting)」)であることを、シーケンスステータスが示した場合、着信メッセージ501が、アウトバウンドハンドラ530の標準的動作により通常通り処理(522)される(メッセージは非同期処理可能となる);
・ あるいは、シーケンスのメッセージが現在、処理中である、つまり、シーケンスステータスが「処理中(Processing)」とシーケンスステータスが示す場合、着信メッセージ501は、後に処理(524)を受けるため、特定のシーケンスオーバーフローストレージ領域540に格納される。オーバーフローストレージ領域540は、着信メッセージの順序が失われないように構成/インデックス付けされる。このように、着信メッセージ501は、さらなる処理のために保持され、即時処理のために使用可能とはならない(シーケンスから除外)。
In accordance with the present invention, a central shared sequence context is implemented in which a state machine is used for each sequence. Each time an incoming message 501 is received by the
If the sequence status indicates that the outbound handler layer is waiting for the next message in the sequence (ie, the sequence status is “Waiting”), the incoming message 501 is the standard for the
Alternatively, if the sequence message is currently being processed, that is, if the sequence status indicates “Processing” and the sequence status indicates that the incoming message 501 is subject to processing (524) later, the particular sequence Stored in the
アウトバウンドハンドラ層は、標準的動作によって処理される、事実上、正しいシーケンスランクのメッセージを受信する。 The outbound handler layer receives a message of effectively the correct sequence rank that is processed by standard operations.
一度、メッセージ501が処理されると、アウトバウンドハンドラ層がオーバーフローストレージ領域540のシーケンスにおいて処理する次のメッセージを探す。もし、そのようなメッセージが見つかったら、標準処理に基づいて、アウトバウンドハンドラ層にプッシュする。メッセージが見つからない場合、シーケンスステータスは、「待ち(Waiting)」の設定に戻される。
Once the message 501 is processed, the outbound handler layer looks for the next message to process in the sequence of the
シーケンス内の各メッセージの順序は、維持される。シーケンスストレージは、シーケンスのメッセージの順序を維持するために、処理が義務づけられる次のメッセージのランクを示すシーケンスランクを定義する。シーケンスランクは、メッセージの処理が完了する度に、インクリメンタルに更新される。したがって、シーケンスランクは、カウンターと見なすことができる。 The order of each message in the sequence is maintained. The sequence storage defines a sequence rank that indicates the rank of the next message that must be processed in order to maintain the order of the messages in the sequence. The sequence rank is incrementally updated each time message processing is complete. Therefore, the sequence rank can be regarded as a counter.
シーケンスランクに合致しない如何なる着信メッセージ(つまり、処理すべき次のメッセージのランク)も、処理すべき正しいメッセージがインバウンドハンドラ510に受信されるまで、オーバーフローストレージ領域540に格納される。このことは、シーケンスのランクおよび各メッセージのランクを考慮しながら、オーバーフローストレージ領域540において、挿入/削除動作が実行されることを意味する。
Any incoming message that does not match the sequence rank (ie, the rank of the next message to be processed) is stored in the
メッセージがオーバーフローストレージ領域540に格納され、シーケンス内で処理が保留されているので、シーケンス内の次のメッセージによってシーケンスのロックが外されることはない。このような状況は頻繁には起こらないが、本発明は、期限が切れたメッセージやシーケンスを破棄するなど、期限が切れたと考えられるシーケンスに対して動作を起こすためにシーケンスのコンテキストの中にインジケータを残す動的な方法を提供する。
Since the message is stored in the
一部のMOM(Message Oriented Middleware)は、並列処理の利用を避けることによって、シーケンシング機能を提供する(つまり、これらは1件のデキューの消費者のみに対して実行する)。したがって、これらは、スケーラビリティを犠牲にして、シーケンスを保証する。Oracle(登録商標) Advanced Queuingは典型例である。 Some MOMs (Message Oriented Middleware) provide sequencing capabilities by avoiding the use of parallel processing (ie, they only run for a single dequeued consumer). They therefore guarantee the sequence at the expense of scalability. Oracle (R) Advanced Queueing is a typical example.
他の一部のMOM(MQ-Seriesなど)は、コリレータに基づくシーケンス機能を提供するが、これらは、処理するシーケンスのメッセージが論理的にグループ化されていることを要件とする。その上、グループのサイズに制限があり、MOMはデキュー処理に新たな制限が加えられていることがある。 Some other MOMs (such as MQ-Series) provide correlator-based sequencing functions, which require that the messages in the sequence to be processed are logically grouped. In addition, there is a limit on the size of the group, and the MOM may have a new limit on the dequeue process.
本発明による分散並列型処理は、並列性とスケーラビリティを維持し、メッセージまたはサービスコールを関連付け、あるいはデキュー処理によって処理する方法において特別な制限がない、厳格なシーケンシングを提供する。本発明の方法、装置、およびシステムによる高度なスケーラビリティおよび障害許容力によって、以下が実現する:
・ 「ポストおよびクイット」の原則を利用して、別の処理(肯定応答処理)は肯定応答を受信する役割を担いながら、メッセージがポストされ、肯定応答を待つことなく処理を行う、全面的な非同期配信処理を実行し、それによって非常に高度なメッセージスループットによる処理が可能になる;
・ および、全面的な分散処理を実行し、シーケンスとインバウンド/アウトバウンドハンドラ間の類似性を取り除くことによって、インバウンド/アウトバウンドハンドラは、どのシーケンスのメッセージの取扱いも可能になる。
The distributed parallel processing according to the present invention provides strict sequencing that maintains parallelism and scalability, and has no special restrictions on how messages or service calls are associated or processed by dequeue processing. With the high scalability and fault tolerance of the method, apparatus and system of the present invention, the following is achieved:
• Using the “post and quit” principle, another process (acknowledgment process) is responsible for receiving the acknowledgment, while the message is posted and processed without waiting for the acknowledgment. Perform asynchronous delivery processing, which allows processing with very high message throughput;
And, by performing full distributed processing and removing the similarity between sequences and inbound / outbound handlers, inbound / outbound handlers can handle any sequence of messages.
メッセージシーケンシングの通常の方法に、モノプロセス構造に戻ることがあるが、これは、障害許容力とスケーラビリティにおいて重大で、時には受け入れられない制限がある。それに対して、本発明は、シーケンスの濃度を高く保ちながら、分散並列処理においてインバウンドハンドラレベルおよびアウトバウンドハンドラレベルの2段階で多くの利点を提供する。つまり、システムが多数のシーケンスを並列的に取り扱う必要があれば、本発明はシーケンス処理の並列化に多くの利点を提供する。 The usual method of message sequencing may return to the monoprocess structure, which is critical in fault tolerance and scalability, and has unacceptable limitations. In contrast, the present invention provides many advantages in two stages, inbound handler level and outbound handler level, in distributed parallel processing while keeping the sequence density high. In other words, if the system needs to handle a large number of sequences in parallel, the present invention provides many advantages for parallelization of sequence processing.
シーケンスの維持に関して、ストレージ領域、およびデキュー処理に前提条件はない:
・ インバウンドハンドラのメッセージ受け入れのキュー処理、およびアウトバウンドハンドラ層のメッセージ処理のキュー処理は、本発明によって達成されるので、シーケンスの保持をサポートする必要はない;
・ メッセージの並列ストレージおよび並列取得(つまり、キューイング/デキューイング)は、完全に維持される;
・ 非制限的な実施形態によると、キューストレージ自体は、ノードに対してローカルになることができ、オーバーフローストレージ領域は、グローバルなままである(つまり、すべてのアウトバウンドハンドラに共有されている)。どのノードも与えられたシーケンスを処理することができるので、オーバーフローストレージは共有される必要があり、オーバーフローストレージは一意的なオーバーフロー領域にアクセスし、ストレージにおいて実際にキューおよびデキューイングを行う。キューストレージがすべてのアウトバウンドハンドラによって共有されない場合、単独のアウトバウンドハンドラまたは複数のアウトバウンドハンドラに専有とすることができる。キューストレージがすべてのアウトバウンドハンドラに共有されない場合、各メッセージは、1つのローカルのキューストレージのみによって受信される;
・ メッセージは、ステータスが変更されてオーバーフロー領域に配置するので、例外キューの必要がなく、拒絶メッセージのストレージは容易である。
There are no prerequisites for storage space and dequeuing for sequence maintenance:
• Inbound handler message acceptance queuing and outbound handler layer message processing queuing are accomplished by the present invention and need not support sequence preservation;
• Parallel storage and retrieval of messages (ie queuing / dequeuing) is fully maintained;
According to a non-limiting embodiment, the queue storage itself can be local to the node, and the overflow storage area remains global (ie shared by all outbound handlers). Since any node can process a given sequence, overflow storage needs to be shared, and overflow storage accesses a unique overflow area and actually queues and dequeues in the storage. If queue storage is not shared by all outbound handlers, it can be dedicated to a single outbound handler or multiple outbound handlers. If queue storage is not shared by all outbound handlers, each message is received by only one local queue storage;
-Since the status of the message is changed and placed in the overflow area, there is no need for an exception queue, and storage of rejection messages is easy.
本発明の方法、装置、およびシステムによると、メッセージシーケンスが、シーケンスの特定とシーケンス内のメッセージランクを特定することによって、分散並列モードにおいて処理される。特定することに加えて、シーケンスは、管理および再配列され、それには、シーケンスロックおよびタイムアウトが含まれる。これらの態様は、以下に詳述される。 According to the method, apparatus, and system of the present invention, a message sequence is processed in a distributed parallel mode by identifying the sequence and identifying the message rank within the sequence. In addition to specifying, sequences are managed and rearranged, including sequence locks and timeouts. These aspects are described in detail below.
シーケンスの特定
与えられた伝送チャネルにおいて共有されるメッセージまたはイベントのフロー中で、関連メッセージのセットは、シーケンスが優先されるので、明確に定義される必要がある。図6は、エミットシステム610およびプロセスシステム630間の伝送および処理チャネル620内で、シーケンスを識別する処理を例証するフローチャートである。
In a flow of messages or events shared in a given transmission channel of a sequence, a set of related messages needs to be clearly defined because the sequence takes precedence. FIG. 6 is a flowchart illustrating the process of identifying a sequence in the transmission and
専用パラメータは、与えられた伝送に含まれる各メッセージ要素(messaging primitive)に提供される。この専用パラメータは、シーケンス識別子であり、シーケンス相関値とも呼ばれる。これは典型的に、メッセージのエミットシステムによって設定される英数字の値である。このパラメータは、関与する各構成要素によって使用され、同じシーケンスに属するメッセージを識別する。例えば、メッセージ1〜4は、伝送チャネル620内で解析され、メッセージ#1〜#4と識別される。これらの関連付けされ、順序付けされたメッセージは、同じ送信チャネル620を共有し、連続的にお互いを追跡することはない。これらは、送信チャネル620において、他のシーケンスに属するメッセージと結合する。
A dedicated parameter is provided for each message primitive included in a given transmission. This dedicated parameter is a sequence identifier and is also called a sequence correlation value. This is typically an alphanumeric value set by the message's emmit system. This parameter is used by each participating component and identifies messages belonging to the same sequence. For example, messages 1-4 are analyzed in
シーケンス相関パラメータは、与えられた送信および処理チェーンにおいて、個別の衝突する処理により共有されないことを確実にするために、定義される。この状況では、厳格に一意的であることが必須となる。このシーケンス相関パラメータの定義は、本システムを使用する業務処理の責務である。 Sequence correlation parameters are defined to ensure that they are not shared by individual conflicting processes in a given transmission and processing chain. In this situation, it must be strictly unique. The definition of the sequence correlation parameter is the responsibility of the business process using this system.
シーケンス内のメッセージランクの識別
特定の順序によって処理される必要のあるメッセージは、以下の2種類に分類される:
・ 第1種類のメッセージは、シーケンス内の順序またはランクがメッセージの作成時に判明し、メッセージの総数も、メッセージの作成時に判明することが好ましく、生成処理は、各メッセージの伝送要素に特定のメッセージランク番号を割り当てることができる。このメッセージランク番号は、次に、全体的なチェーンの一部として、最終処理が実行されるまで、各処理によって運ばれ、格納される;
・ 第2種類のメッセージのシーケンス内の順序は、生成時に判断される。これらの第2種類のメッセージの処理は通常、インクリメンタルであり、つまり、処理内の各新規メッセージ(またはイベント)は、シーケンス内の前のメッセージの処理結果を変更する。その点において、メッセージのエミットシステムは、与えられたシーケンス内のメッセージランクもメッセージの数も把握しておらず、シーケンス内のメッセージの総数も把握していない。
分かり易くするために、この記述では、与えられたシーケンス内のメッセージのメッセージランク番号をメッセージランクと呼ぶ。
Identification of the message rank in the sequence Messages that need to be processed in a specific order are classified into two types:
For the first type of message, the order or rank in the sequence is known at the time of message creation, and the total number of messages is preferably also known at the time of message creation. A rank number can be assigned. This message rank number is then carried and stored by each process as part of the overall chain until the final process is performed;
The order in the sequence of the second type message is determined at the time of generation. The processing of these second types of messages is usually incremental, that is, each new message (or event) in the process changes the processing result of the previous message in the sequence. In that regard, the message emit system does not know the message rank or number of messages in a given sequence, nor does it know the total number of messages in the sequence.
For simplicity, this description refers to the message rank number of messages in a given sequence as the message rank.
コアシーケンス管理
図7に例証するように、非同期分散処理システムは以下を含む:
・ 複数のインバウンドハンドラ710、720、…、740が、インバウンドハンドラ層を形成する。インバウンドハンドラは着信メッセージ711、721、731、および741を受信し、それらを個別にキューストレージ750に格納し、これら着信メッセージ711、721、731、および741を問題なく受信したことを示す肯定応答を、エミットシステムに送る;
・ 複数のアウトバウンドハンドラ760、770、…、790が、アウトバウンドハンドラ層を形成する。各アウトバウンドハンドラはキューストレージ750からメッセージを取得し、それらを処理するよう構成される。アウトバウンドハンドラはまた、処理済みメッセージのアプリケーションへの転送を担当する。
Core Sequence Management As illustrated in FIG. 7, the asynchronous distributed processing system includes:
A plurality of
A plurality of outbound handlers 760, 770, ..., 790 form an outbound handler layer. Each outbound handler is configured to retrieve messages from
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。 Inbound handlers are also called acceptors or acceptor processes. An outbound handler may be referred to as a processor or delivery process.
図8Aは、インバウンドハンドラがエミットシステムから受信したシーケンスAの第1メッセージをシーケンシング処理するステップを例証する図7の実施形態を改善した図である。ここでの改善によって、シーケンスストレージ800と呼ばれる追加された構成要素が、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890の間にストレージ層の一部として実装されている。シーケンスストレージ800は以下を含む:
・ ミューテックスとも呼ばれる、集中型、または共有型シーケンスであるミューテックス804は、一度に、1つのハンドラのみが、与えられたシーケンス(または同じシーケンス相関値が付与されたもの)のメッセージを取り扱うことを確実にし、競合する場合、先着順とする;
・ ステータスとも呼ばれる、集中型または共有型シーケンスステータスコンテキスト802は、すべての処理の間のシーケンスステータスの共有を維持し、シーケンスは、シーケンス自体のシーケンス相関値により一意的に識別される。ステータスはまた、与えられたシーケンスの各イベントに対し、適用する動作を決定することができる;
・ 「待ち(waiting)」ステータスは、次の着信メッセージを配信のためにキューに入れることを意味する;
・ 「配信中(delivering)」ステータスは、次の着信メッセージが保持されていることを意味する;
・ オーバーフロー、またはオーバーフローストレージ領域とも呼ばれる集中型または共有型オーバーフローストレージ806は、複数のアウトバウンドハンドラによって次に処理されるメッセージのみが、それらにアクセスできることを確実にし、他はこのオーバーフロー領域において「保留(pending)」とする。オーバーフローストレージは、インデックス付けされ、順序づけされた、現在のシーケンスステータスに関して、配信される準備ができていないシーケンスメッセージである。
FIG. 8A is an improvement over the embodiment of FIG. 7 illustrating the steps for the inbound handler to sequence the first message of sequence A received from the emit system. With this improvement, an additional component called
A
A centralized or shared
A “waiting” status means that the next incoming message is queued for delivery;
“Delivering” status means that the next incoming message is held;
Centralized or shared
ステータス802、ミューテックス804、およびオーバーフローストレージ806の3つの構成要素は、文脈処理情報であり、キューストレージ850と同じ性質を有する。これらは、以下に実装される:
・ すべての分散処理が同じノードで実行される場合は、メモリーデータ、またはファイルベースのストレージ;または
・ サーバシステムが遠隔システムであるいくつかのノードで分散処理が実行される場合は、クライアント/サーバストレージデータベース。
The three components of
• Memory data or file-based storage if all distributed processing is performed on the same node; or • Client / server if distributed processing is performed on several nodes where the server system is a remote system Storage database.
ストレージ層と標準メッセージストレージの間の最大の一貫性は、独自のトランザクションを共有する共有RDBMSエンジンに両者を実装することである。 The greatest consistency between the storage layer and standard message storage is to implement both in a shared RDBMS engine that shares its own transactions.
本発明の方法、装置、およびシステムによると:
・ キューストレージ850は、複数のインバウンドハンドラと複数のアウトバウンドハンドラの間のメッセージの交換を可能にし、シーケンスストレージ800から独立して動作し;
・ シーケンスストレージ800のオーバーフローストレージ806は、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890間のメッセージ交換のシーケンシングを確実にする。
According to the method, apparatus and system of the present invention:
The
The
図8Aは、本発明の着信メッセージのシーケンシング処理を例証する:
・ メッセージ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をリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
FIG. 8A illustrates the incoming message sequencing process of the present invention:
Message 801-1 belongs to sequence correlation value “A” and is received by
The
The
The
図8Bは、他の着信メッセージがシステムによって受信される、シーケンシング処理の次のステップを例証する:
・ 第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」のミューテックスをリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
FIG. 8B illustrates the next step in the sequencing process where other incoming messages are received by the system:
The second message 801-2 belongs to the sequence “A” and is received by the
The
The
A message rank value incremented by adding 1 to the previous incoming message is assigned to the incoming message as the message rank. Since the message rank of the previous message is 1, the message rank assigned to the incoming message is 2. In addition, the present invention increments a sequence rank that defines the rank of the next message to be processed in that sequence. If multiple messages from the same sequence are stored in the
図8Cは、キューストレージのキューに格納されたメッセージが、アウトバウンドハンドラの1つに処理のためにデキューされる、シーケンシング処理の次のステップを例証する:
・ アウトバウンドハンドラ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に該当する。
FIG. 8C illustrates the next step in the sequencing process, where a message stored in the queue storage queue is dequeued for processing by one of the outbound handlers:
One of the
The receiver receives the message from the
図8Dは、次のメッセージが処理のために、アウトバウンドハンドラの1つに転送される前に、オーバーフローストレージ領域806に格納され、キューストレージ850に転送されるシーケンシング処理の次のステップを示す。図8Dに示されるステップは、本システムのインバウンドハンドラにおける肯定応答メッセージの受信875により、起動される:
・ アウトバウンドハンドラ860は、862に示すステータスコンテキスト802のシーケンスランクをチェックし、肯定応答したメッセージのシーケンス内で、処理すべき次のメッセージのランクを判断する。シーケンスランクは、「2」に設定されているので、アウトバウンドハンドラ860は、809に示すメッセージランク「2」を有するオーバーフローストレージ領域806からの、シーケンス「A」のメッセージ807を取得する。このメッセージ807は、次に、キューストレージ850に格納され、すべてのアウトバウンドハンドラに対し、利用可能となる。ステータスコンテキスト802は「処理中(Processing)」のままである。シーケンスランクは、インクリメントされ、「3」に設定されるので、次に処理されるメッセージは「3」と同等のメッセージランクを有することを示す;
・ アウトバウンドハンドラ860は、停止し、キューストレージ850に格納されている別のメッセージの処理を行うよう準備する;
・ 処理は、着信メッセージがすべてのシーケンスが処理され、配信されるまで、継続される。
FIG. 8D shows the next step in the sequencing process where the next message is stored in the
Processing continues until the incoming message has been processed and delivered through all sequences.
図8A〜8Dに示す処理は、受信した着信メッセージのシーケンスインデックス(シーケンス内のメッセージのランクを示す)の有無については統一されている。それが提供されている場合、同じシーケンス内の受信順序に基づき、インバウンドハンドラによってランキングが生成されている場合でない限り、シーケンシングランクとして使用される。 The processes shown in FIGS. 8A to 8D are unified with respect to the presence / absence of the sequence index (indicating the rank of the message in the sequence) of the received incoming message. If it is provided, it is used as a sequencing rank unless ranking is generated by an inbound handler based on the order of reception within the same sequence.
シーケンスの再配列
図8A〜8Dに詳細に示した、着信メッセージが厳格なシーケンス順序に従ってインバウンドハンドラによって受信される処理に加えて、シーケンス外で受信したメッセージを処理するため、同じ処理を実行した。唯一の事実上の前提条件は、メッセージのエミッタが同じシーケンス内の各メッセージに対し、シーケンス内でのメッセージのランクを示すインデックスを提供することである。
Sequence Reordering In addition to the process shown in detail in FIGS. 8A-8D, where incoming messages are received by the inbound handler according to a strict sequence order, the same process was performed to process messages received out of sequence. The only practical prerequisite is that the message emitter provides an index indicating the rank of the message in the sequence for each message in the same sequence.
先に示した通り、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。キューストレージ850が、与えられたシーケンスからメッセージを受信することができると、シーケンスランクがチェックされる。メッセージランクがシーケンスランクと同等のメッセージのみが、キューストレージ850に転送される。シーケンスランクと同等のメッセージランクを有するメッセージがシーケンスストレージ800のオーバーフロー領域806にない場合、このシーケンスの処理は、インバウンドハンドラから正しいランクのメッセージを受信するまで、保留される。したがって、シーケンスランクは、処理すべきメッセージを示すカウンターのように作動する。シーケンスランクは、シーケンスストレージ800内に格納されることが好ましい。
As indicated above, the present invention increments a sequence rank that defines the rank of the next message to be processed in that sequence. When the
図8Eは、シーケンスが再配列された着信メッセージ801のシーケンシング処理のステップを例証する:
複数のインバウンドハンドラ810、…、840、によって実行される前述の処理に加えて、インデックスの命令により行われた再配列に関するステップが追加される場合がある;
・ メッセージのインデックスにより示されるメッセージのランクは、シーケンスの順序を維持するため、次に処理されるメッセージのランクと比較される。シーケンス順序を維持するための、次に処理するメッセージのこのランクは、インクリメントして更新されるシーケンスランクによって、好ましくはシーケンスストレージにおいて示される;
・ メッセージのランクが818に示すようにシーケンスランクと一致する場合、着信メッセージ815はキューストレージ850に格納され、複数のアウトバウンドハンドラに使用可能となる。シーケンスステータスは「処理中(Processing)」に設定される。処理するシーケンスランクは、インクリメントされ、先述した処理が適用される;
・ インデックスにより示されるメッセージのランクが、シーケンスランク819を越える場合、メッセージ813は、オーバーフローストレージ806に格納される。シーケンスステータス802は「保留(Pending)」に設定される。メッセージは、事実上、処理されない。所望のメッセージランクを有する、処理すべきメッセージがインバウンドハンドラにより受信されると、シーケンシングは再開される。その場合、インバウンドハンドラは対応するメッセージをキューストレージに格納し、シーケンスステータスを「処理中(Processing)」に設定する。
FIG. 8E illustrates the steps of the sequencing process for
In addition to the above-described processing performed by the plurality of
The message rank indicated by the message index is compared with the rank of the next message to be processed in order to maintain the sequence order. This rank of the next message to process to maintain the sequence order is preferably indicated in the sequence storage by a sequence rank that is incremented and updated;
If the message rank matches the sequence rank as shown at 818, the
If the rank of the message indicated by the index exceeds the sequence rank 819, the
図8A〜8Dに示す処理に関しては、アウトバウンドハンドラがメッセージに対する動作を終了すると、アウトバウンドハンドラは、オーバーフローストレージ806内で、メッセージランクがシーケンスランクに一致するメッセージを探す(シーケンスランクは、シーケンスの順序を維持するための、次に処理すべきメッセージのランクを示す)。もし該当するメッセージが見つかった場合、キューストレージ850に格納するが、もし該当メッセージが見つからなかった場合、シーケンスステータスは、「保留(Pending)」(このシーケンスのメッセージがオーバーフロー領域に存在するが、メッセージランクは、シーケンスランクと同等でない場合)または、「待ち(Waiting)」(オーバーフローストレージ領域にそのシーケンスのメッセージは存在しない)に設定される。
8A-8D, once the outbound handler has finished operating on the message, the outbound handler looks in the
シーケンスロックとタイムアウトの管理
前述した通り、与えられたシーケンスの受信メッセージは、これらのメッセージランクが処理すべきメッセージに合致しない限り、オーバーフロー806に格納される。これは、次と予想される処理すべきメッセージがインバウンドハンドラによって受信されない限り、シーケンス全体にとってはロック状態となる。
Sequence Lock and Timeout Management As described above, received messages of a given sequence are stored in
特定の実施形態で、本発明は、このロック状態が処理によって要求されれば、時間的に制限されることを確実にする。この処理はさらに、長さ(秒、分、日数、など)によって表現されるグローバルなシーケンスタイムアウト値を定義する。 In certain embodiments, the present invention ensures that this lock state is limited in time if requested by a process. This process further defines a global sequence timeout value expressed in length (seconds, minutes, days, etc.).
他の実施形態では、シーケンスコンテキスト802は、シーケンスタイムアウトとして定義される絶対時刻値を含んでもよい。インバウンドハンドラまたはアウトバウンドハンドラが与えられたシーケンスコンテキスト記録にアクセスする度に、つまり、シーケンスに属するメッセージを何らかの方法で処理していて、シーケンスに対する動作を示す場合、この絶対時刻値は、現在のシステム時刻とシーケンスタイムアウト期間の総和である値により更新される。
In other embodiments, the
さらに別の実施形態では、シーケンスコンテキストのフルリストを定期的に起動し、スキャンするタイムアウトシーケンスコレクターを実装してもよい。この特別な実装によって、シーケンス期間が期限切れとなったシーケンスはいずれも、検出される。この処理は、選択を達成するために、シーケンスタイムアウト値を活用する。 In yet another embodiment, a timeout sequence collector may be implemented that periodically activates and scans the full list of sequence contexts. With this special implementation, any sequence whose sequence period has expired is detected. This process takes advantage of the sequence timeout value to achieve the selection.
これが実装されることによって、本発明による方法、装置、およびシステムは以下のことが可能となる:
・ オーバーフローストレージ806およびシーケンスコンテキスト802における対応するメッセージを消去する;
・ 特定のシーケンス期限イベントに対し、十分な処理と記録を実行する;
・アイテムを順番に取るか、見つかるまで次を待つ間はアイテムを無視して、同期をずらす;
・アラームを発する。
By implementing this, the method, apparatus and system according to the present invention can:
Delete corresponding messages in
Perform sufficient processing and recording for specific sequence deadline events;
Take items in order or ignore items while waiting for the next until they are found;
・ Sound an alarm.
本発明は、データ処理に多くのアプリケーションを有する。しかし、それは特に以下に示す内容について適している:
・ 企業、より具体的には、ソフトウェア企業のインフラストラクチャのハブとし作動するアプリケーションが長時間のメッセージングを取扱うAMS(Amadeus Messaging Server)などのメッセージングサーバ。予約業務を必要とする業界では、AMSは予約システムおよび出発管理システムの両方で使用される。シーケンシングは、すべてのテレタイプのトラフィックのために実行される。テレタイプのメッセージは、通常、TTYと呼ばれる。TTYタイプBは、航空業界の標準であり、与えられた機能的コンテキストにおいて厳格な順序で処理を行う非同期チャネルを介してメッセージを交換する。例えば、第1メッセージは、搭乗客のリストを含み、第2リストは、非搭乗の乗客(suppressed passengers)を含み、第3リストは、追加の乗客のリストを含む。これらの乗客名簿は、順序を厳格に守る必要がある;
・ 別の分野の用途として、例えば、OHF(OTF high-level framework)があり、これは、保証された非同期配信を実行するための多くの用途で使用されるミドルウェアソフトウェアコンポーネントである。OHFのシーケンシングの主な使用方法として、CDB(coupon database)と電子チケット用途の間の同期化が挙げられる。限られた時間内に、1つのクーポンに多くの変更が加えられることはよくある。これらの変更は、同期を維持するため、正しい順序で、電子チケットアプリケーション、またはクーポンデータベースに転送される必要がある。
The present invention has many applications for data processing. However, it is particularly suitable for the following:
A messaging server, such as an AMS (Amadeus Messaging Server), where an application operating as an infrastructure hub of a company, more specifically a software company, handles long-time messaging. In industries that require a booking service, AMS is used in both booking and departure management systems. Sequencing is performed for all teletype traffic. Teletype messages are usually called TTY. TTY Type B is an airline industry standard that exchanges messages over asynchronous channels that process in a strict order in a given functional context. For example, the first message includes a list of passengers, the second list includes suppressed passengers, and the third list includes a list of additional passengers. These passenger lists need to follow the order strictly;
Another area of application is, for example, OHF (OTF high-level framework), which is a middleware software component used in many applications to perform guaranteed asynchronous delivery. The primary use of OHF sequencing is to synchronize between CDB (coupled database) and electronic ticket applications. Often, many changes are made to a coupon within a limited time. These changes need to be transferred to the electronic ticket application or coupon database in the correct order to remain synchronized.
上記では主に、エアラインまたはエアキャリアにより提供される旅行ソリューションについて取り上げたが、当業者は、本発明の実施形態が、エアラインの使用に限定されず、これらに限定されないが、船舶、鉄道、自動車、バスおよびホテルなどの旅行商品などを含む、他の種類の旅行様式および旅行提供業者にも適応できることを理解されたい。 While the above has primarily focused on travel solutions provided by airlines or air carriers, those skilled in the art will recognize that embodiments of the present invention are not limited to, but not limited to, use of airlines, ships, railways It should be understood that other types of travel styles and travel providers can also be applied, including travel products such as cars, buses and hotels.
上記は、典型的かつ非限定の例を用いて様々な方法、装置、およびソフトウェアを全面から例証し、本発明の実施形態として運用するものである。しかし、上記説明を、添付の図面および請求項と併せると、様々な修正および改造は、関連技術の当業者には明らかにされよう。例の一部として、他の類似した、あるいは、同等の処理、または、アルゴリズム、およびデータ表記は、当業者によって試行されてもよい。さらに、各構成要素、関数、アルゴリズム(例:、など)の名称は単に記述的なもので、限定された意味を持つことを意図しておらず、これらの構成要素、関数、およびアルゴリズムは、適切であればどのような名称で呼んでもよい。本発明における教示の、そのような類似した修正はすべて、本発明の実施形態の範囲に含まれる。 The above illustrates various methods, apparatus, and software from the whole using typical and non-limiting examples, and operates as an embodiment of the present invention. However, various modifications and adaptations will become apparent to those skilled in the relevant art when taken in conjunction with the accompanying drawings and claims. As part of the example, other similar or equivalent processes or algorithms and data representations may be tried by those skilled in the art. Furthermore, the names of each component, function, and algorithm (eg, etc.) are merely descriptive and are not intended to have a limited meaning; these components, functions, and algorithms are You may call it by any name as appropriate. All such similar modifications of the teachings of the present invention are within the scope of embodiments of the present invention.
さらに、本発明の実施形態のいくつかの機能は、他の機能の対応する使用なしに、有利に利用される。そのため、上記説明は、これらに限定されることなく、本発明の原理、教示、および実施形態を単に説明するものである。 Furthermore, some features of embodiments of the present invention are advantageously utilized without the corresponding use of other features. Therefore, the above description is merely illustrative of the principles, teachings, and embodiments of the present invention, without being limited thereto.
本明細書で説明した様々な技術の実施形態は、ディジタル電子回路、コンピュータハードウェア、ハンドヘルド電子機器ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせに実装されてもよい。本実施形態は、データ処理装置(例:プログラマブルプロセッサ、コンピュータ、タブレット、または多数のコンピュータによって)によって実行されるか、データ処理装置の動作を制御するために、プログラム、またはソフトウェア製品として、つまり、情報キャリアに有形に具体化されたコンピュータプログラムとして(例:機械可読ストレージ装置、または伝播される信号内において)実装されてもよい。上記のコンピュータプログラムなどのプログラムは、コンパイルされた、あるいは、インタプリタされた言語を含む、如何なる形式のプログラミング言語で記述することが可能であり、スタンドアローンプログラム、モジュール、コンポーネント、サブルーチン、その他コンピューティング環境において使用が適切な装置を含む如何なる形式でも展開可能である。プログラムは、1台のコンピュータ、またはタブレット、複数のコンピュータ、またはタブレット、1つのサイト、または複数のサイトに分散して、通信ネットワーク、または無線ネットワークを介して相互接続して展開し、実行することが可能である。 Embodiments of the various techniques described herein may be implemented in digital electronic circuitry, computer hardware, handheld electronic hardware, firmware, software, or combinations thereof. This embodiment is executed by a data processing device (eg, by a programmable processor, computer, tablet, or multiple computers) or as a program or software product to control the operation of the data processing device, ie It may be implemented as a computer program tangibly embodied in an information carrier (eg in a machine-readable storage device or in a propagated signal). Programs such as the computer programs described above can be written in any form of programming language, including compiled or interpreted languages, stand-alone programs, modules, components, subroutines, and other computing environments Can be deployed in any form including devices suitable for use. The program is distributed on one computer or tablet, multiple computers or tablets, one site, or multiple sites, interconnected via a communication network or wireless network, and deployed and executed Is possible.
コンピュータプログラムを実行するのに適切なプロセッサの例として、汎用型および専用型マイクロプロセッサ、および、様々なタイプのディジタルコンピュータ、タブレット、または電子機器の1基以上のプロセッサが挙げられる。一般に、プロセッサは、ROM(Read-only memory)またはRAM(Random access memory)またはその両方から命令とデータを受ける。コンピュータの構成要素は、命令を実行する少なくとも1つのプロセッサと、命令およびデータを格納する1つ以上のメモリ装置を備える。一般に、コンピュータ、または電子機器は、データを受信、送信、および送受信するため、さらに、1つ以上の大容量ストレージ装置(例:磁気ディスク、光磁気ディスク、光ディスク)を有するか、効果的に結合されている。 Examples of suitable processors for executing computer programs include general and special purpose microprocessors and one or more processors of various types of digital computers, tablets, or electronic devices. Generally, a processor receives instructions and data from a read-only memory (ROM), a random access memory (RAM), or both. The computer components comprise at least one processor for executing instructions and one or more memory devices for storing instructions and data. In general, a computer or electronic device has one or more mass storage devices (eg, magnetic disk, magneto-optical disk, optical disk) or is effectively coupled to receive, transmit, and transmit and receive data. Has been.
本実施形態は、バックエンドコンポーネントを含むコンピューティングシステム(例:データサーバ)、ミドルウェアコンポーネントを含むコンピューティングシステム(例:アプリケーションサーバ)、フロンドエンドコンポーネントを含むコンピューティングシステム(例:グラフィカルユーザーインタフェース、またはWebブラウザを有し、これらを介してユーザーは、実装プログラムと相互作用が可能なクライアントコンピュータ)、または、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントを組み合わせた、コンピューティングシステムに実装されてもよい。構成要素は、通信ネットワーク、無線ネットワーク、電気通信ネットワークなどの、ディジタルデータ通信の如何なる形式、または媒体により相互接続されてもよい。通信ネットワーク、または電気通信ネットワークの例として、LAN(local area network)およびWAN(wide area network)がある(例:インターネットやWifiネットワークなどの無線ネットワーク)。 The present embodiment includes a computing system that includes a back-end component (eg, a data server), a computing system that includes a middleware component (eg, an application server), a computing system that includes a front-end component (eg, a graphical user interface, or A client computer that has a web browser through which a user can interact with an implementation program) or implemented in a computing system that combines such backend, middleware, or frontend components Also good. The components may be interconnected by any form or medium of digital data communication, such as a communication network, a wireless network, a telecommunications network, etc. Examples of communication networks or telecommunications networks include a local area network (LAN) and a wide area network (WAN) (eg, a wireless network such as the Internet or a WiFi network).
本明細書では、実装された特定の機能について説明してきたが、多くの修正、代替、変更、および等価が発生することを当業者は理解されたい。したがって、本明細書に記載の請求項には、本発明の実施形態の精神と範囲にしたがって、そのようなすべての修正や変更が含まれることを理解されたい。 Although specific features implemented have been described herein, those skilled in the art will appreciate that many modifications, alternatives, changes, and equivalents will occur. Accordingly, it is to be understood that the claims herein contain all such modifications and changes in accordance with the spirit and scope of the embodiments of the present invention.
Claims (21)
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および
前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する、方法。 Distributed asynchronous message sequencing by a computer using at least one data processor in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer How to:
The inbound handler of any of the plurality of inbound handlers receiving an incoming message that includes a sequence correlation value that identifies a sequence that includes the incoming message;
Checking the sequence status of the sequence in shared sequence storage; and determining whether the incoming message is the next message to process in order to maintain the order of messages in the sequence;
If the sequence status indicates that none of the outbound handler layer's outbound handlers are currently processing messages in the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, the incoming Forward the message to queue storage, then get the message by an outbound handler available in the outbound handler layer for processing,
If the sequence status indicates that at least one of the outbound handlers of the outbound handler is currently processing messages of the sequence, or if the queue storage already contains messages to be processed of the sequence, Alternatively, if it is determined that the incoming message is not a message to be processed next in the sequence, the incoming message is stored in the memory of the shared overflow storage and retained for further processing.
前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を有し、
メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され、
メッセージランクがシーケンスランクと同一でない場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために次に処理すべきメッセージとは判断されない、方法。 The method of claim 1, comprising determining whether an incoming message is a next message to be processed in order to maintain the order of the messages in the sequence:
Determining a message rank indicating the order of incoming messages in the sequence; and comparing the message rank with a sequence rank defining a rank of the next message to be processed in the sequence;
If the message rank is the same as the sequence rank, the message is determined to be the next message to be processed in order to maintain the order of the messages in the sequence;
If the message rank is not the same as the sequence rank, the message is not determined to be the next message to be processed in order to maintain the order of the messages in the sequence.
インバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラを含み、複数のインバウンドハンドラのそれぞれは、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、複数のインバウンドハンドラを含む、インバウンドハンドラ層;および、
アウトバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラを含み、複数のアウトバウンドハンドラのそれぞれは、複数の着信メッセージを独立して処理し転送するように構成されている、複数のアウトバウンドハンドラを含む、アウトバウンドハンドラ層、を含む分散並列型処理システムであって;システムは:
少なくとも1つのメモリを含むストレージ層を含み;当該ストレージ層は:
- 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
- 共有シーケンスストレージを含み;当該共有シーケンスストレージは:
- 着信メッセージの各シーケンスのステータスを維持し、更新するためのシーケンスステータスコンテキスト;および
- インバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成された共有オーバーフローストレージ;を含み、
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下のステップを実行するよう構成されたシステムであって:
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取り出すステップ;および
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージをオーバーフローストレージのメモリに格納し、さらなる処理のために保持する、ステップを実行するよう構成された非同期メッセージをシーケンシングする分散並列型処理システム。 A distributed parallel processing system for sequencing asynchronous messages:
An inbound handler layer comprising a plurality of inbound handlers including at least one data processor, each of the plurality of inbound handlers configured to independently receive a plurality of incoming messages associated with various sequences An inbound handler layer comprising a plurality of inbound handlers; and
An outbound handler layer comprising a plurality of outbound handlers including at least one data processor, each of the plurality of outbound handlers configured to independently process and forward a plurality of incoming messages; A distributed parallel processing system that includes an outbound handler layer, including an outbound handler; the system:
Including a storage layer including at least one memory;
-Queue storage to store incoming messages that are ready to be transmitted to multiple outbound handlers; and
-Includes shared sequence storage; the shared sequence storage is:
-A sequence status context to maintain and update the status of each sequence of incoming messages; and
-Shared overflow storage configured to receive messages from inbound handlers and forward them sequentially to queue storage;
The system also determines whether the incoming message is the next message to be processed in order to maintain the message order in this sequence of messages and performs the following steps executed by at least one data processor: A system configured as follows:
-If the sequence status indicates that none of the outbound handler layer's outbound handlers are currently processing messages in the sequence and it is determined that the incoming message is a message to be processed next to the sequence, Sending the incoming message to queue storage and then retrieving the message by an outbound handler available for processing; and
-If the sequence status indicates that at least one of the outbound handler layer's outbound handlers is currently processing messages of the sequence, or if the queue storage already contains messages to be processed of the sequence Or, if it is determined that the incoming message is not the next message to be processed in the sequence, the incoming message is stored in an overflow storage memory and held for further processing. A distributed parallel processing system for sequencing asynchronous messages.
複数のインバウンドハンドラのうちの1つのインバウンドハンドラにおいて、受信メッセージを含むシーケンスを特定するシーケンス相関値が伴う着信メッセージを受信するステップと;
シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップと;
前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断するステップと;を有し、
シーケンスステータスが、複数のアウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し、
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し、
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む、旅行モニタリング方法。 Using at least one data processor to process asynchronous messages between at least one server application and at least one client application in a parallel environment having a plurality of parallel inbound handlers and a plurality of parallel outbound handlers; A computer-implemented travel monitoring method comprising:
Receiving an incoming message in one of the plurality of inbound handlers with a sequence correlation value that identifies a sequence that includes the received message;
Checking the sequence status of the sequence in sequence storage;
Determining whether the incoming message is the next message to be processed in order to maintain the order of the messages in the sequence;
When the sequence status indicates that none of the plurality of outbound handlers is currently processing the message of the sequence, and it is determined that the incoming message is a message to be processed next to the sequence , Send the incoming message to queue storage, then forward it to an outbound handler available for processing,
If the sequence status indicates that at least one of the outbound handlers is currently processing a message of the sequence, or if the queue storage already contains a message to be processed of the sequence, or an incoming message Is not a message to be processed next in the sequence, the incoming message is stored in shared overflow storage and held for further processing;
The travel monitoring method, wherein the message includes data relating to passengers and data including sequence correlation values relating to traffic service references.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 |
EP12368017.5 | 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 |
US13/565,284 | 2012-08-02 | ||
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 (en) | 2015-09-17 |
JP2015527658A5 JP2015527658A5 (en) | 2017-08-24 |
JP6198825B2 JP6198825B2 (en) | 2017-09-20 |
Family
ID=48953356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015524671A Active JP6198825B2 (en) | 2012-08-02 | 2013-08-01 | Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP6198825B2 (en) |
KR (1) | KR101612682B1 (en) |
CN (1) | CN104428754B (en) |
IN (1) | IN2014DN10080A (en) |
WO (1) | WO2014019701A1 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107093138B (en) * | 2017-04-21 | 2019-04-30 | 山东佳联电子商务有限公司 | Auction Ask-Bid System and its operation method based on distributed clog-free asynchronous message tupe |
WO2018224659A1 (en) * | 2017-06-08 | 2018-12-13 | Amadeus S.A.S. | Multi-standard message processing |
EP3419250B1 (en) * | 2017-06-23 | 2020-03-04 | Vestel Elektronik Sanayi ve Ticaret A.S. | Methods and apparatus for distributing publish-subscribe messages |
CN110865891B (en) * | 2019-09-29 | 2024-04-12 | 深圳市华力特电气有限公司 | Asynchronous message arrangement method and device |
CN111045839A (en) * | 2019-12-04 | 2020-04-21 | 中国建设银行股份有限公司 | Sequence calling method and device based on two-phase transaction message in distributed environment |
CN111506430B (en) * | 2020-04-23 | 2024-04-19 | 上海数禾信息科技有限公司 | Method and device for processing data under multitasking and electronic equipment |
CN111562888B (en) * | 2020-05-14 | 2023-06-23 | 上海兆芯集成电路有限公司 | Scheduling method for self-updating memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07319787A (en) * | 1994-05-23 | 1995-12-08 | Hewlett Packard Co <Hp> | Message processing method and processing node |
JPH09101901A (en) * | 1995-10-06 | 1997-04-15 | N T T Data Tsushin Kk | System and method for message communication between processes performed on personal computer operated by multiprocess |
WO2008105099A1 (en) * | 2007-02-28 | 2008-09-04 | Fujitsu Limited | Application-cooperative controlling program, application-cooperative controlling method, and application-cooperative controlling apparatus |
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/en active IP Right Grant
- 2013-08-01 CN CN201380036210.XA patent/CN104428754B/en active Active
- 2013-08-01 IN IN10080DEN2014 patent/IN2014DN10080A/en unknown
- 2013-08-01 JP JP2015524671A patent/JP6198825B2/en active Active
- 2013-08-01 WO PCT/EP2013/002302 patent/WO2014019701A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07319787A (en) * | 1994-05-23 | 1995-12-08 | Hewlett Packard Co <Hp> | Message processing method and processing node |
JPH09101901A (en) * | 1995-10-06 | 1997-04-15 | N T T Data Tsushin Kk | System and method for message communication between processes performed on personal computer operated by multiprocess |
WO2008105099A1 (en) * | 2007-02-28 | 2008-09-04 | Fujitsu Limited | Application-cooperative controlling program, application-cooperative controlling method, and application-cooperative controlling apparatus |
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 |
---|---|
IN2014DN10080A (en) | 2015-08-21 |
JP6198825B2 (en) | 2017-09-20 |
WO2014019701A1 (en) | 2014-02-06 |
KR20150037980A (en) | 2015-04-08 |
CN104428754A (en) | 2015-03-18 |
KR101612682B1 (en) | 2016-04-14 |
CN104428754B (en) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6198825B2 (en) | Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment | |
US9208476B2 (en) | Counting and resetting broadcast system badge counters | |
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 (en) | Distributing multi-source push notifications to multiple targets | |
US9262241B2 (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
US10728205B2 (en) | Multi-standard message processing | |
US10055695B2 (en) | Throttling solutions into a legacy inventory system during a service disruption | |
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 | |
JP6067714B2 (en) | Scale-out system that acquires event data | |
US20220382605A1 (en) | Classical management of qubit requests | |
US8762533B2 (en) | Moving a project in a complex event processing cluster | |
JP7083850B2 (en) | Multi-standard message processing | |
CN117806785A (en) | Data processing system |
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |