[go: up one dir, main page]

KR101612682B1 - Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment - Google Patents

Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment Download PDF

Info

Publication number
KR101612682B1
KR101612682B1 KR1020157002898A KR20157002898A KR101612682B1 KR 101612682 B1 KR101612682 B1 KR 101612682B1 KR 1020157002898 A KR1020157002898 A KR 1020157002898A KR 20157002898 A KR20157002898 A KR 20157002898A KR 101612682 B1 KR101612682 B1 KR 101612682B1
Authority
KR
South Korea
Prior art keywords
message
sequence
processor
messages
outbound
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020157002898A
Other languages
Korean (ko)
Other versions
KR20150037980A (en
Inventor
니꼴라 크라센스키
끌레멍 세베이약
디디에 스뻬지아
삐에르 도르
Original Assignee
아마데우스 에스.에이.에스.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/565,284 external-priority patent/US8903767B2/en
Priority claimed from EP12368017.5A external-priority patent/EP2693337B1/en
Application filed by 아마데우스 에스.에이.에스. filed Critical 아마데우스 에스.에이.에스.
Publication of KR20150037980A publication Critical patent/KR20150037980A/en
Application granted granted Critical
Publication of KR101612682B1 publication Critical patent/KR101612682B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message 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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은, 인바운드 핸들러 층을 형성하는 복수의 인바운드 핸들러 및 아웃바운드 핸들러 층을 형성하는 복수의 아웃바운드 핸들러를 구비하는 분산 및 병렬 시스템에서 분산비동기 메시지를 시퀀싱하는 시스템 및 컴퓨터로-구현되는 방법을 제공하고, 상기 방법은, 적어도 하나의 데이터 프로세서에서 수행되는 다음 단계, 즉: 입력 메시지는 입력 메시지를 포함하는 시퀀스를 식별하는 시퀀스 상관 값을 포함하고, 복수의 인바운드 핸들러 중에서 임의의 인바운드 핸들러에서 입력 메시지를 수신하는 단계; 공유된 시퀀스 저장소에서 시퀀스의 시퀀스 상태를 체크하는 단계; 입력 메시지가 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인지 여부를 결정하는 단계;를 포함하고, - 시퀀스 상태가 아웃바운드 핸들러 층에 있는 아웃바운드 핸들러 중 그 어느 것도 시퀀스의 메시지를 현재 처리하고 있지 않는 것을 나타내는 경우 및 입력 메시지가 시퀀스에서 처리될 그 다음 메시지인 것으로 결정된 경우, 입력 메시지를 공유된 큐 저장소에 전달하고 나서, 처리를 위해 아웃바운드 핸들러 층에서 이용가능한 아웃바운드 핸들러에 의해 메시지를 검색하고; - 시퀀스 상태가 아웃바운드 핸들러 층에 있는 아웃바운드 핸들러 중 적어도 하나가 시퀀스의 메시지를 현재 처리하고 있는 것을 나타내는 경우; 또는 공유된 큐 저장소가 시퀀스에서 처리될 메시지를 이미 포함하는 경우; 또는 입력 메시지가 시퀀스에서 처리될 그 다음 메시지가 아닌 것으로 결정된 경우, 추가적인 처리를 유지하기 위해 입력 메시지를 공유된 오버플로우 저장소의 메모리에 저장하는 것을 특징으로 한다. The present invention relates to a system and computer-implemented method for sequencing distributed asynchronous messages in a distributed and parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer Wherein the input message comprises a sequence correlation value that identifies a sequence comprising an input message, wherein the input message comprises a sequence correlation value that is input from any inbound handler among the plurality of inbound handlers, Receiving a message; Checking a sequence state of the sequence in the shared sequence repository; Determining whether the incoming message is the next message to be processed to maintain the order of the message in the sequence; and determining that either of the outbound handlers whose sequence status is in the outbound handler layer is the current And if the input message is determined to be the next message to be processed in the sequence, the input message is passed to the shared queue store and then processed by the outbound handler available in the outbound handler layer for processing Retrieve the message; - the sequence state indicates that at least one of the outbound handlers in the outbound handler layer is currently processing the message of the sequence; Or the shared queue store already contains a message to be processed in the sequence; Or if the input message is determined not to be the next message to be processed in the sequence, the input message is stored in the memory of the shared overflow store to maintain further processing.

Figure R1020157002898
Figure R1020157002898

Description

분산 및 병렬 환경에서 비동기 메시지를 시퀀싱하는 방법, 시스템 및 컴퓨터 프로그램 제품{METHOD, SYSTEM AND COMPUTER PROGRAM PRODUCT FOR SEQUENCING ASYNCHRONOUS MESSAGES IN A DISTRIBUTED AND PARALLEL ENVIRONMENT} METHOD, SYSTEM AND COMPUTER PROGRAM PRODUCT SEQUENCING ASYNCHRONOUS MESSAGES IN A DISTRIBUTED AND PARALLEL ENVIRONMENT FIELD OF THE INVENTION [0001]

본 발명은 일반적으로 통신 시스템에서 데이터 및 정보 처리에 관한 것으로, 보다 상세하게는 분산 및 병렬 처리 환경에서 시퀀스의 비동기 메시지를 처리하는 방법, 장치 및 시스템에 관한 것이다. The present invention relates generally to data and information processing in communication systems, and more particularly, to a method, apparatus, and system for processing asynchronous messages in a sequence in a distributed and parallel processing environment.

분산 소프트웨어 아키텍처를 사용하여, 서비스 호출 또는 이벤트 처리에서, 메시지의 전송이 동기식이거나 또는 비동기식일 수 있다. 이 메시지는 완전히 수신자를 분리하여 분배되고 멀티캐스팅되는데, 여기서 각 멀티캐스트 메시지는 서로 독립적으로 처리된다. Using a distributed software architecture, in a service call or event processing, the transmission of the message may be synchronous or asynchronous. This message is completely distributed and multicast separated by recipients, where each multicast message is handled independently of each other.

도 1은 2개의 시스템, 즉 한쪽에 호출 시스템(calling system)(110)과 다른 쪽에 원격 시스템(120) 사이에 메시지 또는 서비스 호출을 동기적으로 전송하는 것을 도시하며, 여기서 호출 시스템(110)은 메시지 처리 순서를 제어한다. 이 경우에, 호출 시스템(110)은 원격 처리 결과를 기다리고, 결국 호출자는 메시지들이 서버 시스템 또는 원격 시스템에서 실제 처리되는 메세지의 순서에 관한 마스터이다. Figure 1 illustrates synchronously transferring a message or service call between two systems, a calling system 110 on one side and a remote system 120 on the other side, where the calling system 110 Control the message processing order. In this case, the calling system 110 waits for the results of the remote processing, and eventually the caller is the master of the messages regarding the order of the messages that are actually processed in the server system or remote system.

호출 시스템(110)으로부터 제1 메시지 A를 전송(111)하는 것은 원격 시스템(120)에서 처리되고 이후 처리된 메시지 A(121)는 호출 시스템(110)으로 리턴된다. 처리된 메시지 A가 수신되면, 호출 시스템(110)은 제2 메시지 B를 원격 시스템(120)으로 전송(113)하기 시작할 수 있다. 제2 메시지 B는 원격 시스템(120)에서 처리되고 처리된 메시지 B(123)는 호출 시스템(110)으로 리턴된다. Transferring (111) the first message A from the calling system 110 is processed at the remote system 120 and then processed message A 121 is returned to the calling system 110. When the processed message A is received, the calling system 110 may begin to send (113) the second message B to the remote system 120. The second message B is processed in the remote system 120, and the processed message B 123 is returned to the calling system 110.

이 예시적인 흐름도에서, 호출 시스템(110)과 원격 시스템(120) 사이에 동기적인 호출 또는 메시지를 연대순으로 처리(chronological processing)하는 것은 서버 시스템 또는 원격 시스템(120)에 의해 제1 메시지 A를 처리(112)하는 것은 제2 메시지 B를 처리(114)하기 전에 일어나는 것을 도시한다. In this illustrative flow chart, chronological processing of a synchronous call or message between the calling system 110 and the remote system 120 is performed by the server system or the remote system 120, (112) occurs before processing (114) the second message B.

도 2는 호출 시스템(210)과 서버 시스템 또는 원격 시스템(220) 사이에 메시지 또는 서비스 호출을 비동기식으로 전송하는 것을 도시하며, 여기서 호출 시스템(210)은 서비스 호출 또는 메시지를 서버 시스템 또는 원격 시스템(220)으로 송신하고, 이 시스템은 그 자체 스케줄링에 기초하여 이 메시지를 처리한다. 클라이언트 시스템 또는 호출 시스템(210)은 메시지 처리 타이밍을 느슨하게 제어한다. 2 depicts asynchronously transferring a message or service call between a calling system 210 and a server system or remote system 220 where the calling system 210 sends a service call or message to a server system or remote system 220 220, which processes the message based on its own scheduling. The client system or calling system 210 loosely controls message processing timing.

호출 시스템(210)으로부터 제1 메시지 A를 전송(211)하는 것은 원격 시스템(220)에서 처리된다. 그 동안에, 호출 시스템(210)은 제2 메시지 B를 원격 시스템(220)으로 전송(213)을 시작한다. 제2 메시지 B는 이후 원격 시스템(220)에서 처리되고, 메시지 A가 처리되기 전에 처리된 메시지 B는 호출 시스템(210)으로 리턴될지 여부는 결정될 수 없다. Transferring (211) the first message A from the calling system 210 is processed in the remote system 220. In the meantime, the calling system 210 initiates (213) the second message B to the remote system 220. The second message B can then be processed in the remote system 220 and it can not be determined whether the processed message B is returned to the calling system 210 before the message A is processed.

이 예시적인 흐름도에서, 호출 시스템(210)과 원격 시스템(220) 사이에 비동기 호출 또는 메시지를 연대순으로 처리하는 것은 서버 시스템 또는 원격 시스템(220)에 의해 제1 메시지 A를 처리(212)하는 것은 제2 메시지 B를 처리(214)하는 것과 거의 동시에 일어나는 것을 도시한다. 제2 메시지 B는 제1 메시지 A 전에 처리되어 메시지 A 및 B를 포함하는 시퀀스의 관련성에 심각히 영향을 미칠 수 있을 가능성이 있을 수 있다. In this illustrative flow chart, processing the asynchronous call or message chronologically between the calling system 210 and the remote system 220 is a process 212 of processing the first message A by the server system or the remote system 220 (214) of the second message B at the same time. The second message B may be processed before the first message A to potentially affect the relevance of the sequence including the messages A and B. [

도 3은 분산 시스템에서 서비스 호출 또는 메시지를 병렬 처리하는 것을 도시하는 예시적인 흐름도이다. 분산 시스템에서, 탄력성(resilience) 및 스케일가능성(scalability) 요구조건에 순응하기 위하여, 서비스 호출 또는 메시지는 인스턴스화(instantiation) 및/또는 다중 스레드(multithreading)에 의해 병렬로 처리된다. 이 도면에서, 공정 시스템의 인스턴스 1, 2, 3, ... , 및 n (310-1, 310-2, ... 및 310-n)는 인바운드 시퀀스(inbound sequence)로 메시지 큐(queue)(340)에 있는 4개의 메시지 1, 2, 3 및 4를 처리한다. 3 is an exemplary flow chart illustrating service invocation or parallel processing of messages in a distributed system. In a distributed system, service calls or messages are processed in parallel by instantiation and / or multithreading to comply with resilience and scalability requirements. In this figure, instances 1, 2, 3, ..., and n (310-1, 310-2, ..., and 310-n) of the process system are in a message queue with inbound sequences, 0.0 > 1, < / RTI > 2, 3 and 4 in step 340 of FIG.

병렬화된 처리는, 연속 서비스 호출 또는 메시지가 처리되고 완성되는 순서를 보장하지 않는다. 그러나, 서비스 호출 또는 메시지 공정은 종종 상관된 이벤트 또는 메시지 간을 시퀀스로 수행할 것을 강하게 요구한다. Parallelized processing does not guarantee the order in which successive service calls or messages are processed and completed. However, service calls or message processes are often strongly required to perform in sequence between correlated events or messages.

도 3에 도시된 예에서, 메시지 1은 인스턴스 2에서 처리되고 메시지 2는 인스턴스 3에서 처리되고, 메시지 3은 인스턴스 1에서 처리되고 메시지 4는 메시지 2와 같이 인스턴스 3에서 처리된다. 메시지 처리 순서는 조정되지 않기 때문에, 메시지 2가 제일 먼저 처리되고 나서, 메시지 1이 처리되고 이후, 메시지 4가 처리되고 마지막으로 메시지 3이 처리된다. 이것은 거래 처리 순서와 일치하지 않는다. In the example shown in FIG. 3, message 1 is processed in instance 2, message 2 is processed in instance 3, message 3 is processed in instance 1, and message 4 is processed in instance 3, Since message processing order is not adjusted, message 2 is processed first, then message 1 is processed, then message 4 is processed, and finally message 3 is processed. This is inconsistent with the transaction processing order.

이 도면에서, 시퀀스는 서비스 호출 또는 메시지가 분산 시스템에 의해 운반되거나 및/또는 처리되는 순서를 말한다. 이 순서는 일반적으로 비지니스 처리(business process) 또는 산업 표준에 의해 구동된다. 이 순서를 고려하지 않으면, 부적절한 처리 결과를 초래하거나 최악의 경우에는 저장된 기능 데이터가 회복 불가능하게 손상될 수 있는데, 이는 데이터베이스 손상이라고도 불리운다. In this figure, the sequence refers to the order in which service calls or messages are carried and / or processed by the distributed system. This order is typically driven by business processes or industry standards. Failure to take this sequence into account can result in improper processing, or in the worst case, stored functional data can be irretrievably corrupted, also known as database corruption.

도 4는 메시지 및 손상된 데이터 처리 순서를 벗어날(de-ordering) 위험을 초래하는 분산 공정 시스템에서 비동기 호출 또는 메시지를 병렬로 처리하는 것을 도시하는 예시적인 흐름도이다. 4 is an exemplary flow chart illustrating parallel processing of asynchronous calls or messages in a distributed processing system resulting in a risk of de-ordering messages and corrupted data processing sequences.

동기적인 환경에서, 시퀀싱은 발송자(emitter) 시스템 또는 호출 시스템에 의해 보장되는데, 이 시스템은 메시지를 원격 시스템으로 하나씩 개시하여, 상관된 메시지들 사이에 시퀀스 흐름을 사실상 제어한다. In a synchronous environment, sequencing is guaranteed by a sender (emitter) system or a paging system, which initiates messages one by one to the remote system, effectively controlling the sequence flow between correlated messages.

발송자 시스템 또는 호출 시스템(410)이 비동기적인 및 분산공정을 처리해야 할 때, 원격 시스템(420)에서는 메시지 처리의 종료를 결정할 수 없어서 이 시퀀싱이 불가능하게 된다. 도 4는 제1 메시지 A를 호출 시스템(410)으로부터 원격 시스템(420)으로 전송(411)한 후 제2 메시지 B를 전송(413)하는 위험을 도시한다. 제2 메시지 B를 처리(414)하는 것은 제1 메시지 A를 처리(414)하는 처리(412) 전에 시작한다. 그리하여, 메시지 처리가 역전될 수 있어서, 부적절한 처리를 초래할 수 있고, 최악의 경우에는 저장된 기능 데이터를 회복 불가능하게 손상시키거나 또는 데이터베이스 손상을 초래할 수 있다. When the dispatcher system or the calling system 410 has to process the asynchronous and distributed processes, the remote system 420 can not determine the termination of the message processing, making this sequencing impossible. FIG. 4 illustrates the risk of sending (413) a second message B after transmitting (411) the first message A from the calling system 410 to the remote system 420. Processing 414 the second message B begins before processing 412 of processing 414 the first message A. [ Thus, message processing can be reversed, resulting in improper processing, and, in the worst case, irreparably compromised stored function data or database corruption.

그리하여, 본 발명은, 전술된 문제를 완화시키고 저장된 기능 데이터를 회복 불가능하게 손상시키거나 또는 임의의 데이터베이스를 손상시키는 것을 회피하는 것을 목적으로 한다. Thus, the present invention aims at mitigating the aforementioned problems and avoiding irreparably damaging stored functional data or damaging any database.

일 실시예에서, 본 발명은, 인바운드 핸들러 층(inbound handler layer)을 형성하는 복수의 인바운드 핸들러 및 아웃바운드 핸들러 층(outbound handler layer)을 형성하는 복수의 아웃바운드 핸들러를 구비하는 분산 및 병렬 시스템에서 분산비동기 메시지를 시퀀싱(sequencing)하는 컴퓨터로-구현되는 방법으로서, 상기 방법은, 적어도 하나의 데이터 프로세서에서 수행되는 다음 단계, 즉: In one embodiment, the present invention provides a distributed and parallel system comprising a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer, A computer-implemented method for sequencing distributed asynchronous messages, the method comprising the following steps performed on at least one data processor:

복수의 인바운드 핸들러 중에서 임의의 인바운드 핸들러에서 입력 메시지(incoming message)를 수신하는 단계로서, 입력 메시지는 입력 메시지를 포함하는 시퀀스를 식별하는 시퀀스 상관 값(sequence correlation value)을 포함하는, 입력 메시지를 수신하는 단계; Receiving an incoming message from any inbound handler among a plurality of inbound handlers, the input message including a sequence correlation value identifying a sequence comprising an input message; ;

공유된 시퀀스 저장소(shared sequence storage)에서 시퀀스의 시퀀스 상태(sequence state)를 체크하는 단계; Checking a sequence state of a sequence in a shared sequence storage;

입력 메시지가 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인지 여부를 결정하는 단계;를 포함하고Determining whether the incoming message is the next message to be processed in order to maintain the order of the message in the sequence

시퀀스 상태가 아웃바운드 핸들러 층에 있는 아웃바운드 핸들러 중 그 어느 것도 시퀀스의 메시지를 현재 처리하고 있지 않는 것을 나타내는 경우 및 입력 메시지가 시퀀스에서 처리될 그 다음 메시지인 것으로 결정된 경우, 입력 메시지를 공유된 큐 저장소에 전달하고 나서 이후 처리를 위해 이용가능한 아웃바운드 핸들러에 의해 메시지를 검색하고; If the sequence state indicates that none of the outbound handlers in the outbound handler layer are currently processing messages in the sequence and the input message is determined to be the next message to be processed in the sequence, Retrieve the message by forwarding it to the repository and then using the outbound handler available for further processing;

시퀀스 상태가 아웃바운드 핸들러 층에 있는 아웃바운드 핸들러 중 적어도 하나가 시퀀스의 메시지를 현재 처리하고 있는 것을 나타내는 경우; 또는 공유된 큐 저장소가 시퀀스에서 처리될 메시지를 이미 포함하는 경우; 또는 입력 메시지가 시퀀스에서 처리될 그 다음 메시지가 아닌 것으로 결정된 경우, 추가적인 처리를 유지하기 위해 입력 메시지를 공유된 오버플로우 저장소의 메모리에 저장하는 것을 특징으로 하는 방법을 제공한다. If the sequence state indicates that at least one of the outbound handlers in the outbound handler layer is currently processing a message in the sequence; Or the shared queue store already contains a message to be processed in the sequence; Or if the input message is determined not to be the next message to be processed in the sequence, the input message is stored in the memory of the shared overflow store to maintain further processing.

따라서, 분산 및 병렬 시스템은, 많은 시퀀스에 속하는 메시지를 수신하는 인바운드 핸들러 층에서 서로 병렬로 배열된 인바운드 핸들러; 및 공유된 시퀀스 저장소, 큐 저장소 및 공유된 오버플로우 저장소를 포함하고 인바운드 핸들러로부터 메시지를 수신하고 이 메시지를 메모리에 저장하도록 구성된 저장소 층을 포함하는 라우터로 보일 수 있다. 시퀀스 저장소는 오버플로우 저장소를 포함할 수 있다. 분산 및 병렬 시스템은, 아웃바운드 핸들러 층에서 서로 병렬로 배열되고 시스템이 각 시퀀스에서 메시지의 올바른 시퀀싱을 보장하면서 처리를 위해 공유된 큐 저장소로부터 메시지를 검색하도록 적응된 아웃바운드 핸들러를 더 포함한다. 아웃바운드 핸들러는, 메시지를 수신하고 이 메시지를 처리하고 이 메시지를 올바른 수신자에 전달할 수 있도록 구성된다. Thus, a distributed and parallel system comprises an inbound handler arranged in parallel with each other in an inbound handler layer that receives messages belonging to a large number of sequences; And a storage layer that includes a shared sequence store, a queue store, and a shared overflow store, and receives a message from the inbound handler and stores the message in memory. The sequence repository may include an overflow repository. Distributed and parallel systems further include outbound handlers that are arranged in parallel with each other in the outbound handler layer and adapted to retrieve messages from a shared queue store for processing while ensuring that the system correctly sequenced messages in each sequence. The outbound handler is configured to receive the message, process the message, and forward the message to the correct recipient.

오버플로우 저장소 및 시퀀스 저장소는 인바운드 핸들러 및 아웃바운드 핸들러에 의해 공유된다. 이들 저장소는 병렬 인바운드 핸들러 및 병렬 아웃바운드 핸들러에 의해 공통으로 사용된다. Overflow storage and sequence storage are shared by inbound and outbound handlers. These depots are commonly used by parallel inbound handlers and parallel outbound handlers.

그리하여 본 발명은 분산환경에서 여러 시퀀스를 병렬 처리하면서 동일한 시퀀스에 속하는 메시지의 순서를 유지하는 솔루션을 제공한다. 나아가, 아웃바운드 핸들러로부터 인바운드 핸들러를 분리하면 수신자의 처리량으로부터 발송자의 처리량을 분리할 수 있다. 나아가, 인바운드 핸들러의 개수 및 아웃바운드 핸들러의 개수는 매우 독립적으로 스케일러블가능하다. 추가적으로, 본 발명은 시퀀스와 인바운드/아웃바운드 핸들러 사이에 친화성(affinity)이 생성되는 것을 회피하여, 임의의 인바운드/아웃바운드 핸들러가 임의의 시퀀스의 메시지를 핸들링할 수 있게 한다. 따라서, 본 발명은 강한 탄력성을 제공하는데 그 이유는 일부 핸들러 또는 아웃바운드 핸들러가 중지(outage)되어도 메시지 처리에 영향을 미치지 않기 때문이다. Thus, the present invention provides a solution for maintaining a sequence of messages belonging to the same sequence while paralleling several sequences in a distributed environment. Furthermore, separating the inbound handler from the outbound handler can isolate the throughput of the sender from the throughput of the receiver. Furthermore, the number of inbound handlers and the number of outbound handlers are highly scalable independently. Additionally, the present invention avoids the creation of affinities between sequences and inbound / outbound handlers, allowing any inbound / outbound handler to handle messages of any sequence. Thus, the present invention provides strong resilience, because some handlers or outbound handlers will not affect message processing if they are outaged.

본 발명에 따른 방법은 다음 추가적인 특징 및 단계 중 어느 하나를 더 포함할 수 있다: The method according to the invention may further comprise any of the following additional features and steps:

일 실시예에서, 입력 메시지가 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인지 여부를 결정하는 단계는, In one embodiment, the step of determining whether the incoming message is the next message to be processed to maintain the order of the message in the sequence,

- 시퀀스에서 입력 메시지의 순서를 표시하는 메시지 랭킹(rank)을 결정하는 단계, Determining a message rank indicating a sequence of input messages in the sequence,

- 메시지 랭킹을, 시퀀스에서 처리될 그 다음 메시지의 랭킹을 한정하는 시퀀스 랭킹과 비교하는 단계, Comparing the message ranking to a sequence ranking that defines a ranking of the next message to be processed in the sequence,

- 메시지 랭킹이 시퀀스 랭킹과 같은 경우, 메시지를 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인 것으로 결정하는 단계, Determining that the message is the next message to be processed to maintain the order of the message in the sequence if the message ranking is equal to the sequence rank,

- 메시지 랭킹이 시퀀스 랭킹을 초과하는 경우, 메시지를 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지가 아닌 것으로 결정된 단계를 포함한다. If the message ranking exceeds the sequence rankings, the message is determined not to be the next message to be processed in order to maintain the order of the messages.

시퀀스에 포함되고 특정 순서로 처리될 것을 요구하는 메시지는 본 명세서에서 메시지 랭킹으로 언급되는 메시지 랭킹 번호를 구비할 수 있다. 메시지 랭킹은 시퀀스에서 메시지의 순서를 한정한다. 메시지는 메시지의 발신자(originator) 또는 제3자에 의한 메시지 랭킹을 구비할 수 있다. 메시지 랭킹은 시퀀스의 메시지의 도착 순서에 따라 시스템에 의해 할당될 수도 있다. Messages that are included in a sequence and require to be processed in a particular order may have message ranking numbers referred to herein as message ranks. Message ranking limits the order of messages in a sequence. The message may have a message ranking by the originator of the message or by a third party. The message ranking may be assigned by the system according to the order of arrival of the messages in the sequence.

본 명세서에서 이해되는 시퀀스 랭킹은 주어진 시퀀스에서 그 다음에 처리될 메시지, 즉 처리될 그 다음 메시지가 가지고 있어야 하는 메시지 랭킹을 한정한다. Sequence ranking, as understood herein, defines the message rankings that a message to be processed next, i.e., the next message to be processed, must have in a given sequence.

바람직하게는, 시퀀스 랭킹은 시퀀스 저장소에서 표시된다. Preferably, the sequence ranking is indicated in the sequence repository.

일반적으로, 아웃바운드 핸들러에서 메시지를 처리하는 것은 아웃바운드 핸들러가 메시지를 수신자에 송신하거나 전달하는 것을 의미한다. In general, processing an outbound handler message means that the outbound handler sends or delivers the message to the recipient.

유리하게는, 아웃바운드 핸들러에서 주어진 시퀀스의 메시지의 처리를 완료하면, 주어진 시퀀스의 시퀀스 랭킹이 증분된다. Advantageously, upon completion of processing of a given sequence of messages in an outbound handler, the sequence rankings of a given sequence are incremented.

바람직하게는, 시퀀스의 시퀀스 랭킹이 증분될 때, 상기 방법은 오버플로우 저장소가 증분된 시퀀스 랭킹과 같은 메시지 랭킹을 갖는 메시지를 포함하는지를 체크하고 나서 이후 이 메시지를 큐 저장소로 전달하는 단계를 포함한다. Preferably, when the sequence rankings of the sequence are incremented, the method includes checking if the overflow store includes a message with a message ranking, such as an incremented sequence ranking, and then forwarding the message to the queue store .

유리한 실시예에 따라, 수신된 입력 메시지가 시퀀스에서 메시지 랭킹을 표시하는 색인을 구비하지 않는 경우, 메시지 랭킹을 결정하는 단계는 그 시퀀스에서 입력 메시지의 랭킹을 표시하는 메시지 랭킹을 입력 메시지에 할당하는 단계 및 할당된 메시지 랭킹을 시퀀스 저장소에 저장하는 단계를 포함한다. According to an advantageous embodiment, if the received input message does not have an index indicating the message ranking in the sequence, then the step of determining the message ranking comprises assigning to the input message a message ranking indicating the ranking of the input message in the sequence And storing the assigned message rankings in a sequence repository.

바람직하게는, 할당된 메시지 랭킹은 시퀀스에서 인바운드 핸들러 중 어느 하나의 인바운드 핸들러에서 수신된 마지막 메시지의 랭킹에 1 증분한 랭킹에 대응한다. 따라서, 입력 메시지가 시퀀스에서 제일 앞선 메시지인 경우, 메시지 랭킹은 1이다. 인바운드 핸들러에서 수신된 이전의 메시지의 메시지 랭킹이 N이면, 상기 새로이 입력되는 메시지에 할당된 메시지 랭킹은 N+1이다. Preferably, the assigned message ranking corresponds to a ranking incremented by one in the ranking of the last message received in any one of the inbound handlers in the sequence in the sequence. Thus, if the incoming message is the earliest message in the sequence, the message ranking is 1. If the message rank of the previous message received at the inbound handler is N, then the message ranking assigned to the newly entered message is N + 1.

다른 유리한 실시예에서, 인바운드 핸들러에서 수신된 입력 메시지는 시퀀스에서 메시지 랭킹을 표시하는 색인을 구비한다.In another advantageous embodiment, the input message received at the inbound handler has an index indicating the message ranking in the sequence.

바람직하게는, 메시지 랭킹이 시퀀스 랭킹을 초과하는 경우, 시퀀스의 상태는 "펜딩(pending)" 상태로 설정된다. 따라서, "펜딩" 상태는, 오버플로우 저장소 영역이 적어도 주어진 시퀀스의 메시지를 포함하지만 이 또는 이들 메시지가 시퀀스 랭킹과 같지 않은 메시지 랭킹을 구비하는 것을 의미한다. Preferably, when the message ranking exceeds the sequence ranking, the state of the sequence is set to the "pending" state. Thus, a "pending" state means that the overflow storage area includes at least a given sequence of messages, but these or these messages have message ranking that is not equal to the sequence ranking.

일반적으로, 시퀀스 상태는, 아웃바운드 핸들러 중 그 어느 것도 시퀀스의 메시지를 현재 처리하고 있지 않는 경우 및 오버플로우 저장소 영역에 이 시퀀스의 메시지가 없을 때 "대기" 상태로 설정된다. 일반적으로, 시퀀스 상태는, 아웃바운드 핸들러 중 적어도 하나가 시퀀스의 메시지를 현재 처리하고 있을 때 "처리" 상태로 설정된다. In general, a sequence state is set to a "standby" state when none of the outbound handlers is currently processing a message of the sequence and when there is no message of this sequence in the overflow storage area. Generally, a sequence state is set to a "processing" state when at least one of the outbound handlers is currently processing a message of the sequence.

유리하게는, 큐 저장소가 상기 입력 메시지의 시퀀스에 메시지를 전혀 포함하지 않는 경우 및 입력 메시지의 메시지 랭킹이 시퀀스 저장소에서 표시된 시퀀스 랭킹을 초과하는 경우, 상기 입력 메시지는, 상기 시퀀스 랭킹이 증분되어 상기 입력 메시지의 메시지 랭킹과 같아질 때까지 오버플로우 저장소에 저장된다.Advantageously, if the queue repository does not contain any messages at all in the sequence of input messages, and if the message ranking of the input messages exceeds the sequence rankings indicated in the sequence repository, the input message is incremented It is stored in the overflow storage until it is equal to the message ranking of the input message.

따라서, 메시지가 메시지의 발신자 또는 제3자에 의한 메시지 랭킹을 구비하는 경우, 및 메시지 랭킹이 시퀀스 랭킹을 초과하는 경우, 메시지는 오버플로우 저장소에 저장된다. 더 낮은 메시지 랭킹을 가지는 다른 메시지가 처리될 때, 시퀀스 랭킹은 이전에 저장된 메시지의 메시지 랭킹에 도달될 때까지 증분된다. 이 메시지는 시퀀스 저장소로부터 또는 보다 정확하게는 오버플로우 저장소로부터 해제(released)될 수 있고, 큐 저장소 및 인바운드 핸들러가 이 시퀀스의 메시지를 저장하고 처리하지 않는 경우 큐 저장소로 송신될 수 있다. Thus, if the message has a message ranking by the sender or a third party of the message, and the message ranking exceeds the sequence ranking, the message is stored in the overflow store. When another message with a lower message ranking is processed, the sequence ranking is incremented until the message ranking of the previously stored message is reached. This message may be released from the sequence store, or more precisely from the overflow store, and sent to the queue store if the queue store and inbound handler do not store and process the messages of this sequence.

이러한 것은 메시지 랭킹을 구비하지 않으나 그 도착 순서에 따라 시스템에 의해 메시지 랭킹이 할당된 메시지에도 적용된다. This does not have message ranking but applies to messages assigned message ranking by the system according to their arrival order.

유리하게는, 메시지가 아웃바운드 핸들러에 의해 성공적으로 처리되었을 때 이 메시지는 큐 저장소로부터 제거된다. Advantageously, when a message is successfully processed by an outbound handler, this message is removed from the queue repository.

유리하게는, 아웃바운드 핸들러는 비동기식으로 동작하여, 아웃바운드 핸들러는 메시지를 송신할 수 있고, 이후 상기 메시지를 송신하고 나서 상기 메시지의 수신자로부터 응답의 수신확인을 수신하기 전에, 다른 처리에 이용가능할 수 있다.Advantageously, the outbound handler operates asynchronously, so that the outbound handler can send the message and then send the message before it is available for further processing before receiving an acknowledgment of the response from the recipient of the message .

유리한 실시예에 따라, 아웃바운드 핸들러는 메시지를 수신자에 송신하는 전달 공정 및 수신자로부터 수신의 수신확인을 수신하는 수신확인 공정을 포함한다. 전달 공정 및 수신확인 공정은 독립적으로 동작하여, 전달 공정이 메시지를 송신할 때 바로 이용가능하게 할 수 있다.According to an advantageous embodiment, the outbound handler comprises a delivery process for sending the message to the recipient and an acknowledgment process for receiving an acknowledgment of receipt from the recipient. The forwarding process and the acknowledgment process operate independently, allowing the forwarding process to be immediately available when the message is transmitted.

유리하게는, 입력 메시지를 수신하고 나서 체크 단계를 수행하기 전에, 상기 방법은, 입력 메시지가 시퀀스 저장소에 저장되거나 또는 큐 저장소로 송신될 때까지, 모든 인바운드 핸들러가 시퀀스의 다른 메시지를 수신하지 못하게 하는 인바운드 록킹(locking) 단계를 수행하는 단계를 포함한다.Advantageously, before receiving the input message and before performing the check step, the method further comprises the steps of: preventing all inbound handlers from receiving other messages of the sequence until the input message is stored in the sequence store or transmitted to the queue store And performing an inbound locking step to perform the inbound locking.

유리하게는, 입력 메시지는, 동일한 시퀀스의 다른 메시지가 아웃바운드 핸들러에 의해 송신되거나 처리되고 있는 동안, 인바운드 핸들러에서 수용(accept)될 수 있다. 입력 메시지가 록킹 해제되기를 기다릴 필요가 있는 유일한 제한된 경우는 다음 경우이다: Advantageously, the incoming message may be accepted in the inbound handler while another message of the same sequence is being sent or processed by the outbound handler. The only limited case where you need to wait for an input message to be unlocked is in the following cases:

- 다른 입력 메시지가 저장소 층에 저장되고 있거나 또는 인바운드 핸들러에 수신되고 있는 경우, - If another input message is being stored in the storage tier or is being received by the inbound handler,

- 시퀀스의 메시지에 대한 수신자의 응답이 아웃바운드 핸들러에 의해 수신되고 처리되고 있는 경우. 아웃바운드 핸들러가 수신자로부터 답변, 즉 수신확인을 수신할 때, 아웃바운드 핸들러는 시퀀스 및 대응하는 랭킹을 록킹하고, 만약 있다면, 시퀀스에서 송신될 그 다음 메시지를 찾고 랭킹을 증분한다. - The recipient's response to a message in the sequence is being received and processed by an outbound handler. When the outbound handler receives an answer, i. E. Acknowledgment, from the receiver, the outbound handler locks the sequence and the corresponding ranking, and if so, finds the next message to be sent in the sequence and increments the ranking.

바람직하게는, 인바운드 록킹 단계는 상기 시퀀스에 전용된 뮤텍스(mutex)를 록킹하는 단계를 포함하고, 상기 뮤텍스는 상기 시퀀스 저장소에 저장된다. Preferably, the inbound locking step includes locking a mutex dedicated to the sequence, wherein the mutex is stored in the sequence store.

바람직하게는, 입력 메시지를 수신할 때, 인바운드 핸들러는 상기 입력 메시지의 시퀀스의 시퀀스 상관 값을 체크하고, 입력 메시지를 수용하기 전에 상기 시퀀스의 뮤텍스 파라미터를 판독한다. 인바운드 핸들러는, 뮤텍스가 록킹되지 않는 경우, 입력 메시지를 수용한다. 뮤텍스가 록킹된 경우, 상기 입력 메시지는 뮤텍스가 해제되기를 기다린다. Preferably, upon receiving the input message, the inbound handler checks the sequence correlation value of the sequence of the input message and reads the mutex parameter of the sequence before accepting the input message. The inbound handler accepts an input message if the mutex is not locked. If the mutex is locked, the input message waits for the mutex to be released.

보다 정확하게, 상기 뮤텍스는 시퀀스 저장소에 포함된 시퀀스 레지스터에 저장된다.More precisely, the mutex is stored in a sequence register included in the sequence store.

유리하게는, 인바운드 및 아웃바운드 핸들러에 시퀀스당 단 하나의 뮤텍스만이 있다. 큐 저장소에서 저장소 큐는 아웃바운드 핸들러 층이 이 시퀀스에서 메시지의 처리를 완료할 때까지 주어진 시퀀스에서 단 하나의 메시지만이 아웃바운드 핸들러로 전파되는 것을 보장한다. Advantageously, there is only one mutex per sequence in the inbound and outbound handlers. The repository queue in the queue repository ensures that only one message in a given sequence is propagated to the outbound handler until the outbound handler layer completes processing the message in this sequence.

바람직하게는, 아웃바운드 록킹 단계는 시퀀스에 전용된 뮤텍스를 록킹하는 단계를 포함하고, 상기 뮤텍스는 상기 시퀀스 저장소에 저장된다.Preferably, the outbound locking step includes locking a mutex dedicated to the sequence, wherein the mutex is stored in the sequence store.

유리하게는, 아웃바운드 핸들러가 이용가능할 때, 이 아웃바운드 핸들러는 큐 저장소에서 메시지가 처리에 이용가능한지를 체크하고 나서, 상기 메시지를 검색하고 이를 처리한다. Advantageously, when an outbound handler is available, the outbound handler checks whether the message is available for processing in the queue repository, and then retrieves and processes the message.

바람직하게는, 아웃바운드 핸들러가 이용가능할 때, 아웃바운드 핸들러는 큐 저장소(850)에서 처리할 이용가능한 메시지가 있는지 여부를 체크한다. 메시지가 있는 경우, 이 메시지는 자동적으로, 상기 주어진 시퀀스에서 처리될 올바른 메시지가 된다. Preferably, when an outbound handler is available, the outbound handler checks whether there are any available messages in queue storage 850 to process. If there is a message, this message automatically becomes the correct message to be processed in the given sequence.

일 실시예에서, 입력 메시지를 시퀀스 저장소 또는 보다 정확하게는 오버플로우 저장소에 저장하면, 인바운드 핸들러는 수신확인 메시지를 송신한다. In one embodiment, storing the input message in a sequence store, or more accurately, an overflow store, the inbound handler sends an acknowledgment message.

일반적으로, 수신확인 메시지는 메시지의 발신자로 송신된다. Generally, the acknowledgment message is sent to the sender of the message.

유리하게는, 시퀀스 랭킹을 초과하는 메시지 랭킹을 가지는 메시지는, 그 메시지 랭킹이 시퀀스 랭킹, 즉, 처리될 그 다음 메시지의 랭킹과 일치하지 않는 한, 오버플로우 저장소에서 메시지 시퀀스를 록킹하기 위해 오버플로우 저장소에 저장된다. Advantageously, messages with message rankings that exceed the sequence rankings can be overflowed to lock the message sequence in the overflow store, unless the message rankings match the sequence rankings, i.e., the rank of the next message to be processed It is stored in the repository.

바람직하게는, 시퀀스 랭킹을 초과하는 메시지 랭킹을 가지는 메시지는 제일 먼저 오버플로우 저장소에 저장되고, 이후 메시지의 시퀀스에 할당된 타임아웃 값에 도달된 후에 오버플로우 저장소로부터 폐기된다. 대안적으로 또는 추가적으로, 시퀀스 랭킹을 초과하는 메시지 랭킹을 가지는 메시지는 제일 먼저 오버플로우 저장소에 저장되고, 이후 메시지에 할당된 타임아웃 값에 도달된 후에 오버플로우 저장소로부터 폐기된다. Preferably, a message having a message ranking that exceeds the sequence rank is first stored in the overflow store and then discarded from the overflow store after the timeout value assigned to the sequence of messages is reached. Alternatively or additionally, a message having a message ranking that exceeds the sequence rank is first stored in the overflow store and then discarded from the overflow store after the timeout value assigned to the message is reached.

다른 실시예에서, 본 발명은, 소프트웨어 프로그램 명령을 포함하는 비-일시적인 컴퓨터로-판독가능한 매체로서, 적어도 하나의 데이터 프로세서에 의해 소프트웨어 프로그램 명령을 실행하면 본 발명에 따른 방법을 실행하는 동작을 수행하는 것을 특징으로 하는 비-일시적인 컴퓨터로-판독가능한 매체에 관한 것이다.In another embodiment, the present invention is a non-temporary, computer-readable medium comprising software program instructions that, when executed by at least one data processor, cause an operation to execute a method according to the present invention To a non-transient computer-readable medium.

또 다른 실시예에서, 본 발명은, In yet another embodiment,

비동기 메시지를 시퀀싱하는 분산 및 병렬 처리 시스템으로서, A distributed and parallel processing system for sequencing asynchronous messages,

- 적어도 하나의 데이터 프로세서를 포함하는 복수의 인바운드 핸들러로서, 복수의 인바운드 핸들러 각각은 여러 시퀀스에 속하는 복수의 입력 메시지를 독립적으로 수신하도록 구성된, 복수의 인바운드 핸들러; - a plurality of inbound handlers comprising at least one data processor, each of the plurality of inbound handlers being configured to independently receive a plurality of input messages belonging to multiple sequences;

- 적어도 하나의 데이터 프로세서를 포함하는 복수의 아웃바운드 핸들러로서, 복수의 아웃바운드 핸들러 각각은 복수의 입력 메시지를 독립적으로 처리하고 전달하도록 구성된, 아웃바운드 핸들러; 및- a plurality of outbound handlers, each of which includes at least one data processor, each of the plurality of outbound handlers comprising: an outbound handler configured to independently process and deliver a plurality of input messages; And

- 적어도 메모리를 포함하는 저장소 층을 포함하고, 상기 저장소 층은, - a storage layer comprising at least a memory,

Figure 112015011450742-pct00001
복수의 아웃바운드 핸들러로 전송되도록 준비된 입력 메시지를 저장하는 큐 저장소;
Figure 112015011450742-pct00001
A queue storage for storing input messages prepared for transmission to a plurality of outbound handlers;

Figure 112015011450742-pct00002
시퀀스 저장소를 포함하고,
Figure 112015011450742-pct00002
Contains a sequence repository,

상기 시퀀스 저장소는, 상기 입력 메시지의 시퀀스의 상태를 유지하고 업데이트하는 시퀀스 상태 컨텍스트(sequence state context)(802); 및 인바운드 핸들러로부터 메시지를 수신하고 이 메시지를 큐 저장소로 순차적으로 전달하도록 구성된 오버플로우 저장소를 포함하고, The sequence repository comprising: a sequence state context 802 for maintaining and updating the state of the sequence of the input message; And an overflow store configured to receive the message from the inbound handler and sequentially deliver the message to the queue store,

상기 시스템은, 입력 메시지가 이 메시지의 시퀀스에서 상기 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인지 여부를 결정하고, 적어도 하나의 데이터 프로세서에서 수행되는 다음 단계, 즉:The system comprising the steps of: determining whether an input message is the next message to be processed in order to maintain the order of the message in the sequence of the message;

상기 시퀀스 상태가 아웃바운드 핸들러 중 그 어느 것도 상기 시퀀스의 메시지를 현재 처리하고 있지 않는 것을 나타내는 경우 및 상기 입력 메시지가 상기 시퀀스에서 처리될 그 다음 메시지인 것으로 결정된 경우, 상기 입력 메시지를 상기 큐 저장소로 전달하고 나서 이후 처리를 위해 상기 메시지를 이용가능한 아웃바운드 핸들러로 전달하는 단계; If the sequence state indicates that none of the outbound handlers are currently processing the message of the sequence and if the input message is determined to be the next message to be processed in the sequence, Forwarding the message to an available outbound handler for later processing;

상기 시퀀스 상태가 상기 아웃바운드 핸들러 중 적어도 하나가 상기 시퀀스의 메시지를 현재 처리하고 있는 것을 나타내는 경우; 또는 상기 큐 저장소가 상기 시퀀스에서 처리될 메시지를 이미 포함하는 경우; 또는 상기 입력 메시지가 상기 시퀀스에서 처리될 그 다음 메시지가 아닌 것으로 결정된 경우, 추가적인 처리를 유지하기 위해 상기 입력 메시지를 상기 오버플로우 저장소에 저장하는 단계를 수행하도록 더 구성된 것을 특징으로 하는 분산 및 병렬 처리 시스템에 관한 것이다. The sequence status indicating that at least one of the outbound handlers is currently processing the message of the sequence; Or if the queue repository already contains a message to be processed in the sequence; Or to store the input message in the overflow store to maintain further processing if it is determined that the input message is not the next message to be processed in the sequence, ≪ / RTI >

선택적인 실시예에 따라, 저장소 층의 큐 저장소 및 시퀀스 저장소는 인-메모리 데이터 또는 파일 기반 저장소에 구현된다. 대안적으로, 저장소 층의 큐 저장소 및 시퀀스 저장소는 클라이언트-서버 저장소 데이터베이스에 구현된다. According to an alternative embodiment, the queue storage and sequence storage of the storage layer are implemented in in-memory data or file-based storage. Alternatively, the queue storage and sequence storage of the storage layer are implemented in a client-server storage database.

바람직하게는, 시퀀스 상태를 체크하는 단계는 상기 시퀀스의 시퀀스 상관 값에 기초하여 시퀀스의 상태를 검색하는 단계를 포함한다. Advantageously, checking the sequence status comprises retrieving the status of the sequence based on the sequence correlation value of the sequence.

다른 실시예에서, 본 발명은, In another embodiment,

복수의 병렬 인바운드 핸들러 및 복수의 병렬 아웃바운드 핸들러를 구비하는 병렬 환경에서 적어도 하나의 서버 애플리케이션과 적어도 하나의 클라이언트 애플리케이션 사이에서 비동기 메시지를 처리하는 컴퓨터로-구현되는 여행 모니터링 방법으로서, 상기 방법은, 적어도 하나의 데이터 프로세서에서 수행되는 다음 단계, 즉:A computer-implemented travel monitoring method for processing 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, The next step carried out on at least one data processor, namely:

- 입력 메시지를 상기 복수의 병렬 인바운드 핸들러 중 하나의 인바운드 핸들러에서 수신하는 단계로서 상기 입력 메시지는 상기 입력 메시지를 포함하는 시퀀스를 식별하는 시퀀스 상관 값을 구비하는, 상기 수신하는 단계, Receiving an input message at an inbound handler of one of the plurality of parallel inbound handlers, the input message having a sequence correlation value identifying a sequence comprising the input message;

- 시퀀스 저장소에서 상기 시퀀스의 시퀀스 상태를 체크하는 단계;- checking the sequence state of the sequence in the sequence store;

- 상기 입력 메시지가 상기 시퀀스에서 상기 메시지의 순서를 유지하기 위해 처리될 그 다음 메시지인지 여부를 결정하는 단계; - determining whether the input message is the next message to be processed to maintain the order of the message in the sequence;

상기 시퀀스 상태가 상기 복수의 병렬 아웃바운드 핸들러에 있는 상기 아웃바운드 핸들러 중 그 어느 것도 상기 시퀀스의 메시지를 현재 처리하고 있지 않는 것을 나타내는 경우 및 상기 입력 메시지가 상기 시퀀스에서 처리될 그 다음 메시지인 것으로 결정된 경우, 상기 입력 메시지를 큐 저장소로 전달하고 나서 이후 처리를 위해 이 입력 메시지를 이용가능한 아웃바운드 핸들러에 전달하는 단계;       If the sequence state indicates that none of the outbound handlers in the plurality of parallel outbound handlers are currently processing a message of the sequence and if the input message is determined to be the next message to be processed in the sequence Transferring the input message to a queue repository and then forwarding the input message to an available outbound handler for further processing;

상기 시퀀스 상태가 상기 아웃바운드 핸들러 중 적어도 하나가 상기 시퀀스의 메시지를 현재 처리하고 있는 것을 나타내는 경우; 또는 상기 큐 저장소가 상기 시퀀스에서 처리될 메시지를 이미 포함하는 경우; 또는 상기 입력 메시지가 상기 시퀀스에서 처리될 그 다음 메시지가 아닌 것으로 결정된 경우, 추가적인 처리를 유지하기 위해 상기 입력 메시지를 오버플로우 저장소에 저장하는 단계를 포함하고,       The sequence status indicating that at least one of the outbound handlers is currently processing the message of the sequence; Or if the queue repository already contains a message to be processed in the sequence; Or storing the input message in an overflow depot to maintain further processing if it is determined that the input message is not the next message to be processed in the sequence,

상기 메시지는 승객과 관련된 데이터를 포함하고 상기 시퀀스 상관 값은 교통 서비스의 레퍼런스(reference)와 관련된 데이터를 포함하는 것을 특징으로 하는 방법에 관한 것이다. Characterized in that the message comprises data relating to a passenger and the sequence correlation value comprises data relating to a reference of a traffic service.

본 발명에 따른 방법은 다음 추가적인 특징 및 단계 중 어느 하나를 더 포함할 수 있다. The method according to the invention may further comprise any of the following additional features and steps.

일단 처리되면, 메시지는, 상기 아웃바운드 핸들러로부터, 여행 예약 및 부킹 시스템, 항공사의 재고 시스템, 항공사의 전자 티켓 시스템, 공항의 출발 제어 시스템, 공항의 운영 시스템, 항공사의 운영 시스템, 지상 핸들러의 운영 시스템 중 적어도 하나로 전달된다.Once processed, the message may be received from the outbound handler, such as a travel booking and booking system, an airline inventory system, an airline electronic ticket system, an airport departure control system, an airport operating system, an airline operating system, System. ≪ / RTI >

일 실시예에서, 교통 서비스의 레퍼런스는 항공편 번호, 날짜 및 클래스(class) 예약 중 적어도 하나를 포함한다.In one embodiment, the reference to the transportation service includes at least one of a flight number, a date, and a class reservation.

일 실시예에서, 상기 메시지는 탑승 승객, 취소된 승객, 추가된 승객 중 어느 하나를 나타낸다.In one embodiment, the message represents either a boarding passenger, a canceled passenger, or an added passenger.

일 실시예에서, 시퀀스 타임아웃 값은 시퀀스 타임아웃 값에 도달한 후 상기 오버플로우 저장소에 저장된 상기 입력 메시지를 제거하기 위하여 각 입력 메시지에 제공되고, 상기 시퀀스 타임아웃 값은 항공편의 출발 시간에 의해 트리거되거나 또는 항공편 제안(offer) 만료 또는 판촉 만료 중 어느 하나이다.In one embodiment, the sequence timeout value is provided to each input message to remove the input message stored in the overflow storage after reaching a sequence timeout value, wherein the sequence timeout value is determined by the departure time of the flight Triggered, or expired, or expired, of a flight.

다른 실시예에서, 본 발명은 소프트웨어 프로그램 명령을 포함하는 비-일시적인 컴퓨터로-판독가능한 매체로서, 적어도 하나의 데이터 프로세서에 의해 상기 소프트웨어 프로그램 명령을 실행하면 본 발명에 따른 상기 방법을 실행하는 동작을 수행하는 것을 특징으로 하는 비-일시적인 컴퓨터로-판독가능한 매체에 관한 것이다. In another embodiment, the present invention is a non-transient computer-readable medium comprising software program instructions that, when executed by at least one data processor, execute the software program instructions to perform the method according to the invention To a non-transitory computer-readable medium, characterized in that

또 다른 실시예에서, 본 발명은, 메시지를 처리할 적어도 하나의 프로세서를 포함하는 복수의 인바운드 핸들러 및 복수의 아웃바운드 핸들러를 구비하는 분산 및 병렬 시스템에서 분산비동기 메시지를 시퀀싱하는 컴퓨터로-구현되는 방법으로서, 상기 방법은, 적어도 하나의 데이터 프로세서에서 수행되는 다음 단계, 즉: In yet another embodiment, the present invention provides a computer-implemented method for sequencing distributed asynchronous messages in a distributed and parallel system having a plurality of inbound handlers and a plurality of outbound handlers comprising at least one processor for processing messages As a method, the method comprises the following steps performed in at least one data processor:

- 입력 메시지를 포함하는 시퀀스를 식별하는 시퀀스 상관 값을 갖는 상기 입력 메시지를 인바운드 핸들러에서 수신하고 상기 시퀀스에서 상기 입력 메시지의 순서를 표시하는 메시지 랭킹을 결정하는 단계; Receiving at the inbound handler the input message having a sequence correlation value identifying a sequence comprising an input message and determining a message ranking indicating the order of the input message in the sequence;

- 시퀀스 저장소에서 상기 시퀀스의 시퀀스 상태를 체크하는 단계; - checking the sequence state of the sequence in the sequence store;

상기 시퀀스 상태가 상기 아웃바운드 핸들러 중 그 어느 것도 상기 시퀀스의 메시지를 현재 처리하고 있지 않는 것을 나타내는 경우 및 수신된 입력 메시지가 상기 시퀀스 내 메시지 랭킹을 표시하는 색인을 구비하지 않고 상기 시퀀스 저장소가 상기 시퀀스에서 처리될 메시지를 아직 포함하고 있지 않는 경우, 또는 If the sequence state indicates that none of the outbound handlers are currently processing the message of the sequence and if the received input message does not have an index indicating the message ranking in the sequence, Does not yet include the message to be processed in the message, or

수신된 입력 메시지가 상기 시퀀스에서 상기 메시지 랭킹을 표시하는 색인을 구비하는 경우(여기서, 상기 메시지 랭킹은 상기 시퀀스 저장소에 표시된 시퀀스 랭킹과 같고 상기 시퀀스에서 처리될 그 다음 메시지의 랭킹을 한정한다), Wherein the received input message comprises an index indicating the message ranking in the sequence wherein the message ranking equals the sequence ranking indicated in the sequence repository and defines a ranking of the next message to be processed in the sequence,

상기 입력 메시지를 큐 저장소로 전달하고 나서 이후 이 입력 메시지를 처리를 위해 이용가능한 아웃바운드 핸들러로 전달하는 단계; Forwarding the input message to a queue repository and then forwarding the input message to an outbound handler available for processing;

상기 시퀀스 상태가 상기 아웃바운드 핸들러 중 적어도 하나가 상기 시퀀스의 메시지를 현재 처리하고 있는 것을 나타내는 경우; 또는 상기 큐 저장소가 상기 시퀀스에서 처리될 메시지를 이미 포함하고 있는 경우; 또는 수신된 입력 메시지가 상기 시퀀스에서 메시지 랭킹을 표시하는 색인을 구비하는 경우(여기서, 상기 메시지 랭킹은 상기 시퀀스 저장소에서 표시된 시퀀스 랭킹을 초과하고 상기 시퀀스에서 처리될 그 다음 메시지의 랭킹을 한정한다), 추가적인 처리를 유지하기 위해 상기 입력 메시지를 오버플로우 저장소에 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로-구현되는 방법에 관한 것이다. The sequence status indicating that at least one of the outbound handlers is currently processing the message of the sequence; Or if the queue repository already contains a message to be processed in the sequence; Or if the received input message has an index indicating the message ranking in the sequence, where the message ranking exceeds the displayed sequence rankings in the sequence store and defines the ranking of the next message to be processed in the sequence) And storing the input message in an overflow depot to maintain additional processing.

본 발명의 실시예의 전술된 측면과 다른 측면은 첨부 도면과 함께 판독될 때 이하 상세한 설명으로부터 보다 명백해질 것이다:
도 1a는 호출 시스템과 원격 시스템 사이에 동기적인 호출 또는 메시지를 연대순으로 처리하는 것을 도시하는 예시적인 흐름도.
도 2는 호출 시스템과 원격 시스템 사이에 비동기 호출 또는 메시지를 연대순으로 처리하는 것을 도시하는 예시적인 흐름도.
도 3은 분산공정 시스템에서 호출 또는 메시지를 병렬로 처리하는 것을 도시하는 예시적인 흐름도.
도 4는 메시지 처리 순서를 벗어나 데이터를 손상시킬 위험을 초래할 수 있는 분산공정 시스템에서 비동기 호출 또는 메시지를 병렬로 처리하는 것을 도시하는 예시적인 흐름도.
도 5는 본 발명에 따른 중앙 집중화된 및 공유된 시퀀스 컨텍스트에서 하이 레벨 시퀀스 관리의 예시적인 블록도.
도 6은 본 발명에 따른 전송 및 처리 채널 내 시퀀스를 식별하는 공정을 도시하는 예시적인 흐름도.
도 7은 본 발명에 따른 예시적인 비동기적인 및 분산처리 시스템을 도시하는 도면.
도 8a는 발명에 따른 인바운드 핸들러가 시퀀스 A에서 제1 메시지를 수신하는 시퀀싱 공정의 예시적인 단계를 도시하는 도면.
도 8b는 본 발명에 따른 인바운드 핸들러가 시퀀스 A에서 제2 메시지를 수신하는 시퀀싱 공정의 다른 예시적인 단계를 도시하는 도면.
도 8c는 본 발명에 따른 아웃바운드 핸들러가 시퀀스 A에서 제1 메시지를 처리하는 시퀀싱 공정의 다른 예시적인 단계를 도시하는 도면.
도 8d는 본 발명에 따른 아웃바운드 핸들러가 시퀀스 A에서 제1 메시지를 처리한 시퀀싱 공정의 다른 예시적인 단계를 도시하는 도면.
도 8e는 시퀀스가 본 발명에 따라 재-배열된 시퀀싱 공정의 예시적인 단계를 도시하는 도면.
The foregoing and other aspects of embodiments of the present invention will become more apparent from the following detailed description when read in conjunction with the accompanying drawings, in which:
Figure 1A is an exemplary flow chart illustrating chronologically processing synchronous calls or messages between a calling system and a remote system;
2 is an exemplary flow chart illustrating chronologically processing an asynchronous call or message between a calling system and a remote system;
3 is an exemplary flow chart illustrating processing of a call or message in parallel in a distributed processing system;
4 is an exemplary flow chart illustrating parallel processing of asynchronous calls or messages in a distributed processing system that may result in a risk of compromising data beyond the message processing order;
5 is an exemplary block diagram of high level sequence management in a centralized and shared sequence context in accordance with the present invention.
6 is an exemplary flow chart illustrating a process for identifying a sequence in a transmission and processing channel according to the present invention;
Figure 7 illustrates an exemplary asynchronous and distributed processing system in accordance with the present invention.
8A illustrates an exemplary step of a sequencing process in which an inbound handler according to the invention receives a first message in sequence A. FIG.
Figure 8b illustrates another exemplary step in the sequencing process in which an inbound handler according to the present invention receives a second message in sequence A;
FIG. 8C illustrates another exemplary step in a sequencing process in which an outbound handler according to the present invention processes a first message in sequence A. FIG.
Figure 8d shows another exemplary step of a sequencing process in which an outbound handler according to the present invention processes a first message in sequence A;
Figure 8E illustrates exemplary steps of a sequencing process in which sequences are reordered in accordance with the present invention.

이하 상세한 설명은 여행 산업에 적용하는 상황에서 주어졌지만, 이는 응용 예를 제한하려고 의도된 것이 아니며, 본 발명은 호텔 룸, 차량 렌탈, 철도 티켓 또는 등과 같은 여행 제품은 물론 모든 종류의 데이터 처리에 적용될 수 있다. While the following detailed description has been given in the context of application to the travel industry, it is not intended to limit the application examples, and the invention is applicable to all types of data processing as well as travel products such as hotel rooms, vehicle rental, railway tickets, .

본 발명에 따라, 명시적으로 시퀀스 내 각 메시지의 랭킹을 표시하는 색인을 제공하는 것에 의하든지, 또는 암시적으로 메시지를 순차적으로 전달하고 나서 주어진 시퀀스에서 그 다음 메시지를 송신하기 전에 주어진 메시지의 전송 수신확인을 기다리는 것에 의해서, 메시지의 발송자 또는 호출 시스템에 의해 비동기적인 및 병렬 환경에서 메시지의 처리 순서가 정의된다. In accordance with the present invention, either by providing an index that explicitly indicates the rank of each message in the sequence, or by sending an implicit message sequentially, and then sending the next message in the given sequence By waiting for an acknowledgment, the processing order of messages in the asynchronous and parallel environment is defined by the sender or calling system of the message.

본 발명은 동시적인 및 독립적인 공정이 시퀀스로 한정된 주어진 메시지 세트를 처리하는 시퀀싱 순서를 고려할 것을 보장하는 것을 목적으로 한다. The present invention aims at ensuring that simultaneous and independent processes take into account the sequencing order of processing a given set of messages defined in a sequence.

이런 점에서, 본 발명에 따른 분산 비동기 메시지를 시퀀싱하는 방법, 장치 및 시스템은, 아래에 설명되고 도면을 참조하여 더 상세히 이후 상술되는 여러 액션을 수행한다. In this regard, a method, apparatus and system for sequencing a distributed asynchronous message according to the present invention performs a variety of actions as described below and described in more detail below with reference to the drawings.

주어진 시퀀스에 속하는 각 메시지 또는 서비스 호출은, 인터페이스의 정의상, 이것이 속하는 특정 시퀀스를 실제 나타내기 위해 태그(tagged)된다. Each message or service call belonging to a given sequence is tagged to actually represent the particular sequence to which it belongs, by definition of the interface.

메시지의 시퀀스 내 메시지 또는 서비스 호출의 랭킹은, The ranking of a message or service call in a sequence of messages may,

Figure 112015011450742-pct00003
명시적으로 적절한 인터페이스를 통해 메시지 또는 서비스 호출의 발송자/송신자에 의해 제공되거나(예를 들어, 메시지는 그 시퀀스 내 메시지의 랭킹을 한정하는 색인을 포함하는 필드를 포함한다), 또는
Figure 112015011450742-pct00003
Provided by the sender / sender of the message or service call explicitly through the appropriate interface (e.g., the message includes a field containing an index that defines the ranking of messages in the sequence), or

Figure 112015011450742-pct00004
암시적으로 시퀀스에서 메시지 또는 서비스 호출이 시간 외에(overtime) 수신된 순차 순서(sequential order)를 사용하는 것에 의해 제공된다.
Figure 112015011450742-pct00004
Implicitly, a message or service call in a sequence is provided by using a sequential order received over time.

시퀀스 및 메시지 랭킹 또는 서비스 호출 순서가 식별되면, 시퀀스는 적절히 관리되어야 한다. If sequence and message ranking or service call sequence is identified, the sequence should be properly managed.

도 5는 중앙 집중화된 및 공유된 시퀀스 컨텍스트에서 하이 레벨 시퀀스 관리의 예시적인 블록도를 도시한다. 이 도면에는, 시스템의 주요 특징 및 주요 단계가 상세히 도시된다. Figure 5 shows an exemplary block diagram of high level sequence management in a centralized and shared sequence context. In this figure, the main features and major steps of the system are shown in detail.

비동기적인 및 분산처리 시스템은, 입력 메시지(501)를 수신하는 인바운드 핸들러(510) 및 메시지를 처리하고 이 메시지를 전달하도록 구성된 아웃바운드 핸들러(530)를 포함한다. 이 시스템은, 메시지(501)가 속한 시퀀스의 순서가 유지되도록 이 메시지(501)의 처리가 보류(withhold)되어야 하는 경우, 인바운드 핸들러로부터 수신된 메시지를 저장할 수 있는 오버플로우 저장소 영역(540)을 더 포함한다. The asynchronous and distributed processing system includes an inbound handler 510 that receives an input message 501 and an outbound handler 530 that is configured to process and deliver the message. The system includes an overflow storage area 540 that can store messages received from an inbound handler if the processing of this message 501 needs to be withhed so that the order of the sequence to which the message 501 belongs is retained .

이 시스템은 복수의 병렬 인바운드 핸들러(510) 및 복수의 병렬 아웃바운드 핸들러(530)를 포함하고 도 5는 이해를 돕기 위해 간략화된 것이다. The system includes a plurality of parallel inbound handlers 510 and a plurality of parallel outbound handlers 530, and FIG. 5 is simplified for ease of understanding.

인바운드 핸들러는 수용체(acceptor) 또는 수용체 공정이라고 언급될 수 있다. 따라서 복수의 인바운드 핸들러를 포함하는 인바운드 핸들러 층은 수용체 층이라고 언급될 수 있다. An inbound handler may be referred to as an acceptor or acceptor process. Thus, an inbound handler layer comprising a plurality of inbound handlers may be referred to as a receptor layer.

아웃바운드 핸들러는 프로세서 또는 전달 공정이라고 언급될 수 있다. 따라서 복수의 아웃바운드 핸들러를 포함하는 아웃바운드 핸들러 층은 전달 층이라고 언급될 수 있다. An outbound handler may be referred to as a processor or a forwarding process. Thus, an outbound handler layer comprising a plurality of outbound handlers may be referred to as a transport layer.

인바운드 핸들러(510)는 특히 발행자(publisher)와 같은 발송자로부터 메시지를 수신하는 동작; 메시지의 무결성(integrity)을 검증(validate)하는 동작; 시퀀스 록킹 및 상태 검증을 수행하는 동작; 2개의 영역(즉, 큐 저장소 또는 오버플로우 영역) 중 하나의 영역에 메시지를 저장하는 동작; 발송자에 답변하는 동작 중 어느 하나의 동작을 수행하도록 구성된다. The inbound handler 510 may specifically include receiving an message from a sender such as a publisher; Validating the integrity of the message; Performing sequence locking and state verification; Storing a message in one of two zones (i.e., a queue repository or an overflow zone); And responding to the sender.

유리한 실시예에 따라, 아웃바운드 핸들러(530)는 2개의 공정, 즉 제1 공정과 제2 공정으로 구성된다. 제1 공정은 전달 공정(531)이라고 언급되고, 저장소 큐로부터 메시지를 취득하는 동작; 이 메시지를 통신 채널을 통해 수신자에 송신하는 동작; 다른 공정에 이용가능하도록 중지(quit)하는 동작 중 어느 하나를 수행하도록 구성된다. According to an advantageous embodiment, the outbound handler 530 consists of two processes: a first process and a second process. The first process is referred to as a delivery process 531 and includes the act of obtaining a message from the store queue; Transmitting the message to a recipient via a communication channel; And quitting to be available for another process.

제2 공정은 수신확인 공정(532)이라고 언급되고, 수신자로부터 수신의 수신확인을 수신하는 동작; 대응하는 시퀀스에서 그 다음 메시지를, 만약 있다면, 저장소 큐에 두는 것과 같은 시퀀스 관리를 수행하는 동작; 다른 공정에 이용가능하도록 중지하는 동작을 수행하도록 구성된다. The second process is referred to as an acknowledgment process 532 and includes receiving an acknowledgment of receipt from a recipient; Performing a sequence management such as placing the next message in the corresponding sequence, if any, in a storage queue; So as to perform an operation of suspending it so as to be usable in another process.

따라서, 아웃바운드 핸들러(532)로 형성된 전달 층은 비동기식이어서 높은 스케일가능성 요구조건에 순응할 수 있다. 이런 방식으로, 시스템은 수신자의 레이턴시(latency)에 독립적이다. 보다 정확하게는, 이것은, 아웃바운드 핸들러가 제1 시퀀스의 메시지를 검색하고 전달할 수 있고 이후 제1 시퀀스의 메시지를 전달한 것에 대한 수신확인을 수신하기 전에 제2 시퀀스의 다른 메시지를 검색하고 전달할 수 있다는 것을 의미한다. 그리하여, 아웃바운드 핸들러는 많은 시퀀스로부터 메시지를 비동기적으로 핸들링하여, 이에 의해 각 시퀀스에 올바른 순서를 항상 유지하면서 시스템이 라우팅할 수 있는 메시지의 수를 증가시킬 수 있다. Thus, the transport layer formed by the outbound handler 532 is asynchronous and can conform to high scalability requirements. In this way, the system is independent of the recipient's latency. More precisely, this means that the outbound handler can retrieve and forward the message of the first sequence and then retrieve and forward the other message of the second sequence before receiving the acknowledgment that the message of the first sequence has been delivered it means. Thus, the outbound handler can handle messages asynchronously from many sequences, thereby increasing the number of messages the system can route while maintaining the correct order in each sequence.

본 발명에 따라, 상태 기계가 각 시퀀스에 사용되는 집중 및 공유된 시퀀스 컨텍스트가 구현된다. 입력 메시지(501)가 인바운드 핸들러(510)에 수신될 때마다, 대응하는 시퀀스 컨텍스트 상태가 체크(520)된다. 일 실시예에 따라, 대응하는 시퀀스 컨텍스트가 존재하지 않는 경우, 이것은 동적으로 투명하게 생성된다. 따라서, 본 발명은, 시퀀스가 시스템에서 미리 한정될 것을 요구하지 않아서 이런 점에서 완전히 동적이다. 나아가, 메시지가 시퀀스에서 그 랭킹을 표시하는 색인을 구비하지 않는 경우, 메시지 랭킹이 메시지의 도착 순서에 따라 메시지에 할당된다. In accordance with the present invention, a converged and shared sequence context is implemented in which the state machine is used for each sequence. Each time an input message 501 is received by the inbound handler 510, the corresponding sequence context state is checked 520. [ According to one embodiment, if there is no corresponding sequence context, this is dynamically generated transparently. Thus, the present invention is completely dynamic in this respect as it does not require that the sequence be predefined in the system. Further, if the message does not have an index indicating its rank in the sequence, the message ranking is assigned to the message according to the arrival order of the message.

Figure 112015011450742-pct00005
시퀀스 상태가 아웃바운드 핸들러 층이 시퀀스의 그 다음 메시지를 기다리고 있는 것을 표시하는 경우, 즉, 시퀀스 상태가 "대기(waiting)" 상태인 경우, 입력 메시지(501)는 아웃바운드 핸들러(530)에 의해 표준 거동에 따라 정상적으로 처리(522)되고(이때, 메시지는 비동기 처리에 이용가능하다); 또는
Figure 112015011450742-pct00005
If the sequence state indicates that the outbound handler layer is waiting for the next message in the sequence, i. E. The sequence state is in the "waiting" state, the incoming message 501 is sent by the outbound handler 530 Normally processed 522 according to the standard behavior (at this time, the message is available for asynchronous processing); or

Figure 112015011450742-pct00006
시퀀스 상태가 시퀀스의 메시지가 이미 현재 처리되고 있는 것을 표시하는 경우, 즉, 시퀀스 상태가 "처리" 상태인 경우, 입력 메시지(501)는 차후 처리(524)를 위해 특정 시퀀스 오버플로우 저장소 영역(540)에 저장된다. 오버플로우 저장소 영역(540)은 입력 메시지의 순서가 상실되지 않는 방식으로 구조화되고/색인된다. 이런 방식으로, 입력 메시지(501)는 추가적인 처리를 위해 유지되고, 이 메시지는 (시퀀스에서 벗어나서) 즉시 처리에 이용가능하지 않다.
Figure 112015011450742-pct00006
If the sequence state indicates that the message of the sequence is currently being processed, that is, if the sequence state is a "processing" state, the input message 501 may be stored in a particular sequence overflow storage area 540 ). The overflow storage area 540 is structured and / or indexed in such a way that the order of the input messages is not lost. In this way, the input message 501 is maintained for further processing, and this message is not available for immediate processing (out of sequence).

아웃바운드 핸들러 층은 표준 거동에 따라 처리될 메시지를 수신하여 메시지가 사실상 올바른 시퀀스 랭킹에 있다. The outbound handler layer receives the message to be processed according to the standard behavior and the message is in fact in the correct sequence ranking.

메시지(501)가 처리되면, 아웃바운드 핸들러 층은 오버플로우 저장소 영역(540)에서 시퀀스로 처리될 그 다음 메시지를 기다린다. 이러한 메시지가 발견되면, 이 메시지는 표준 공정에 따라 아웃바운드 핸들러 층으로 푸시된다. 메시지가 발견되지 않으면, 시퀀스 상태는 "대기" 상태로 다시 설정된다. When message 501 is processed, the outbound handler layer waits for the next message to be processed in sequence in overflow storage area 540. If such a message is found, it is pushed to the outbound handler layer according to standard processes. If no message is found, the sequence status is reset to the "standby" state.

시퀀스 내 각 메시지의 순서는 유지된다. 시퀀스 저장소는 시퀀스의 메시지의 순서를 보존하기 위해 처리되어야 하는 그 다음 메시지의 랭킹을 표시하는 시퀀스 랭킹을 한정한다. 시퀀스 랭킹은 메시지의 처리가 완료될 때마다 증분적으로 업데이트된다. 그리하여 시퀀스 랭킹은 카운터로 보일 수 있다. The order of each message in the sequence is maintained. The sequence repository defines a sequence ranking that indicates the ranking of the next message to be processed in order to preserve the order of the messages in the sequence. Sequence ranking is incrementally updated each time processing of a message is completed. Thus, the sequence ranking can be viewed as a counter.

시퀀스 랭킹, 즉 처리될 그 다음 메시지의 랭킹과 매칭하지 않는 임의의 입력 메시지는, 처리될 올바른 메시지가 인바운드 핸들러(510)에 의해 수신될 때까지, 오버플로우 저장소 영역(540)에 저장된다. 이것은 오버플로우 저장소 영역(540)에서 삽입 동작/제거 동작이 시퀀스의 랭킹 및 각 메시지의 랭킹을 고려하여 수행되는 것을 의미한다. Any input message that does not match the sequence ranking, i.e., the ranking of the next message to be processed, is stored in the overflow storage area 540 until the correct message to be processed is received by the inbound handler 510. This means that the insertion / removal operations in the overflow storage area 540 are performed taking into account the ranking of the sequences and the ranking of each message.

메시지는 시퀀스에서 처리될 차례(turn)를 펜딩하는 오버플로우 저장소 영역(540)에 저장되므로, 시퀀스는 시퀀스에서 그 다음 메시지에 의해 록킹 해제되는 일이 일어나지 않을 수 있다. 이러한 상황은 매우 종종 일어나는 것은 아니지만, 본 발명은, 시퀀스의 컨텍스트에 표시자를 두어, 표시자가 만료된 것으로 고려될 때 시퀀스에 액션을 취하는 동적 방식, 예를 들어 만료된 메시지 또는 만료된 시퀀스를 폐기하는 액션을 취하는 동적 방식을 제공한다. Since the message is stored in the overflow storage area 540 pending the turn to be processed in the sequence, it may not happen that the sequence is unlocked by the next message in the sequence. Although this situation does not occur very often, the present invention places an indicator in the context of the sequence to indicate a dynamic way to take action on the sequence when the indicator is considered expired, for example, to discard an expired message or an expired sequence It provides a dynamic way to take action.

MOM이라고 언급되는 일부 메시지 기반 미들웨어(Message Oriented Middleware: MOM)는 병렬 처리의 사용을 회피하는 것에 의해 시퀀싱 특징을 제공한다(즉, 이들은 단 하나의 큐잉 해제 소비(de-queuing consumer)를 강제한다). 그리하여, 이들은 스케일가능성을 희생하고 시퀀싱을 보장한다. Oracle

Figure 112015011450742-pct00007
Advanced Queuing이 대표적인 예이다. Message Oriented Middleware (MOM), referred to as MOM, provides sequencing features by avoiding the use of parallel processing (ie they force only one de-queuing consumer) . Thus, they sacrifice scalability and ensure sequencing. Oracle
Figure 112015011450742-pct00007
Advanced Queuing is a good example.

일부 다른 MOM(예를 들어, MQ-Series)은 상관기에 기초하여 시퀀싱 특징을 제공하지만, 시퀀스 메시지가 서로 논리적으로 그룹화된 것처럼 처리될 것을 요구한다. 이외에, 그룹 사이즈는 제한되어야 하고 MOM은 큐잉 해제 공정에 추가적인 제약을 요구할 수 있다. Some other MOMs (e.g., MQ-Series) provide sequencing features based on correlators, but require that sequence messages be treated as logically grouped together. In addition, the group size should be limited and the MOM may require additional constraints on the de-queuing process.

본 발명에 따른 분산 및 병렬 처리는 병렬 처리 및 스케일가능성을 유지하면서 엄격한 시퀀싱을 제공하고, 이 방식에 특정 제약을 요구함이 없이 메시지 또는 서비스 호출이 큐잉 해제 공정에 의해 상관되거나 처리된다. 본 발명의 방법, 장치 및 시스템의 높은 스케일가능성과 탄력성을 통해, The distributed and parallel processing according to the present invention provides strict sequencing while maintaining parallel processing and scalability, and the message or service call is correlated or processed by the dequeue process without requiring specific constraints on this approach. Through the high scale possibilities and resiliency of the method, apparatus and system of the present invention,

Figure 112015011450742-pct00008
메시지를 포스팅(posted)하고 공정이 수신확인을 기다리지 않고, 다른 공정(수신확인 공정)이 수신확인을 수신하는 일을 담당하여, 매우 많은 메시지 처리량에 대처(coping with)할 수 있는,"포스팅 및 중지"원리를 사용하여 완전히 비동기식 전달 공정을 구현할 수 있고; 및
Figure 112015011450742-pct00008
Message, which can cope with a very large amount of message processing, by taking charge of receiving an acknowledgment from another process (acknowledgment process), without waiting for the acknowledgment of the process. Quot; stop "principle can be used to implement a completely asynchronous transfer process; And

Figure 112015011450742-pct00009
완전히 분산공정을 구현하고 시퀀스와 인바운드/아웃바운드 핸들러 사이에 친화성(affinity)을 제거하여, 이에 의해 임의의 인바운드/아웃바운드 핸들러가 임의의 시퀀스의 메시지를 핸들링할 수 있다.
Figure 112015011450742-pct00009
By implementing a fully distributed process and eliminating affinity between the sequence and the inbound / outbound handler, any inbound / outbound handler can handle messages of any sequence.

메시지 시퀀싱에 대처하는 일상적인 접근법은 모노(mono) 공정 아키텍처로 복귀하는 것일 수 있는데, 이는 탄력성 및 스케일가능성에 있어 막대하고 종종 허용할 수 없는 제약을 야기한다. 이와는 반대로, 본 발명은, 시퀀스에서 원소 개수(cardinality)가 높은 한, 시퀀싱을 보장하면서, 2개의 레벨, 인바운드 핸들러 레벨 및 아웃바운드 핸들러 레벨에서 분산 및 병렬 처리의 전체 이익을 제공할 수 있다. 이것은 시스템이 병렬로 많은 개수의 시퀀스에 대처해야 하는 경우에만 본 발명이 병렬 시퀀스 처리의 잇점을 완전히 이용할 수 있다는 것을 의미한다. A routine approach to addressing message sequencing may be to revert to a mono processing architecture, which results in large and often unacceptable constraints on resilience and scalability. Conversely, the present invention can provide the full benefit of distributed and parallel processing at two levels, inbound handler level and outbound handler level, while ensuring sequencing, as long as the cardinality in the sequence is high. This means that the present invention can fully exploit the advantages of parallel sequence processing only if the system has to cope with a large number of sequences in parallel.

시퀀스 유지에 대하여 저장소 영역 및 큐잉 해제 공정에 전제 조건은 없다: There are no prerequisites for the storage area and the dequeue process:

Figure 112015011450742-pct00010
인바운드 핸들러 층에서 메시지 수용(acceptance)의 큐잉 공정 및 아웃바운드 핸들러 층에서 메시지 처리의 큐잉 공정은 이것이 본 발명에 따라 가능할 수 있을 때 시퀀스 보존을 지원할 필요가 없다;
Figure 112015011450742-pct00010
The queuing process of message acceptance at the inbound handler layer and the queuing process of message processing at the outbound handler layer need not support sequence preservation when this may be possible according to the present invention;

Figure 112015011450742-pct00011
메시지의 병렬 저장소 및 병렬 검색(즉, 큐잉/큐잉 해제)이 완전히 보존된다;
Figure 112015011450742-pct00011
Parallel storage and parallel retrieval of messages (ie queuing / dequeuing) is completely preserved;

Figure 112015011450742-pct00012
비-제한적인 실시예에 따라, 큐 저장소 그 자체는 노드(node)에 국부적일 수 있는 반면, 오버플로우 저장소 영역은 전체적으로 유지되는데, 즉, 모든 아웃바운드 핸들러에 의해 공유된다. 오버플로우 저장소는, 임의의 노드가 주어진 시퀀스를 처리하여 고유한 오버플로우 영역에 액세스하여 이 저장소에 실제 큐잉하고 큐잉 해제할 수 있으므로 공유될 필요가 있다. 큐 저장소가 모든 아웃바운드 핸들러에 의해 공유되지 않는 경우, 이 큐 저장소는 단일 아웃바운드 핸들러에 전용되거나 또는 복수의 아웃바운드 핸들러에 전용될 수 있다. 큐 저장소가 모든 아웃바운드 핸들러에 의해 공유되지 않는 경우에, 각 메시지는 단 하나의 국부 큐 저장소에 의해 수신된다.
Figure 112015011450742-pct00012
According to a non-limiting embodiment, the queue storage itself may be local to the node, while the overflow storage area is maintained globally, i. E., Shared by all outbound handlers. An overflow store needs to be shared because any node can process a given sequence to access a unique overflow area and actually queue and dequeue to that store. If the queue repository is not shared by all outbound handlers, this queue repository can be dedicated to a single outbound handler or dedicated to multiple outbound handlers. If the queue repository is not shared by all outbound handlers, each message is received by only one local queue repository.

Figure 112015011450742-pct00013
메시지는 변경된 상태로 오버플로우 영역에 놓일 수 있어서 예외 큐(exception queue)가 필요치 않으므로 거부된 메시지를 저장하는 것은 더 쉽다.
Figure 112015011450742-pct00013
It is easier to store the rejected message because the message can be placed in the overflow area with the changed state, so no exception queue is needed.

본 발명의 방법, 장치 및 시스템에 따라, 메시지 시퀀스는 시퀀스의 식별 및 이 시퀀스에서 메시지 랭킹의 식별을 수행하는 것에 의해 분산 및 병렬 모드에서 처리된다. 식별에 더하여, 시퀀스는 시퀀스 록킹 및 타임아웃을 포함하여 관리 및 재-배열되어야 한다. 이런 측면은 아래에서 보다 상세히 설명된다. According to the method, apparatus and system of the present invention, the message sequence is processed in distributed and parallel mode by performing identification of the sequence and identification of the message rankings in this sequence. In addition to identification, the sequence must be managed and reordered, including sequence locking and timeout. This aspect is described in more detail below.

시퀀스의 식별Identification of Sequences

주어진 전송 채널을 공유하는 메시지 또는 이벤트의 흐름에서, 고려할 시퀀스 관점에서 각 상관된 메시지 세트는 명시적으로 한정될 것을 요구한다. 도 6은 발송 시스템(610)과 공정 시스템(630) 사이에 전송 및 처리 채널(620)에서 시퀀스를 식별하는 공정의 예시적인 흐름도를 도시한다. In the flow of a message or event sharing a given transport channel, each correlated message set is required to be explicitly limited in terms of the sequence to be considered. 6 illustrates an exemplary flow diagram of a process for identifying a sequence in a transmission and processing channel 620 between a dispatching system 610 and a processing system 630. As shown in FIG.

전용 파라미터는 주어진 전송에 수반되는 각 메시징 프리미티브(messaging primitive)에 제공된다. 이 전용 파라미터는 시퀀스 상관 값으로도 언급되는 시퀀스 식별자이다. 이 파라미터는 일반적으로 메시지의 발송 시스템에 의해 영숫자 값(alphanumeric value) 세트이다. 이 파라미터는 동일한 시퀀스에 속하는 메시지를 실제 식별하기 위해 각 수반된 성분에 의해 사용된다. 예를 들어, 메시지 1 내지 4는 전송 채널(620)에서 파싱(parsed)되고 메시지(#1, ... , #4)로 식별된다. 이들 상관된 및 정렬된 메시지는 동일한 전송 채널(620)을 공유하지만, 이들 메시지는 서로 연속적으로 추종(following)하지 않는다. 그리하여 이들 메시지는 전송 채널(620)에서 다른 시퀀스에 속하는 메시지와 서로 뒤얽힌다(intertwined). A dedicated parameter is provided for each messaging primitive involved in a given transmission. This dedicated parameter is a sequence identifier, also referred to as a sequence correlation value. This parameter is usually a set of alphanumeric values by the sending system of the message. This parameter is used by each associated component to actually identify a message belonging to the same sequence. For example, messages 1 to 4 are parsed in transport channel 620 and identified as messages (# 1, ..., # 4). These correlated and aligned messages share the same transport channel 620, but these messages do not follow each other in succession. Thus, these messages are intertwined with messages belonging to other sequences in the transport channel 620.

시퀀스 상관 파라미터는 주어진 전송 및 처리 체인에서 별개의 충돌 공정에 의해 공유되지 않는 것을 보장하는 방식으로 한정된다. 이 컨텍스트에서, 엄격한 고유성(uniqueness)을 가지는 것이 필수적이다. 바람직하게는, 시퀀스 상관 파라미터의 이러한 정의는 시스템을 사용하여 비즈니스 공정을 수행하는 책임성에 있다. Sequence correlation parameters are defined in a manner that ensures that they are not shared by separate collision processes in a given transmission and processing chain. In this context, it is essential to have strict uniqueness. Preferably, this definition of the sequence correlation parameter is responsible for performing business processes using the system.

시퀀스에서 메시지 랭킹의 식별Identifying Message Ranking in Sequences

특정 순서에서 처리될 것을 요구하는 메시지는 2가지 종류로 분류될 수 있다: Messages requiring to be processed in a particular order can be classified into two categories:

Figure 112015011450742-pct00014
시퀀스 내 순서 또는 랭킹이 메시지가 생성될 때 알려지고, 그리고 바람직하게는 메시지의 총 수가 메시지 생성 시간에 알려지는 제1 종류의 메시지(여기서, 생성 공정은 전송 프리미티브에서 특정 메시지 랭킹 번호를 각 메시지에 할당할 수 있다. 이 메시지 랭킹 번호는 이후 최종 처리를 수행할 때까지 전체 체인의 일부로 각 공정에 의해 운반 및 저장된다); 및
Figure 112015011450742-pct00014
A first type of message in which a sequence or ranking in a sequence is known when a message is generated and preferably a total number of messages is known at a message generation time, This message ranking number is then carried and stored by each process as part of the overall chain until the final processing is performed); And

Figure 112015011450742-pct00015
시퀀스 내 순서가 발생 시간에 결정되는 제2 종류의 메시지(이 제2 종류의 메시지의 처리는 일반적으로 증분적이어서, 공정에서 각 새로운 메시지(또는 이벤트)가 시퀀스에서 이전의 메시지의 공정의 결과를 변경한다는 것을 의미한다. 이런 측면에서, 메시지의 발송 시스템은 주어진 시퀀스에서 메시지의 메시지 랭킹 번호도 알지 못하고, 시퀀스에서 메시지의 총 개수도 알지 못한다).
Figure 112015011450742-pct00015
A second type of message in which the order in the sequence is determined at the time of occurrence (the processing of this second type of message is generally incremental so that each new message (or event) in the process will result in a process of the previous message in the sequence In this respect, the message dispatching system does not know the message ranking number of the message in a given sequence, nor does it know the total number of messages in the sequence).

간결함을 위하여, 본 설명에서는 주어진 시퀀스에서 메시지의 메시지 랭킹 번호가 메시지 랭킹이라고 언급된다.For brevity, in the present description, the message ranking number of a message in a given sequence is referred to as message ranking.

코어 시퀀스 관리Core Sequence Management

도 7에 도시된 바와 같이, 예시적인 비동기적인 및 분산처리 시스템은,As shown in FIG. 7, exemplary asynchronous and distributed processing systems include

Figure 112015011450742-pct00016
인바운드 핸들러 층을 형성하는 복수의 인바운드 핸들러(710, 720, ..., 740)(여기서, 인바운드 핸들러는 입력 메시지(711 , 721 , 731 및 741)를 수신하고, 이 메시지를 큐 저장소(750)에 각각 저장하고, 및 이 입력 메시지(711 , 721 , 731 및 741)를 잘 수신하였다는 것을 발송 시스템으로 수신확인할 수 있다);
Figure 112015011450742-pct00016
A plurality of inbound handlers 710,720 ... 740 that form an inbound handler layer where the inbound handler receives incoming messages 711,721,731 and 741 and sends this message to the queue store 750, And can confirm receipt of this input message 711, 721, 731 and 741 to the dispatching system that they have been well received);

Figure 112015011450742-pct00017
아웃바운드 핸들러 층을 형성하는 복수의 아웃바운드 핸들러(760, 770, ..., 790)(여기서, 각 아웃바운드 핸들러는 큐 저장소(750)로부터 메시지를 검색하고 이 메시지를 처리하도록 구성된다. 아웃바운드 핸들러는 처리된 메시지를 애플리케이션으로 전달하는 일을 또한 담당한다)를 포함한다.
Figure 112015011450742-pct00017
A plurality of outbound handlers 760, 770, ..., 790 (each outbound handler is configured to retrieve messages from queue storage 750 and process the messages) The bound handler is also responsible for passing the processed message to the application).

인바운드 핸들러는 수용체 또는 수용체 공정이라고도 언급될 수 있다. 아웃바운드 핸들러는 프로세서 또는 전달 공정이라고도 언급될 수 있다.An inbound handler may also be referred to as a receptor or receptor process. Outbound handlers may also be referred to as processors or forwarding processes.

도 8a는 발송 시스템으로부터 인바운드 핸들러에 의해 수신된 시퀀스 A의 제1 메시지의 시퀀싱 공정의 예시적인 단계를 도시하는 도 7의 실시예의 개선을 도시한다. 이 개선에서, 시퀀스 저장소(800)라고 언급되는 추가적인 성분은 복수의 인바운드 핸들러(810, 820, ..., 840)와 복수의 아웃바운드 핸들러(860, 870, ..., 890) 사이에 저장소 층의 일부로 구현된다. 시퀀스 저장소(800)는, 8A illustrates an improvement of the embodiment of FIG. 7 that illustrates exemplary steps of a sequencing process of a first message of sequence A received by an inbound handler from a dispatch system. In this improvement, an additional component, referred to as sequence store 800, is provided between a plurality of inbound handlers 810, 820, ..., 840 and a plurality of outbound handlers 860, 870, ..., Lt; / RTI > layer. The sequence store 800 may include,

Figure 112015011450742-pct00018
단 하나의 핸들러만이 한번에 주어진 시퀀스에서 (또는 동일한 시퀀스 상관 값을 갖는) 메시지를 처리하는 것을 보장하기 위해 뮤텍스(Mutex)라고도 언급되는 중앙 집중화된 또는 공통 및 공유된 시퀀스 뮤텍스(804)(여기서, 임의의 경쟁 시도는 먼저 오는 것에 먼저 서비스하는 모델에서 서비스될 수 있다);
Figure 112015011450742-pct00018
A centralized or common and shared sequence mutex 804, also referred to as a mutex (here, a mutex), to ensure that only a single handler processes a message in a given sequence at once (or with the same sequence correlation value) Any competition attempt may be serviced in a model that is serviced first to come first);

Figure 112015011450742-pct00019
모든 공정들 사이에 공유된 시퀀스 상태를 유지하기 위해 스테이터스(Status)라고도 지칭되는 중앙 집중화된 또는 공통 및 공유된 시퀀스 스테이터스 컨텍스트(802)(여기서, 시퀀스는 그 시퀀스 상관 값에 의해 고유하게 식별된다. 이 스테이터스는 주어진 시퀀스에서 각 이벤트에 대해,
Figure 112015011450742-pct00019
A centralized or common and shared sequence status context 802, also referred to as a Status, to maintain a shared sequence state between all processes (where the sequence is uniquely identified by its sequence correlation value). This status indicates that for each event in a given sequence,

o 그 다음 입력 메시지가 전달을 위해 큐잉될 수 있는 것을 의미하는 "대기"상태; 및o "standby" state, which means that the next incoming message can be queued for delivery; And

o 그 다음 입력 메시지가 유지되는 것을 의미하는 "전달" 상태를 적용하는 거동을 또한 결정할 수 있게 한다.); 및o It is also possible to determine the behavior of applying the "transfer" state, which means that the next input message is retained); And

Figure 112015011450742-pct00020
복수의 아웃바운드 핸들러에 의해 처리될 그 다음 메시지만이 이들 아웃바운드 핸들러에 액세스가능하도록 보장하고 다른 메시지는 이 오버플로우 저장소에서 "펜딩"하기 위해 오버플로우 또는 오버플로우 저장소 영역이라고도 지칭되는 중앙 집중화된 또는 공통 및 공유된 오버플로우 저장소(806)(여기서, 오버플로우 저장소는 현재 시퀀스 상태에 대해 전달되도록 준비가 되지 않은 색인된 및 정렬된 시퀀스 메시지를 위한 저장소이다.)를 포함한다.
Figure 112015011450742-pct00020
It is ensured that only the next message to be processed by the plurality of outbound handlers is accessible to these outbound handlers, and the other message is a centralized < RTI ID = 0.0 > Or a common and shared overflow store 806, where the overflow store is a store for indexed and ordered sequence messages that are not ready to be delivered for the current sequence state.

컨텍스트 처리 정보인 이들 3개의 성분 스테이터스(802), 뮤텍스(804) 및 오버플로우 저장소(806)는 큐 저장소(850)와 동일한 특성이다. 이들 정보는, These three component statuses 802, mutex 804 and overflow storage 806, which are context processing information, are the same characteristics as the queue storage 850. This information,

- 모든 분산공정이 동일한 노드에서 실행되는 경우 메모리 데이터 또는 파일 기반 저장소에서 구현되거나, 또는 - implemented in memory data or file-based storage if all distributed processes are running on the same node, or

- 분산공정이 여러 노드에서 실행되고 서버 시스템이 원격 시스템인 경우 클라이언트-서버 저장소 데이터베이스(들)에서 구현될 수 있다.- It can be implemented in the client-server repository database (s) if the distributed process is running on multiple nodes and the server system is a remote system.

저장소 층과 표준 메시지 저장소 사이에 최대 일치성은 고유한 거래를 공유하는 공통 RDBMS 엔진에서 모두 구현하는 것에 의해 획득될 수 있다.The maximum correspondence between the storage layer and the standard message store can be obtained by implementing all in a common RDBMS engine sharing a unique transaction.

본 발명의 방법, 장치 및 시스템에 따라, Depending on the method, apparatus and system of the present invention,

Figure 112015011450742-pct00021
큐 저장소(850)는 복수의 인바운드 핸들러와 복수의 아웃바운드 핸들러 사이에 메시지를 교환할 수 있게 하고, 시퀀스 저장소(800)와 독립적으로 동작하고;
Figure 112015011450742-pct00021
The queue store 850 allows messages to be exchanged between a plurality of inbound handlers and a plurality of outbound handlers, and operates independently of the sequence store 800;

Figure 112015011450742-pct00022
시퀀스 저장소(800)의 오버플로우 저장소(806)는 복수의 인바운드 핸들러(810, 820, ..., 840)와 복수의 아웃바운드 핸들러(860, 870, ..., 890) 사이에 메시지를 시퀀싱으로 교환하는 것을 보장한다.
Figure 112015011450742-pct00022
The overflow store 806 of the sequence store 800 is responsible for sequencing messages between a plurality of inbound handlers 810, 820, ..., 840 and a plurality of outbound handlers 860, 870, ..., . ≪ / RTI >

도 8a는 본 발명의 입력 메시지의 시퀀싱 공정을 도시한다: 8A illustrates a sequencing process of an input message of the present invention:

Figure 112015011450742-pct00023
시퀀스 상관 값 "A"에 속하는 메시지(801-1)는 인바운드 핸들러(810)에 의해 수신된다;
Figure 112015011450742-pct00023
A message 801-1 belonging to the sequence correlation value "A " is received by the inbound handler 810;

Figure 112015011450742-pct00024
이 인바운드 핸들러(810)는 시퀀스 "A"의 뮤텍스(804)를 록킹(812)하여 임의의 인바운드 핸들러 또는 아웃바운드 핸들러가 시퀀스 상관 값 "A"를 갖는 다른 메시지를 처리하지 못하게 한다;
Figure 112015011450742-pct00024
This inbound handler 810 locks (812) the mutex 804 of sequence "A " to prevent any inbound handler or outbound handler from processing other messages having the sequence correlation value" A ";

Figure 112015011450742-pct00025
이 인바운드 핸들러(810)는 시퀀스가 존재하지 않거나 또는 시퀀스가 "대기" 상태에 있는 시퀀스 "A"의 중심 상태 컨텍스트(802)를 체크(814)한다;
Figure 112015011450742-pct00025
The inbound handler 810 checks (814) the central state context 802 of the sequence "A " where the sequence does not exist or the sequence is in a" standby "state;

Figure 112015011450742-pct00026
이 인바운드 핸들러(810)는 시퀀스 "A"의 상태 컨텍스트(802)를 "처리" 상태로 설정(814)한다. 본 발명은 이전에 수신된 메시지의 랭킹에 1 증분한 랭킹과 같은 메시지 랭킹을 입력 메시지에 할당한다. 입력 메시지가 이 시퀀스에서 제일 앞에 있는 것이므로, 메시지에 할당된 메시지 랭킹은 1로 설정된다. 메시지 랭킹은 바람직하게는 시퀀스 저장소(800)에 저장되고, 보다 정확하게는 시퀀스 컨텍스트(802)에 저장된다. 인바운드 핸들러(810)는 바람직하게는 메시지(851)를 큐 저장소(850)에 저장(816)한다; 및
Figure 112015011450742-pct00026
This inbound handler 810 sets (814) the state context 802 of sequence "A" The present invention assigns a message ranking to an incoming message, such as a ranking that is incremented by one in ranking the previously received message. Since the input message is first in this sequence, the message ranking assigned to the message is set to one. The message ranking is preferably stored in the sequence store 800, and more precisely in the sequence context 802. The inbound handler 810 preferably stores (816) the message 851 in the queue store 850; And

Figure 112015011450742-pct00027
이 인바운드 핸들러(810)는 메시지 발송자에 수신확인을 송신하고, 시퀀스 "A"의 뮤텍스(804)를 해제하고, 임의의 다른 입력 메시지를 수신할 준비를 한다.
Figure 112015011450742-pct00027
This inbound handler 810 sends an acknowledgment to the message originator, releases the mutex 804 of sequence "A ", and is ready to receive any other incoming message.

도 8b는 다른 입력 메시지가 시스템에 수신된 시퀀싱 공정의 그 다음 단계들을 도시한다: Figure 8b shows the next steps in the sequencing process where another input message is received by the system:

Figure 112015011450742-pct00028
시퀀스 "A"에 속하는 제2 메시지(801-2)가 인바운드 핸들러(820)에 의해 수신된다;
Figure 112015011450742-pct00028
A second message 801-2 belonging to the sequence "A " is received by the inbound handler 820;

Figure 112015011450742-pct00029
이 인바운드 핸들러(820)는 시퀀스 "A"의 뮤텍스(804)를 록킹(822)하여 임의의 인바운드 핸들러(810, 830 또는 840) 또는 아웃바운드 핸들러가 시퀀스 "A" 내 다른 메시지를 처리하지 못하게 한다;
Figure 112015011450742-pct00029
This inbound handler 820 locks 822 the sequence 804 of the sequence "A" to prevent any inbound handler 810, 830 or 840 or outbound handler from processing other messages in the sequence "A";

Figure 112015011450742-pct00030
이 인바운드 핸들러(820)는 시퀀스 "A"의 중심 상태 컨텍스트(802)를 체크(824)하는데, 여기서 시퀀스 상태는 "처리" 상태이다. 메시지가 임의의 아웃바운드 핸들러에 이용가능하게 만들어질 수 없으므로, 인바운드 핸들러(820)는 메시지(807)를 오버플로우 저장소(806)에 저장(826)한다.
Figure 112015011450742-pct00030
This inbound handler 820 checks 824 the central state context 802 of sequence "A ", where the sequence state is a" processing "state. Since the message can not be made available to any outbound handler, the inbound handler 820 stores 826 the message 807 in the overflow store 806.

이전에 입력 메시지의 메시지 랭킹에 1 증분한 것에 대응하는 메시지 랭킹이 입력 메시지에 할당된다. 이전의 메시지의 메시지 랭킹이 1이었으므로, 입력 메시지에 할당된 메시지 랭킹은 2이다. 나아가, 본 발명은 이 시퀀스에서 처리될 그 다음 메시지의 랭킹을 한정하는 시퀀스 랭킹을 증분한다. 따라서, 동일한 시퀀스로부터 복수의 메시지가 시퀀스 저장소(800)에 저장된 경우, 그 메시지 랭킹을 통해 시스템은 큐 저장소(850)에 전달되어야 하는 올바른 메시지를 식별할 수 있다. 올바른 메시지는 시퀀스에 한정된 시퀀스 랭킹에 대응하는 메시지 랭킹을 가지는 메시지이다. 유리하게는, 이것은, 입력 메시지가 발송자에 의해 할당된 메시지 랭킹을 가질 때 및 입력 메시지의 랭킹이 인바운드 핸들러에 도착하는 순서에 따라 할당될 때 적용된다. A message ranking corresponding to one increment in the message ranking of the input message previously is assigned to the input message. Since the message rank of the previous message was 1, the message rank assigned to the input message is 2. Furthermore, the present invention increments the sequence ranking that defines the ranking of the next message to be processed in this sequence. Thus, if multiple messages from the same sequence are stored in the sequence store 800, the system can identify the correct message to be delivered to the queue store 850 via its message ranking. The correct message is a message with a message ranking corresponding to the sequence ranking defined in the sequence. Advantageously, this applies when the input message has a message rank assigned by the sender and when the ranking of the incoming message is assigned according to the order in which it arrives at the inbound handler.

Figure 112015011450742-pct00031
인바운드 핸들러(820)는 메시지 발송자에 수신확인을 송신하고, 시퀀스 "A"의 뮤텍스를 해제하고 임의의 다른 입력 메시지를 수신할 준비를 한다.
Figure 112015011450742-pct00031
The inbound handler 820 sends an acknowledgment to the message sender, releases the mutex of sequence "A " and is ready to receive any other incoming message.

도 8c는 큐 저장소의 큐에 저장된 메시지가 처리를 위해 아웃바운드 핸들러들 중 하나에 큐잉 해제되는 시퀀싱 공정의 그 다음 단계들을 도시한다: Figure 8c shows the following steps of a sequencing process in which a message stored in a queue in a queue repository is dequeued to one of the outbound handlers for processing:

Figure 112015011450742-pct00032
아웃바운드 핸들러(870)들 중 하나는 큐 저장소(850)로부터 시퀀스 "A"의 메시지(851)를 검색(871)한다. 본 발명으로 인해, 이 메시지는 자동적으로, 처리되어야 하는 시퀀스의 그 다음 메시지이다. 그리하여 그 랭킹은 처리된 마지막 메시지의 랭킹에 1증분을 한 것이다. 이 예시적인 실시예에서, 큐 저장소에 저장된 메시지는 시퀀스 A에서 제일 앞에 있는 것이므로, 그 랭킹은 필연적으로 "1"이다;
Figure 112015011450742-pct00032
One of the outbound handlers 870 retrieves (871) a message 851 of sequence "A " from the queue store 850. Due to the present invention, this message is automatically the next message in the sequence to be processed. Thus, the ranking is one increment to the rank of the last message processed. In this exemplary embodiment, since the messages stored in the queue repository are first in the sequence A, the ranking is inevitably "1 ";

Figure 112015011450742-pct00033
아웃바운드 핸들러(870)는 수신자로 더 전달하기 전에 랭킹 "1"을 갖는 메시지를 관련 수신자 또는 다른 라우팅 수단으로 전달(873)한다. 메시지가 단계(873)에서 송신되었다면, 아웃바운드 핸들러(870)는 다른 처리에 이용가능하다. 이 아웃바운드 핸들러는 수신자로부터 수신의 수신확인을 아직 수신하지 못하였으나 여전히 동작할 수 있다. 예를 들어, 아웃바운드 핸들러(870)는 다른 시퀀스에 속하는 다른 메시지를 검색하고 송신하여, 비동기식 전달을 달성하여 처리량을 개선시킬 수 있다. 또한 이 아웃바운드 핸들러는 임의의 메시지에 대해 임의의 발송자로부터 수신의 수신확인을 수신할 수 있다. 그리하여, 아웃바운드 핸들러가 실행할 수 있는 메시지 및 처리의 개수는 단계(873)에서 송신된 메시지의 발송자의 응답 시간에 의해 제한되지 않는다.
Figure 112015011450742-pct00033
Outbound handler 870 passes 873 the message with the ranking "1 " to the associated recipient or other routing means before further forwarding to the recipient. If a message was sent in step 873, the outbound handler 870 is available for other processing. This outbound handler has not yet received acknowledgment of receipt from the receiver, but can still operate. For example, the outbound handler 870 can retrieve and send other messages belonging to another sequence to achieve asynchronous delivery, thereby improving throughput. The outbound handler can also receive an acknowledgment of receipt from any sender for any message. Thus, the number of messages and processes that the outbound handler is capable of executing is not limited by the response time of the sender of the message sent in step 873.

Figure 112015011450742-pct00034
수신자는 아웃바운드 핸들러(870)의 전달 공정(8701)으로부터 단계(873)에서 송신된 메시지를 수신한다. 이에 응답하여, 수신자는 수신확인 메시지를 시스템으로 송신한다. 동일한 아웃바운드 핸들러(870)의 수신확인 공정(8702) 또는 다른 아웃바운드 핸들러(860)의 수신확인 공정(8602)은 수신확인 메시지를 수신한다. 이것은 도 8c에 도시된 단계(874)에 대응한다.
Figure 112015011450742-pct00034
The recipient receives the message sent in step 873 from the delivery process 8701 of the outbound handler 870. [ In response, the receiver sends an acknowledgment message to the system. The acknowledgment process 8702 of the same outbound handler 870 or the acknowledgment process 8602 of the other outbound handler 860 receives an acknowledgment message. This corresponds to step 874 shown in FIG. 8C.

도 8d는 오버플로우 저장소 영역(806)에 저장된 그 다음 메시지가 처리를 위해 아웃바운드 핸들러들 중 하나에 전달되기 전에 큐 저장소(850)로 전달되는 시퀀싱 공정의 그 다음 단계들을 도시한다. 도 8d에 도시된 단계는 시스템의 인바운드 핸들러에서 수신확인 메시지를 수신(875)하는 것에 의해 트리거된다. Figure 8d shows the next steps in the sequencing process where the next message stored in the overflow storage area 806 is passed to the queue store 850 before being forwarded to one of the outbound handlers for processing. The steps shown in FIG. 8D are triggered by receiving 875 an acknowledgment message at the inbound handler of the system.

Figure 112015011450742-pct00035
아웃바운드 핸들러(860)는 상태 컨텍스트(802)에서 시퀀스 랭킹을 체크(862)하여 수신확인된 메시지의 시퀀스 내에서 처리되어야 하는 그 다음 메시지의 랭킹을 결정한다. 시퀀스 랭킹은 "2"로 설정되므로, 아웃바운드 핸들러(860)는 오버플로우 저장소 영역(806)으로부터 메시지 랭킹 "2"를 가지는 시퀀스 "A"의 메시지(807)를 검색(809)한다. 이 메시지(807)는 큐 저장소(850)에 저장될 수 있고, 모든 아웃바운드 핸들러에 이용가능하게 만들어질 수 있다. 상태 컨텍스트(802)는 "처리" 상태에 유지된다. 시퀀스 랭킹은 증분되어 "3"으로 설정되고, 이에 의해 처리될 그 다음 메시지는 "3"과 같은 메시지 랭킹을 가지는 것임을 표시한다;
Figure 112015011450742-pct00035
Outbound handler 860 checks (862) the sequence rankings in state context 802 to determine the ranking of the next message to be processed within the sequence of acknowledged messages. The outbound handler 860 retrieves 809 a message 807 of the sequence "A" having the message ranking "2" from the overflow storage area 806 since the sequence ranking is set to "2". This message 807 may be stored in the queue store 850 and made available to all outbound handlers. The state context 802 is maintained in the "processing" state. The sequence ranking is incrementally set to "3 ", indicating that the next message to be processed has a message ranking of" 3 ";

Figure 112015011450742-pct00036
아웃바운드 핸들러(860)는 종료하고, 큐 저장소(850)에 저장된 다른 메시지를 처리할 준비를 한다.
Figure 112015011450742-pct00036
The outbound handler 860 terminates and is ready to process other messages stored in the queue store 850.

Figure 112015011450742-pct00037
그리고 공정은, 입력 메시지의 전체 시퀀스가 처리되고 전달될 때까지 계속된다.
Figure 112015011450742-pct00037
The process then continues until the entire sequence of input messages has been processed and delivered.

도 8a 내지 도 8d에서 전술된 공정은 입력 메시지가 시퀀스 내 메시지의 랭킹을 표시하는 시퀀스 색인과 함께 또는 이 시퀀스 색인 없이 수신되었는지에 상관없이 동일하다. 이 랭킹이 제공되는 경우, 이 랭킹은 시퀀싱 랭킹으로 사용되고; 그렇지 않은 경우 이 랭킹은 동일한 시퀀스에서 수신 순서에 기초하여 인바운드 핸들러에 의해 생성된다. The process described above in FIGS. 8A-8D is the same regardless of whether the input message was received with or without a sequence index indicating the ranking of the messages in the sequence. If this ranking is provided, this ranking is used as the ranking of the sequencing; Otherwise, this ranking is generated by the inbound handler based on the receiving order in the same sequence.

시퀀스 재-배열Sequence re-arrangement

입력 메시지가 엄격한 시퀀스 순서로 인바운드 핸들러에 의해 수신되는 도 8a 내지 도 8d에서 이전에 상술된 공정에 더하여, 시퀀스를 벗어나 수신된 메시지를 처리하기 위하여 동일한 공정이 또한 구현된다. 유일한 사실상의 전제 조건은, 메시지 발송자가 동일한 시퀀스 내 각 메시지에 대해 색인을 제공하고, 이 색인은 각 메시지에 대해 시퀀스 내 랭킹을 표시하는 것이다. In addition to the processes previously described above in Figures 8A-8D, where input messages are received by the inbound handler in strict sequence order, the same process is also implemented to process the received messages out of sequence. The only real precondition is that the message sender provides an index for each message in the same sequence, which indicates the ranking in the sequence for each message.

이전에 설명된 바와 같이, 본 발명은 이 시퀀스에서 처리될 그 다음 메시지의 랭킹을 한정하는 시퀀스 랭킹을 증분한다. 큐 저장소(850)가 주어진 시퀀스로부터 메시지를 수신할 수 있을 때, 시퀀스 랭킹이 체크된다. 시퀀스 랭킹과 같은 메시지 랭킹을 갖는 메시지만이 큐 저장소(850)로 전달된다. 시퀀스 랭킹과 같은 메시지 랭킹을 가지는 메시지가 시퀀스 저장소(800)의 오버플로우 영역(806)에 없다면, 이 시퀀스의 처리는, 올바른 랭킹을 갖는 메시지가 인바운드 핸들러로부터 수신될 때까지 보류된다. 따라서, 시퀀스 랭킹은 처리되어야 하는 메시지를 표시하는 카운터와 같이 동작한다. 바람직하게는, 시퀀스 랭킹은 시퀀스 저장소(800)에 저장된다. As previously described, the present invention increments the sequence ranking that defines the ranking of the next message to be processed in this sequence. When queue storage 850 is able to receive messages from a given sequence, the sequence ranking is checked. Only messages with message ranks, such as sequence rankings, are delivered to the queue store 850. If a message with a message ranking, such as a sequence rank, is not in the overflow area 806 of the sequence store 800, then processing of this sequence is suspended until a message with the correct ranking is received from the inbound handler. Thus, the sequence ranking acts like a counter that displays a message to be processed. Preferably, the sequence ranking is stored in the sequence store 800.

도 8e는 시퀀스가 재-배열된 입력 메시지(801)의 시퀀싱 공정의 단계들을 도시한다: 8E shows the steps of the sequencing process of the re-ordered input message 801:

복수의 인바운드 핸들러(810, ..., 840)에 의해 수행된 전술된 공정에 더하여, 색인 순서에 의해 구동되는 재-배열을 위해 추가적인 단계들이 발생할 수 있다:In addition to the above-described processes performed by the plurality of inbound handlers 810, ..., 840, additional steps may occur for re-arrangement driven by index order:

Figure 112015011450742-pct00038
메시지의 색인에 의해 표시된 메시지의 랭킹은 시퀀스 순서를 유지하기 위해 처리할 그 다음 메시지의 랭킹과 비교된다. 시퀀스 순서를 유지하기 위해 처리할 그 다음 메시지의 이 랭킹은 바람직하게는 시퀀스 저장소에서 증분적으로 업데이트된 시퀀스 랭킹에 의해 표시된다.
Figure 112015011450742-pct00038
The ranking of the message indicated by the index of the message is compared with the ranking of the next message to be processed to maintain the sequence order. This ranking of the next message to be processed in order to maintain the sequence order is preferably indicated by the sequence rankings incrementally updated in the sequence repository.

Figure 112015011450742-pct00039
메시지의 랭킹이 시퀀스 랭킹과 일치(818)하면, 입력 메시지(815)는 큐 저장소(850)에 저장되어, 복수의 아웃바운드 핸들러에 이용가능하게 된다. 시퀀스 상태는 처리 상태로 설정된다. 처리할 시퀀스 랭킹은 증분되고 전술된 공정이 적용된다.
Figure 112015011450742-pct00039
If the ranking of the message matches 818 the sequence rankings, the input message 815 is stored in the queue store 850 and made available to a plurality of outbound handlers. The sequence state is set to the processing state. The sequence rankings to be processed are incremented and the above-described process is applied.

Figure 112015011450742-pct00040
색인에 의해 표시된 메시지의 랭킹이 시퀀스 랭킹(819)을 넘는다면, 메시지(813)는 오버플로우 저장소(806)에 저장된다. 시퀀스 상태(802)는 "펜딩" 상태로 설정된다. 이 메시지는 사실상 처리되지 않는다. 처리될 예상된 메시지 랭킹을 갖는 메시지가 인바운드 핸들러에 의해 수신될 때 시퀀싱이 재개된다. 이 경우에 인바운드 핸들러가 대응하는 메시지를 큐 저장소에 저장하고 시퀀스 상태를 "처리" 상태로 설정한다.
Figure 112015011450742-pct00040
If the ranking of the message indicated by the index exceeds the sequence ranking 819, the message 813 is stored in the overflow store 806. The sequence state 802 is set to the "pending" state. This message is not actually processed. Sequencing resumes when a message with the expected message rank to be processed is received by the inbound handler. In this case, the inbound handler stores the corresponding message in the queue repository and sets the sequence state to the "processing" state.

도 8a 내지 도 8d에 도시된 공정에 대해, 아웃바운드 핸들러가 결국 메시지를 처리할 때, 이 아웃바운드 핸들러는, 오버플로우 저장소(806)에서 시퀀스 랭킹과 일치하는 메시지 랭킹을 갖는 메시지를 찾는다(시퀀스 랭킹은 시퀀스 순서를 유지하기 위해 처리될 그 다음 메시지의 랭킹을 표시한다). 메시지가 발견되면, 이 메시지는 큐 저장소(850)에 저장되고; 메시지가 발견되지 않으면, 시퀀스 상태는 (이 시퀀스에 있는 메시지가 오버플로우 영역에 존재하나, 시퀀스 랭킹과 같지 않은 랭킹을 가지는 경우) "펜딩" 상태로 설정되거나 또는 (이 시퀀스의 메시지가 오버플로우 저장소 영역에 있지 않는 경우) "대기 " 상태로 설정된다.8A to 8D, when the outbound handler eventually processes a message, the outbound handler looks for a message in the overflow store 806 with a message ranking that matches the sequence rankings Ranking indicates the ranking of the next message to be processed to maintain the sequence order). If a message is found, this message is stored in queue storage 850; If a message is not found, the sequence state is set to the "pending" state (if the message in this sequence is in the overflow region but has a ranking that is not equal to the sequence ranking) Area) is set to the "standby" state.

시퀀스 록킹 및 타임아웃 관리Sequence Locking and Timeout Management

전술된 바와 같이, 주어진 시퀀스에서 수신된 메시지는 그 메시지 랭킹이 처리될 것과 일치하지 않는 한, 오버플로우 저장소(806)에 저장된다. 이것으로, 처리될 그 다음 예상되는 메시지가 인바운드 핸들러에 의해 수신되지 않는 한, 전체 시퀀스가 록킹되는 상황이 된다.As described above, messages received in a given sequence are stored in overflow storage 806, unless their message ranking is consistent with what is being processed. This results in a situation in which the entire sequence is locked, unless the next expected message to be processed is received by the inbound handler.

특정 실시예에서, 본 발명은 설령 이것이 공정에 의해 요구된다 하더라도 이 록킹 상황이 시간적으로 제한되는 것을 보장한다. 이 공정은 또한 지속시간(초, 분, 일(day), ...)으로 표현된 전체 시퀀스 타임아웃 값을 한정한다. In certain embodiments, the invention ensures that this locking situation is time-limited, even if this is required by the process. This process also defines the total sequence timeout value expressed in duration (seconds, minutes, days, ...).

다른 실시예에서, 시퀀스 컨텍스트(802)는 시퀀스 타임아웃으로 한정된 절대 시간값을 포함할 수 있다. 인바운드 핸들러 또는 아웃바운드 핸들러가 주어진 시퀀스 컨텍스트 레코드에 액세스(이는 시퀀스에 대한 동작 표시인 시퀀스에 속하는 메시지를 일정 방식으로 처리하고 있다는 것을 의미한다)할 때마다, 이 절대 시간 값은 현재 시스템 시간 및 시퀀스 타임아웃 지속시간의 합의 값으로 업데이트된다. In another embodiment, the sequence context 802 may comprise an absolute time value defined by a sequence timeout. Each time an inbound handler or an outbound handler accesses a given sequence context record (meaning that it is processing a message belonging to a sequence that is an indication of the operation of the sequence), this absolute time value is the current system time and sequence And is updated with the sum of the timeout duration.

더 다른 실시예에서, 타임아웃 시퀀스 수집기(collector)는 시퀀스 컨텍스트의 전체 리스트를 규칙적으로 웨이크업하고 스캐닝하도록 구현될 수 있다. 이 특정 구현에서, 그 시퀀스 지속시간에 대해 만료된 시퀀스가 검출된다. 이 공정은 시퀀스 타임아웃 값을 사용하여 선택을 달성한다. In yet another embodiment, a timeout sequence collector may be implemented to regularly wake up and scan the entire list of sequence contexts. In this particular implementation, an expired sequence is detected for that sequence duration. This process achieves the selection using the sequence timeout value.

구현에 따라, 본 발명에 따른 방법, 장치 및 시스템은, Depending on the implementation, the method, apparatus and system according to the invention,

Figure 112015011450742-pct00041
오버플로우 저장소(806) 및 시퀀스 컨텍스트(802)에서 임의의 대응하는 메시지를 소거하고;
Figure 112015011450742-pct00041
Clear any corresponding messages in the overflow store 806 and the sequence context 802;

Figure 112015011450742-pct00042
특정 시퀀스 만료 이벤트에서 적절한 처리와 로깅(logging)을 수행할 수 있는데: 이 만료 이벤트는,
Figure 112015011450742-pct00042
You can perform proper processing and logging at specific sequence expiration events:

o 순서대로 항목을 취하는 것과 같이 동기화 없이 전달하거나 또는 발견될 때까지 기다리면서 항목(들)을 무시하는 것, o Ignore item (s) while waiting to be delivered or synchronized, such as taking items in order,

o 알람을 생성하는 것일 수 있다.o An alarm may be generated.

데이터를 처리할 때 본 발명을 많이 응용할 수 있다. 그러나, 특히 다음에 적절하다:The present invention can be widely applied in processing data. However, it is particularly appropriate to:

Figure 112015011450742-pct00043
메시징 서버, 예를 들어, 아마데우스 메시징 서버(Amadeus Messaging Server: AMS), 여기서 애플리케이션이 지속하는 메시징을 처리하여, 회사 및 보다 구체적으로 소프트웨어 회사의 인프라스트럭처에서 허브로 작용하는 것. 부킹 또는 예약 산업에서, AMS는 예약 시스템 및 출발 제어 시스템 모두로 사용될 수 있다. 시퀀싱은 모든 텔레타이프 트래픽(Teletype traffic)에 시행된다. 텔레타이프 메시지는 통상 TTY로 언급된다. TTY 유형 B는 주어진 기능 컨텍스트에 대해 엄격한 처리 순서로 비동기식 채널을 통해 메시지를 교환하는 항공사 산업 표준이다. 예를 들어, 제1 메시지는 탑승 승객 리스트를 포함하고, 제2 리스트는 억제된 승객 리스트를 포함하고, 제3 리스트는 추가된 승객 리스트를 포함한다. 이들 승객 리스트는 엄격한 순서로 추종되어야 한다.
Figure 112015011450742-pct00043
A messaging server, for example Amadeus Messaging Server (AMS), where the application handles persistent messaging, acting as a hub in the company and more specifically in the software company's infrastructure. In the bookkeeping or booking industry, the AMS can be used both as a reservation system and as a departure control system. Sequencing is performed on all teletype traffic. The teletype message is usually referred to as TTY. TTY Type B is an airline industry standard that exchanges messages over asynchronous channels in strict processing order for a given functional context. For example, the first message includes the boarding passenger list, the second list includes the suppressed passenger list, and the third list includes the added passenger list. These passenger lists must be followed in strict sequence.

Figure 112015011450742-pct00044
다른 애플리케이션 필드는 예를 들어 보장된 비동기식 전달을 구현하기 위해 다수의 애플리케이션에 의해 사용된 미들웨어 소프트웨어 성분인 OTF 하이 레벨 프레임워크(OTF high-level framework: OHF)이다. OHF로 시퀀싱하는 주요 사용은 쿠폰 데이터베이스(coupon database: CDB)와 전자 티켓팅 애플리케이션 사이에 발생하는 동기화이다. 종종 많은 변경이 제한된 시간 기간 내에 단일 쿠폰에 이루어질 수 있다. 이들 변경은 동기화를 유지하기 위하여 올바른 순서로 전자 티켓 애플리케이션 또는 쿠폰 데이터베이스로 전달되어야 한다.
Figure 112015011450742-pct00044
The other application field is, for example, an OTF high-level framework (OHF), a middleware software component used by a number of applications to implement guaranteed asynchronous delivery. The main use for sequencing with OHF is the synchronization that occurs between the coupon database (CDB) and the electronic ticketing application. Often many changes can be made to a single coupon within a limited time period. These changes must be delivered to the electronic ticket application or coupon database in the correct order to maintain synchronization.

전술된 상세한 설명은 기본적으로 항공사 또는 항공 회사에 의해 제공된 여행 솔루션의 컨텍스트에서 설명되었으나, 이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 실시예는 항공사와만 사용하는 것으로 제한되지 않고, 다른 유형의 여행 양식 및 여행 제공자, 예를 들어, 비-제한적인 예로서, 선박, 열차, 승용차, 버스 여행 제공자 및 호텔과 같은 여행 제품에 사용되도록 적응될 수 있는 것을 이해할 수 있을 것이다. While the foregoing detailed description has been described basically in the context of a travel solution provided by an airline or airline company, those skilled in the art will appreciate that embodiments of the present invention are not limited to use with airline only, It will be understood that the invention can be adapted for use with travel types and travel providers of the type, for example non-limiting examples, such as vessels, trains, passenger cars, bus travel providers and hotels.

전술된 상세한 설명은 예시적으로 비-제한적인 예로서 본 발명의 예시적인 실시예를 구현하기 위해 여러 방법, 장치 및 소프트웨어를 충분히 이해할 수 있는 설명을 제공하였다. 그러나, 첨부 도면 및 첨부된 청구범위와 함께 판독할 때 전술된 상세한 설명을 고려하면 여러 변형과 변경은 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 단지 일부 예로서, 다른 유사한 또는 균등한 공정 또는 알고리즘 및 데이터 표현을 사용하는 것이 이 기술 분야에 통상의 지식을 가진 자에 의해 시도될 수 있다. 나아가, 상이한 요소, 기능 및 알고리즘(예를 들어, , 등)에 사용되는 여러 이름은 단지 예시를 위한 것일 뿐 발명을 한정하는 의미로 의도된 것이 전혀 아니며, 이들 여러 요소, 기능 및 알고리즘은 임의의 적절한 이름으로 언급될 수 있다. 본 발명의 개시 내용에 대해 모든 이러한 변형과 유사한 변형은 본 발명의 실시예의 범위 내에 있는 것이다. The foregoing detailed description provides illustrative and non-limiting examples of various methods, apparatus, and software for implementing exemplary embodiments of the present invention. However, it will be apparent to those skilled in the art that various modifications and variations will be apparent to those skilled in the art in view of the foregoing description, when read in conjunction with the accompanying drawings and the appended claims. It is contemplated by one of ordinary skill in the art to use other similar or equivalent processes or algorithms and data representations, merely as examples. Furthermore, the various names used in the different elements, functions, and algorithms (e.g.,, etc.) are for illustration purposes only and are not intended to limit the invention in any way, It can be mentioned with an appropriate name. Modifications similar to all such modifications to the teachings of the present invention are within the scope of embodiments of the invention.

나아가, 본 발명의 예시적인 실시예의 특징 중 일부가 대응하는 다른 특징을 사용함이 없이 사용될 수 있다. 그리하여, 전술된 상세한 설명은 본 발명의 원리, 개시 내용 및 실시예를 단지 예시하는 것으로 이해되어야 하고 본 발명을 제한하는 것으로 이해해서는 안된다. Further, some of the features of the exemplary embodiments of the present invention may be used without using corresponding other features. Thus, the foregoing detailed description is to be understood as merely illustrative of the principles, teachings and embodiments of the present invention, and is not to be construed as limiting the invention.

본 명세서에 설명된 여러 기술의 실시예는 디지털 전자 회로, 컴퓨터 하드웨어로 또는 핸드헬드 전자 디바이스 하드웨어로, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 실시예는 프로그램 또는 소프트웨어 제품, 즉 정보 운반매체, 예를 들어, 기계-판독가능한 저장소 디바이스에 또는 데이터 처리 장치, 예를 들어, 프로그래밍가능한 프로세서, 컴퓨터, 태블릿 또는 다수의 컴퓨터에 의해 실행하거나 이의 동작을 제어하기 위해 전파되는 신호에 유형적으로 매립된 컴퓨터 프로그램 제품으로 구현될 수 있다. 전술된 컴퓨터 프로그램(들)과 같은 프로그램은 컴파일 언어 또는 인터프리트 언어를 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 컴퓨팅 환경에서 사용하기에 적절한 독립형 프로그램 또는 모듈, 성분, 서브 루틴 또는 다른 유닛을 포함하는 임의의 형태로 전개될 수 있다. 프로그램은 하나의 컴퓨터 또는 태블릿 상에서 또는 하나의 사이트에서 또는 다수의 사이트에 걸쳐 분배되고 통신 네트워크 또는 무선 네트워크에 의해 상호 연결된 다수의 컴퓨터 또는 태블릿에서 실행되도록 전개될 수 있다. Embodiments of the various techniques described herein may be implemented in digital electronic circuitry, in computer hardware, or in handheld electronic device hardware, in firmware, software, or a combination thereof. An embodiment may be implemented in a program or software product, i. E. An information carrier, e.g., a machine-readable storage device, or by a data processing device, e.g., a programmable processor, computer, May be embodied in a computer program product tangibly embodied in a signal to be propagated to control the computer system. A program, such as the computer program (s) described above, may be written in any form of programming language, including a compiled or interpreted language, and may be a stand-alone program or module, component, subroutine, And may be deployed in any form including units. The programs may be deployed to run on multiple computers or tablets that are distributed on a single computer or tablet, or on a single site or across multiple sites and interconnected by a communications network or wireless network.

컴퓨터 프로그램을 실행하기에 적절한 프로세서는, 예로서, 일반 목적 및 특수 목적 마이크로프로세서, 및 임의의 종류의 디지털 컴퓨터, 태블릿 또는 전자 디바이스의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이들 둘 모두로부터 명령 및 데이터를 수신할 수 있다. 컴퓨터의 요소는 명령을 실행하는 적어도 하나의 프로세서 및 명령 및 데이터를 저장하는 하나 이상의 메모리 디바이스를 포함할 수 있다. 일반적으로, 컴퓨터 또는 전자 디바이스는 데이터를 저장하는 하나 이상의 대용량 저장소 디바이스, 예를 들어, 자기 디스크, 광자기 디스크 또는 광 디스크를 포함하거나 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 이들 둘 모두를 수행하도록 동작가능하게 연결될 수 있다. Processors suitable for executing computer programs include, by way of example, general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer, tablet, or electronic device. In general, a processor may receive instructions and data from a read-only memory or a random access memory, or both. An element of a computer may include at least one processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer or electronic device includes one or more mass storage devices that store data, for example, a magnetic disk, a magneto-optical disk, or an optical disk, that contains or receives data from, Or to perform operations.

본 실시예는, 백엔드 성분(back-end component)을, 예를 들어, 데이터 서버로 포함하거나, 또는 미들웨어 성분, 예를 들어, 애플리케이션 서버를 포함하거나, 또는 프론트엔드 성분(front-end component), 예를 들어, 유저가 구현과 상호작용할 수 있는 그래픽 유저 인터페이스 또는 웹 브라우저를 구비하는 클라이언트 컴퓨터, 또는 이러한 백엔드, 미들웨어, 또는 프론트엔드 성분의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 성분들은 임의의 형태 또는 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크, 무선 네트워크 또는 원격통신 네트워크에 의해 상호 연결될 수 있다. 통신 또는 원격통신 네트워크의 예로는 근거리 네트워크(local area network: LAN) 및 광역 네트워크(wide area network: WAN), 예를 들어, 인터넷 또는 무선 네트워크, 예를 들어, Wifi 네트워크를 포함한다. This embodiment may include a back-end component, e.g., as a data server, or may include a middleware component, e.g., an application server, or a front-end component, For example, a client computer with a graphical user interface or web browser with which the user can interact with the implementation, or a computing system including any combination of such backend, middleware, or front end components. The components may be interconnected by any form or medium of digital data communication, for example, a communications network, a wireless network, or a telecommunications network. Examples of communication or telecommunication networks include a local area network (LAN) and a wide area network (WAN), such as the Internet or a wireless network, for example a Wifi network.

설명된 구현의 특정 특징들이 본 명세서에서 예시되었으나, 이제 많은 변형, 대체, 변경, 균등 치환이 이 기술 분야에 통상의 지식을 가진 자에게 일어날 수 있다. 그리하여 첨부된 청구범위는 본 발명의 실시예의 진정한 사상과 범위 내에 있는 모든 변형과 변경을 포함하는 것으로 의도되는 것으로 이해된다. Although specific features of the described implementations have been illustrated herein, many alterations, substitutions, changes, and equivalent substitutions can now occur to those of ordinary skill in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit and scope of the embodiments of the invention.

Claims (28)

복수의 인바운드 핸들러(inbound handler) 및 복수의 아웃바운드 핸들러(outbound handler)를 갖는 분산 시스템에서 비동기 메시지를 시퀀싱(sequencing)하는 방법에 있어서,
상기 인바운드 핸들러 중의 하나의 인바운드 핸들러의 프로세서에 의해, 시퀀스 상관 값 - 상기 시퀀스 상관 값은 입력 메시지(incoming message)와 연관된 시퀀스를 식별함 - 을 갖는 입력 메시지를 수신하는 단계;
상기 프로세서에 의해, 시퀀스 저장소에서 상기 시퀀스의 시퀀스 상태를 체크하는 단계;
상기 프로세서에 의해, 상기 시퀀스에서 상기 입력 메시지의 순서를 표시하는 메시지 랭킹(rank)을 결정하는 단계:
상기 프로세서에 의해, 상기 메시지 랭킹을, 상기 시퀀스에 대해 처리될 다음 메시지의 랭킹을 정의하는 시퀀스 랭킹과 비교하는 단계;
상기 메시지 랭킹이 상기 시퀀스 랭킹과 같은 경우, 상기 프로세서에 의해, 상기 메시지는 상기 시퀀스에서 상기 메시지의 순서를 유지하기 위해 처리될 다음 메시지인 것으로 결정하는 단계;
상기 메시지 랭킹이 상기 시퀀스 랭킹과 같지 않은 경우, 상기 프로세서에 의해, 상기 메시지는 상기 시퀀스에서 상기 메시지의 순서를 유지하기 위해 처리될 다음 메시지가 아닌 것으로 결정하는 단계;
상기 시퀀스 상태가, 상기 아웃바운드 핸들러가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있지 않다고 표시하는 경우, 및 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지인 것으로 결정되는 경우, 상기 프로세서에 의해, 상기 입력 메시지를 큐 저장소에 전달하고, 그 후에 처리를 위해 이용가능하게 되는 상기 아웃바운드 핸들러 중의 하나에 상기 입력 메시지를 전달하는 단계; 및
상기 시퀀스 상태가, 상기 복수의 아웃바운드 핸들러에서 아웃바운드 핸들러 중의 적어도 하나가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있다고 표시하는 경우, 또는 상기 큐 저장소가 처리되기를 기다리는 상기 시퀀스의 메시지 중의 하나를 이미 포함하는 경우, 또는 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지가 아닌 것으로 결정되는 경우, 상기 프로세서에 의해, 추가 처리를 위해 유지하도록 상기 입력 메시지를 오버플로우 저장소의 메모리에 저장하는 단계
를 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
1. A method for sequencing asynchronous messages in a distributed system having a plurality of inbound handlers and a plurality of outbound handlers,
Receiving, by a processor of the inbound handler of one of the inbound handlers, an input message having a sequence correlation value, the sequence correlation value identifying a sequence associated with an incoming message;
Checking, by the processor, a sequence state of the sequence in a sequence repository;
Determining, by the processor, a message rank indicating a sequence of the input message in the sequence:
Comparing, by the processor, the message ranking with a sequence ranking defining a ranking of a next message to be processed for the sequence;
Determining, by the processor, that the message is the next message to be processed to maintain the order of the message in the sequence if the message ranking is equal to the sequence ranking;
Determining, by the processor, that the message is not the next message to be processed to maintain the order of the message in the sequence if the message ranking is not equal to the sequence rankings;
If the sequence state indicates that the outbound handler is not currently processing one of the messages of the sequence and if it is determined that the input message is the next message to be processed for the sequence, Delivering the input message to a queue repository and then forwarding the input message to one of the outbound handlers available for processing; And
If the sequence state indicates that at least one of the outbound handlers in the plurality of outbound handlers is currently processing one of the messages of the sequence, or if one of the messages of the sequence waiting for the queue repository to be processed has already been received Storing the input message in the memory of the overflow store to keep it for further processing by the processor if it is determined that the input message is not the next message to be processed for the sequence
Wherein the asynchronous message is a sequence of asynchronous messages.
제1항에 있어서,
상기 시퀀스의 메시지 중의 하나의 처리를 완료하면, 상기 프로세서에 의해, 상기 시퀀스의 시퀀스 랭킹을 증분시키는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Further comprising, upon completion of processing one of the messages of the sequence, incrementing a sequence rank of the sequence by the processor.
제2항에 있어서,
상기 프로세서에 의해, 상기 오버플로우 저장소 내의 주어진 메시지가 상기 증분된 시퀀스 랭킹과 같은 메시지 랭킹을 포함한다고 결정하는 단계; 및
상기 프로세서에 의해, 상기 주어진 메시지를 상기 큐 저장소에 전달하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
3. The method of claim 2,
Determining, by the processor, that a given message in the overflow storage comprises a message ranking, such as the incremented sequence ranking; And
And forwarding, by the processor, the given message to the queue repository.
제1항에 있어서,
상기 프로세서에 의해, 상기 입력 메시지에 할당된(assigned) 메시지 랭킹 - 상기 할당된 메시지 랭킹은 상기 시퀀스에서 상기 입력 메시지의 랭킹을 표시함 - 을 할당하는 단계; 및
상기 프로세서에 의해, 상기 시퀀스 저장소에 상기 할당된 메시지 랭킹을 저장하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Assigning, by the processor, a message ranking assigned to the input message, the assigned message ranking indicating a ranking of the input message in the sequence; And
Further comprising, by the processor, storing the assigned message rankings in the sequence repository.
제4항에 있어서,
상기 할당된 메시지 랭킹은, 상기 시퀀스에 대해 상기 인바운드 핸들러 중의 임의의 하나에서 수신된 마지막 메시지의 메시지 랭킹에 1 증가한 랭킹에 대응하는 것인, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
5. The method of claim 4,
Wherein the assigned message ranking corresponds to a ranking of one increment in message rank of the last message received at any one of the inbound handlers for the sequence.
제1항에 있어서,
상기 큐 저장소가 상기 입력 메시지의 시퀀스에 대해 어떠한 메시지도 포함하지 않는 경우 및 상기 입력 메시지의 메시지 랭킹이 상기 시퀀스 저장소에서 표시된 시퀀스 랭킹보다 더 큰 경우, 상기 프로세서에 의해, 상기 시퀀스 랭킹이 상기 입력 메시지의 메시지 랭킹과 같아질 때까지, 상기 오버플로우 저장소에 상기 입력 메시지를 저장하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
If the queue store does not include any message for the sequence of input messages and if the message ranking of the input message is greater than the sequence rankings displayed in the sequence store, Further comprising storing the input message in the overflow depot until it is equal to the message rank of the message queue of the asynchronous message.
제1항에 있어서,
상기 프로세서에 의해, 상기 입력 메시지와 함께 색인(index)을 수신하는 단계를 더 포함하고,
상기 색인은 상기 시퀀스 내에서 상기 입력 메시지의 메시지 랭킹을 표시하는 것인, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Further comprising: receiving, by the processor, an index with the input message,
Wherein the index indicates a message ranking of the input message within the sequence.
제1항에 있어서,
상기 아웃바운드 핸들러 중의 하나에 의해 상기 메시지 중의 하나를 처리하는 단계; 및
상기 큐 저장소로부터 상기 메시지를 제거하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Processing one of the messages by one of the outbound handlers; And
And removing the message from the queue repository. ≪ Desc / Clms Page number 19 >
제1항에 있어서,
상기 아웃바운드 핸들러는 비동기식으로 동작함으로써, 상기 아웃바운드 핸들러 중의 하나가 상기 메시지 중의 하나를 송신할 수 있고, 상기 메시지를 송신하고 나서 상기 메시지의 수신자로부터 응답의 수신확인을 수신하기 전에, 다른 처리에 이용가능하게 될 수 있는 것인, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Wherein the outbound handler operates asynchronously so that one of the outbound handlers can send one of the messages and send the message to another process before sending the message and receiving acknowledgment of the response from the recipient of the message Wherein the asynchronous message can be made available.
제1항에 있어서,
상기 프로세서에 의해, 상기 아웃바운드 핸들러 중의 하나와 연관된 전달 프로세스(delivery process) - 상기 전달 프로세스는 상기 메시지 중의 하나를 수신자에게 송신하도록 구성됨 - 를 제공하는 단계;
상기 프로세서에 의해, 상기 아웃바운드 핸들러와 연관된 수신확인 프로세스(acknowledgment process) - 상기 수신확인 프로세스는 상기 수신자로부터 수신확인을 수신하도록 구성됨 - 를 제공하는 단계; 및
상기 전달 프로세스와 상기 수신확인 프로세스를 독립적으로 동작하도록 구성하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Providing, by the processor, a delivery process associated with one of the outbound handlers, the delivery process being configured to send one of the messages to a recipient;
Providing, by the processor, an acknowledgment process associated with the outbound handler, the acknowledgment process being configured to receive an acknowledgment from the recipient; And
Further comprising configuring the delivery process and the acknowledgment process to operate independently of each other.
제1항에 있어서,
상기 입력 메시지를 수신하는 것에 응답하여, 상기 프로세서에 의해, 상기 입력 메시지가 상기 시퀀스 저장소 및 상기 큐 저장소 중의 하나에 저장될 때까지, 상기 인바운드 핸들러가 상기 시퀀스와 연관된 어떠한 메시지도 수신하지 못하게 하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
In response to receiving the input message, causing the inbound handler to not receive any message associated with the sequence until the input message is stored in one of the sequence repository and the queue repository Further comprising the steps of: < RTI ID = 0.0 > a < / RTI >
제11항에 있어서,
상기 프로세서에 의해, 상기 시퀀스 저장소에 뮤텍스(mutex) - 상기 뮤텍스는 상기 시퀀스와 연관됨 - 를 저장하는 단계; 및
상기 프로세서에 의해, 상기 인바운드 핸들러가 상기 시퀀스와 연관된 어떠한 메시지도 수신하게 못하게 하도록 상기 뮤텍스를 록킹(locking)하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
12. The method of claim 11,
Storing, by the processor, a mutex in the sequence store, the mutex being associated with the sequence; And
Further comprising locking the mutex by the processor to prevent the inbound handler from receiving any message associated with the sequence.
제1항에 있어서,
상기 프로세서에 의해, 상기 큐 저장소 내의 메시지 중의 하나가 처리에 이용가능하다고 결정하는 단계;
상기 프로세서에 의해, 상기 큐 저장소로부터 상기 메시지를 검색하는 단계; 및
상기 프로세서에 의해, 상기 아웃바운드 핸들러 중의 하나로 상기 메시지를 처리하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Determining, by the processor, that one of the messages in the queue repository is available for processing;
Retrieving, by the processor, the message from the queue repository; And
Further comprising, by the processor, processing the message with one of the outbound handlers.
제1항에 있어서,
상기 프로세서에 의해, 상기 시퀀스 저장소에 뮤텍스 - 상기 뮤텍스는 상기 시퀀스와 연관됨 - 를 저장하는 단계; 및
상기 프로세서에 의해, 상기 입력 메시지가 상기 아웃바운드 핸들러 중의 하나에 의해 처리되는 동안 다른 아웃바운드 핸들러가 상기 시퀀스와 연관된 어떠한 메시지도 처리하지 못하게 하도록 상기 뮤텍스를 록킹하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Storing, by the processor, a mutex in the sequence store, the mutex being associated with the sequence; And
Further comprising locking the mutex by the processor such that another outbound handler does not process any messages associated with the sequence while the input message is being processed by one of the outbound handlers. How to sequence an asynchronous message.
제14항에 있어서,
상기 프로세서에 의해, 상기 입력 메시지의 시퀀스에 대해 상기 뮤텍스가 록킹되어 있는지 여부를 결정하도록 상기 큐 저장소를 체크하는 단계; 및
상기 뮤텍스가 록킹되지 않은 경우 상기 큐 저장소로부터 상기 입력 메시지를 검색하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
15. The method of claim 14,
Checking, by the processor, the queue repository to determine whether the mutex is locked for a sequence of the input message; And
Further comprising retrieving the input message from the queue repository if the mutex is not locked.
제1항에 있어서,
상기 시퀀스 저장소 또는 상기 오버플로우 저장소 중의 하나에 상기 입력 메시지의 저장시, 상기 프로세서에 의해, 상기 인바운드 핸들러 중의 하나로부터 수신확인 메시지를 송신하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Further comprising the step of sending an acknowledgment message from one of said inbound handlers by said processor upon storing said input message in one of said sequence repository or said overflow repository. .
제1항에 있어서,
상기 시퀀스 랭킹보다 더 큰 메시지 랭킹을 갖는 상기 메시지 중의 하나는, 상기 메시지의 메시지 랭킹이 상기 시퀀스 랭킹과 같지 않은 동안 상기 오버플로우 저장소에 상기 메시지를 록킹하도록, 상기 오버플로우 저장소에 저장되는 것인, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Wherein one of the messages having a message ranking greater than the sequence ranking is stored in the overflow store to lock the message in the overflow store while the message ranking of the message is not equal to the sequence ranking. A method for sequencing asynchronous messages in a distributed system.
제1항에 있어서,
상기 프로세서에 의해, 상기 오버플로우 저장소에 상기 메시지 중의 하나 - 상기 메시지의 메시지 랭킹은 상기 시퀀스 랭킹보다 큼 - 를 저장하는 단계;
상기 프로세서에 의해, 상기 메시지 및 상기 시퀀스 중의 하나에 타임아웃 값을 할당하는 단계; 및
상기 타임아웃 값에 도달할 때, 상기 프로세서에 의해, 상기 오버플로우 저장소로부터 상기 메시지를 폐기하는 단계를 더 포함하는, 분산 시스템에서 비동기 메시지를 시퀀싱하는 방법.
The method according to claim 1,
Storing, by the processor, one of the messages in the overflow store, the message ranking of the message being greater than the sequence ranking;
Assigning, by the processor, a timeout value to one of the message and the sequence; And
Further comprising, when the timeout value is reached, discarding the message from the overflow store by the processor.
소프트웨어 프로그램 명령어들을 포함하는 비일시적인 컴퓨터 판독가능한 매체에 있어서, 적어도 하나의 데이터 프로세서에 의해 상기 소프트웨어 프로그램 명령어들을 실행하여 제1항에 따른 방법의 실행을 포함하는 동작을 수행하게 하는 것인 비일시적인 컴퓨터 판독가능한 매체. 1. A non-transitory computer readable medium comprising software program instructions, comprising instructions for executing the software program instructions by at least one data processor to perform operations comprising the execution of the method of claim 1, Readable medium. 비동기 메시지를 시퀀싱하는 분산 처리 시스템에 있어서,
적어도 하나의 데이터 프로세서를 포함하는 복수의 인바운드 핸들러 - 상기 복수의 인바운드 핸들러 각각은 다양한 시퀀스에 관한 복수의 입력 메시지를 독립적으로 수신하도록 구성됨 - ;
적어도 하나의 데이터 프로세서를 포함하는 복수의 아웃바운드 핸들러 - 상기 복수의 아웃바운드 핸들러 각각은 복수의 입력 메시지를 독립적으로 처리하고 전달하도록 구성됨 - ; 및
적어도 메모리를 포함하는 저장소 층을 포함하고, 상기 저장소 층은,
상기 복수의 아웃바운드 핸들러로 전송될 준비가 된 입력 메시지를 저장하는 큐 저장소와,
시퀀스 저장소를 포함하고,
상기 시퀀스 저장소는,
상기 입력 메시지의 각 시퀀스에 대한 상태를 유지하고 업데이트하는 시퀀스 상태 컨텍스트와,
상기 인바운드 핸들러로부터 메시지를 수신하고 상기 메시지를 상기 큐 저장소로 순차적으로 전달하도록 구성된 오버플로우 저장소를 포함하고,
상기 시스템은, 입력 메시지가 그의 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 다음 메시지인지 여부를 결정하고, 적어도 하나의 데이터 프로세서로 수행되는 다음 단계들, 즉:
상기 시퀀스 상태가, 상기 아웃바운드 핸들러가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있지 않다고 표시하는 경우, 및 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지인 것으로 결정되는 경우, 상기 프로세서에 의해, 상기 입력 메시지를 상기 큐 저장소에 전달하고, 그 후에 처리를 위해 이용가능하게 되는 상기 아웃바운드 핸들러 중의 하나에 상기 입력 메시지를 전달하는 단계; 및
상기 시퀀스 상태가, 상기 복수의 아웃바운드 핸들러에서 아웃바운드 핸들러 중의 적어도 하나가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있다고 표시하는 경우, 또는 상기 큐 저장소가 처리되기를 기다리는 상기 시퀀스의 메시지 중의 하나를 이미 포함하는 경우, 또는 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지가 아닌 것으로 결정되는 경우, 상기 프로세서에 의해, 추가 처리를 위해 유지하도록 상기 입력 메시지를 오버플로우 저장소의 메모리에 저장하는 단계
를 수행하도록 구성되는 것인, 비동기 메시지를 시퀀싱하는 분산 처리 시스템.
A distributed processing system for sequencing asynchronous messages,
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 input messages relating to various sequences;
A plurality of outbound handlers including at least one data processor, each of the plurality of outbound handlers being configured to independently process and forward a plurality of input messages; And
The storage layer comprising at least a memory,
A queue storage for storing an input message ready for transmission to the plurality of outbound handlers,
Contains a sequence repository,
Wherein the sequence repository comprises:
A sequence state context for maintaining and updating a state for each sequence of the input message;
An overflow store configured to receive a message from the inbound handler and to sequentially deliver the message to the queue store,
The system determines if the incoming message is the next message to be processed to maintain the order of the message in its sequence and performs the following steps performed with the at least one data processor:
If the sequence state indicates that the outbound handler is not currently processing one of the messages of the sequence and if it is determined that the input message is the next message to be processed for the sequence, Delivering the input message to the queue repository and then forwarding the input message to one of the outbound handlers available for processing; And
If the sequence state indicates that at least one of the outbound handlers in the plurality of outbound handlers is currently processing one of the messages of the sequence, or if one of the messages of the sequence waiting for the queue repository to be processed has already been received Storing the input message in the memory of the overflow store to keep it for further processing by the processor if it is determined that the input message is not the next message to be processed for the sequence
And to perform the asynchronous message sequencing.
제20항에 있어서,
상기 저장소 층의 큐 저장소 및 시퀀스 저장소는, 인-메모리 데이터 또는 파일 기반 저장소 중의 하나에 구현되는 것인, 비동기 메시지를 시퀀싱하는 분산 처리 시스템.
21. The method of claim 20,
Wherein the queue storage and sequence storage of the storage layer are implemented in one of an in-memory data or a file-based storage.
복수의 인바운드 핸들러 및 복수의 아웃바운드 핸들러를 갖는 적어도 하나의 서버 애플리케이션과 적어도 하나의 클라이언트 애플리케이션 사이에서 복수의 메시지를 처리하기 위해 컴퓨터로 구현되는 여행 모니터링 방법에 있어서,
상기 인바운드 핸들러 중의 하나의 인바운드 핸들러의 프로세서에 의해, 시퀀스 상관 값 - 상기 시퀀스 상관 값은 입력 메시지와 연관된 시퀀스를 식별함 - 을 갖는 입력 메시지를 수신하는 단계;
상기 프로세서에 의해, 시퀀스 저장소에서 상기 시퀀스의 시퀀스 상태를 체크하는 단계;
상기 프로세서에 의해, 상기 입력 메시지가 상기 시퀀스에서 메시지의 순서를 유지하기 위해 처리될 다음 메시지인지 여부를 결정하는 단계;
상기 시퀀스 상태가, 상기 아웃바운드 핸들러가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있지 않다고 표시하는 경우, 및 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지인 것으로 결정되는 경우, 상기 프로세서에 의해, 상기 입력 메시지를 큐 저장소에 전달하고, 그 후에 처리를 위해 이용가능하게 되는 상기 아웃바운드 핸들러 중의 하나에 상기 입력 메시지를 전달하는 단계; 및
상기 시퀀스 상태가, 상기 복수의 아웃바운드 핸들러에서 아웃바운드 핸들러 중의 적어도 하나가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있다고 표시하는 경우, 또는 상기 큐 저장소가 처리되기를 기다리는 상기 시퀀스의 메시지 중의 하나를 이미 포함하는 경우, 또는 상기 입력 메시지가 상기 시퀀스에 대해 처리될 다음 메시지가 아닌 것으로 결정되는 경우, 상기 프로세서에 의해, 추가 처리를 위해 유지하도록 상기 입력 메시지를 오버플로우 저장소의 메모리에 저장하는 단계를 포함하고,
상기 복수의 메시지는 수송 서비스(transportation service)의 적어도 하나의 승객과 관련된 데이터를 포함하고, 상기 시퀀스 상관 값은 상기 수송 서비스에 관련된 데이터를 포함하는 것인, 컴퓨터로 구현되는 여행 모니터링 방법.
1. A computer-implemented travel monitoring method for processing a plurality of messages between at least one server application having a plurality of inbound handlers and a plurality of outbound handlers and at least one client application,
Receiving, by a processor of the inbound handler of one of the inbound handlers, an input message having a sequence correlation value, the sequence correlation value identifying a sequence associated with an input message;
Checking, by the processor, a sequence state of the sequence in a sequence repository;
Determining, by the processor, whether the input message is the next message to be processed to maintain the order of the message in the sequence;
If the sequence state indicates that the outbound handler is not currently processing one of the messages of the sequence and if it is determined that the input message is the next message to be processed for the sequence, Delivering the input message to a queue repository and then forwarding the input message to one of the outbound handlers available for processing; And
If the sequence state indicates that at least one of the outbound handlers in the plurality of outbound handlers is currently processing one of the messages of the sequence, or if one of the messages of the sequence waiting for the queue repository to be processed has already been received Storing the input message in the memory of the overflow store to keep it for further processing by the processor if it is determined that the input message is not the next message to be processed for the sequence and,
Wherein the plurality of messages comprises data associated with at least one passenger of a transportation service and wherein the sequence correlation value comprises data related to the transportation service.
제22항에 있어서,
상기 복수의 메시지에서 특정 메시지를 처리하는 것에 응답하여, 상기 프로세서에 의해, 상기 특정 메시지를 상기 아웃바운드 핸들러 중의 하나로부터, 수송 서비스의 여행 예약 시스템, 수송 서비스의 여행 부킹 시스템, 수송 서비스의 재고 시스템, 수송 서비스의 전자 티켓 시스템, 수송 서비스의 출발 제어 시스템, 또는 이들의 조합에 전달하는 단계를 더 포함하는, 컴퓨터로 구현되는 여행 모니터링 방법.
23. The method of claim 22,
In response to processing a particular message in the plurality of messages, cause the processor to send the particular message from one of the outbound handlers to a travel reservation system of a transportation service, a travel booking system of a transportation service, , An electronic ticketing system of the transportation service, a departure control system of the transportation service, or a combination thereof.
제22항에 있어서,
상기 수송 서비스에 관련된 데이터는, 항공편 번호, 날짜, 클래스(class) 예약, 또는 이들의 조합을 포함하는 것인, 컴퓨터로 구현되는 여행 모니터링 방법.
23. The method of claim 22,
Wherein the data related to the transportation service comprises a flight number, a date, a class reservation, or a combination thereof.
제22항에 있어서,
상기 복수의 메시지는, 적어도 하나의 탑승 승객, 적어도 하나의 취소된 승객, 적어도 하나의 추가된 승객, 또는 이들의 임의의 조합과 관련된 데이터를 포함하는 것인, 컴퓨터로 구현되는 여행 모니터링 방법.
23. The method of claim 22,
Wherein the plurality of messages comprises data relating to at least one passenger, at least one canceled passenger, at least one additional passenger, or any combination thereof.
제22항에 있어서,
상기 프로세서에 의해, 상기 복수의 메시지에서 특정 메시지에 대한 시퀀스 타임아웃 값을 제공하는 단계;
상기 프로세서에 의해, 상기 특정 메시지에 대한 연관된 시퀀스 타임아웃 값에 도달할 때, 상기 오버플로우 저장소로부터 상기 특정 메시지를 제거하는 단계; 및
상기 프로세서에 의해, 항공편의 출발 시간, 항공편 오퍼의 만료, 프로모션 만료, 또는 이들의 임의의 조합으로부터 상기 시퀀스 타임아웃 값에서 경과된 시간을 시작하는 단계를 더 포함하는, 컴퓨터로 구현되는 여행 모니터링 방법.
23. The method of claim 22,
Providing, by the processor, a sequence timeout value for a particular message in the plurality of messages;
Removing, by the processor, the particular message from the overflow store when an associated sequence timeout value for the particular message is reached; And
Wherein the processor is further configured to initiate a time elapsed from the sequence timeout value from a departure time of the flight, an expiration of the flight offer, a promotion expiration, or any combination thereof, .
소프트웨어 프로그램 명령어들을 포함하는 컴퓨터 판독가능한 매체에 있어서, 적어도 하나의 데이터 프로세서에 의해 상기 소프트웨어 프로그램 명령어들을 실행하여 제22항에 따른 방법의 실행을 포함하는 동작을 수행하게 하는 것인 컴퓨터 판독가능한 매체. 29. A computer readable medium comprising software program instructions for causing the at least one data processor to execute the software program instructions to perform operations comprising the execution of the method of claim 22. 메시지를 처리하도록 적어도 하나의 프로세서를 포함하는 복수의 인바운드 핸들러 및 복수의 아웃바운드 핸들러를 갖는 분산 시스템에서 분산된 비동기 메시지를 시퀀싱하는 컴퓨터 구현 방법에 있어서,
상기 인바운드 핸들러 중의 하나에서, 프로세서에 의해, 입력 메시지를 포함하는 시퀀스를 식별하는 시퀀스 상관 값과 함께 입력 메시지를 수신하고, 상기 시퀀스에서 상기 입력 메시지의 순서를 표시하는 메시지 랭킹을 결정하는 단계;
상기 프로세서에 의해, 시퀀스 저장소에서 상기 시퀀스의 시퀀스 상태를 체크하는 단계;
상기 시퀀스 상태가, 상기 아웃바운드 핸들러가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있지 않다고 표시하는 경우, 및 수신된 상기 입력 메시지가 상기 시퀀스 내에 메시지 랭킹을 표시하는 어떠한 색인도 구비하지 않고 상기 시퀀스 저장소가 상기 시퀀스에 대해 처리될 어떠한 메시지도 아직 포함하지 않는 경우, 또는 수신된 상기 입력 메시지가 상기 시퀀스 내에 메시지 랭킹 - 상기 메시지 랭킹은 상기 시퀀스 저장소에 표시된 시퀀스 랭킹과 같고 상기 시퀀스에 대해 처리될 다음 메시지의 랭킹을 정의함 - 을 표시하는 색인을 구비하는 경우, 상기 프로세서에 의해, 상기 프로세서에 의해, 상기 입력 메시지를 큐 저장소에 전달하고, 그 후에 처리를 위해 이용가능하게 되는 상기 아웃바운드 핸들러 중의 하나에 상기 입력 메시지를 전달하는 단계; 및
상기 시퀀스 상태가, 상기 복수의 아웃바운드 핸들러에서 아웃바운드 핸들러 중의 적어도 하나가 상기 시퀀스의 메시지 중의 하나를 현재 처리하고 있다고 표시하는 경우, 또는 상기 큐 저장소가 상기 시퀀스에 대해 처리될 상기 메시지 중의 하나를 이미 포함하는 경우, 또는 수신된 상기 입력 메시지가 상기 시퀀스 내에 메시지 랭킹 - 상기 메시지 랭킹은 상기 시퀀스 저장소에 표시된 시퀀스 랭킹보다 크고 상기 시퀀스에 대해 처리될 다음 메시지의 랭킹을 정의함 - 을 표시하는 색인을 구비하는 경우, 상기 프로세서에 의해, 추가 처리를 위해 유지하도록 상기 입력 메시지를 오버플로우 저장소에 저장하는 단계를 포함하는, 분산된 비동기 메시지를 시퀀싱하는 컴퓨터 구현 방법.
A computer implemented method for sequencing asynchronous messages distributed in a distributed system having a plurality of inbound handlers and a plurality of outbound handlers including at least one processor for processing messages,
Receiving, at one of the inbound handlers, an input message with a sequence correlation value identifying a sequence comprising an input message by a processor, and determining a message ranking indicating the order of the input message in the sequence;
Checking, by the processor, a sequence state of the sequence in a sequence repository;
If the outbound handler indicates that the outbound handler is not currently processing one of the messages of the sequence, and if the received message does not have any index indicating the message ranking in the sequence, If the received message does not include any message to be processed for the sequence, or if the received input message has a message ranking in the sequence, the message ranking is the same as the sequence rankings indicated in the sequence store and the next message to be processed for the sequence - defining, by the processor, the input message to the queue repository, and then, by the processor, send one of the outbound handlers to be available for processing Lt; RTI ID = 0.0 > A step; And
Wherein the sequence state indicates that at least one of the outbound handlers in the plurality of outbound handlers is currently processing one of the messages of the sequence, or if the queue repository indicates one of the messages to be processed for the sequence The message ranking is greater than the sequence rankings indicated in the sequence repository and defines the ranking of the next message to be processed for the sequence, And if so, storing, by the processor, the input message in an overflow store to hold for further processing.
KR1020157002898A 2012-08-02 2013-08-01 Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment Active KR101612682B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP12368017.5 2012-08-02
US13/565,284 2012-08-02
US13/565,284 US8903767B2 (en) 2012-08-02 2012-08-02 Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
EP12368017.5A EP2693337B1 (en) 2012-08-02 2012-08-02 Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
PCT/EP2013/002302 WO2014019701A1 (en) 2012-08-02 2013-08-01 Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment

Publications (2)

Publication Number Publication Date
KR20150037980A KR20150037980A (en) 2015-04-08
KR101612682B1 true KR101612682B1 (en) 2016-04-14

Family

ID=48953356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157002898A Active KR101612682B1 (en) 2012-08-02 2013-08-01 Method, system and computer program product for sequencing asynchronous messages in a distributed and 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 (9)

* Cited by examiner, † Cited by third party
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
JP7083850B2 (en) * 2017-06-08 2022-06-13 アマデウス エス.アー.エス. 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 Memory Self-Update
CN114625546B (en) * 2020-12-11 2025-06-13 银联数据服务有限公司 A data processing method and device
CN115567364A (en) * 2022-08-26 2023-01-03 交控科技股份有限公司 Alarm management device based on rail transit distributed dispatching system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588117A (en) * 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US20070192306A1 (en) * 2004-08-27 2007-08-16 Yannis Papakonstantinou Searching digital information and databases
US20080127209A1 (en) * 2006-07-01 2008-05-29 Gale Martin J Method, Apparatus and Computer Program Product for Managing Persistence in a Messaging Network

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
WO2008105099A1 (en) * 2007-02-28 2008-09-04 Fujitsu Limited Application-cooperative controlling program, application-cooperative controlling method, and application-cooperative controlling apparatus
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
EP2254046B1 (en) * 2009-05-18 2014-07-30 Amadeus S.A.S. A method and system for managing the order of messages
US8495656B2 (en) * 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588117A (en) * 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US20070192306A1 (en) * 2004-08-27 2007-08-16 Yannis Papakonstantinou Searching digital information and databases
US20080127209A1 (en) * 2006-07-01 2008-05-29 Gale Martin J Method, Apparatus and Computer Program Product for Managing Persistence in a Messaging Network

Also Published As

Publication number Publication date
KR20150037980A (en) 2015-04-08
WO2014019701A1 (en) 2014-02-06
JP2015527658A (en) 2015-09-17
CN104428754A (en) 2015-03-18
CN104428754B (en) 2018-04-06
JP6198825B2 (en) 2017-09-20
IN2014DN10080A (en) 2015-08-21

Similar Documents

Publication Publication Date Title
KR101612682B1 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
CN111104235B (en) Queue-based asynchronous processing method and device for service requests
US20240007545A1 (en) Content payload delivery system
US8903925B2 (en) Scheduled messages in a scalable messaging system
US9888048B1 (en) Supporting millions of parallel light weight data streams in a distributed system
US8489693B2 (en) System and method for context-based serialization of messages in a parallel execution environment
US8578218B2 (en) Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment
US8276160B2 (en) Managing queues in an asynchronous messaging system
US9448861B2 (en) Concurrent processing of multiple received messages while releasing such messages in an original message order with abort policy roll back
US8984530B2 (en) Queued message dispatch
US20120076152A1 (en) System and method for priority scheduling of plurality of message types with serialization constraints and dynamic class switching
JP2019514132A (en) Method, system and server for allocating virtual goods
KR20120023033A (en) A method and system for managing the order of messages
CN109144683A (en) Task processing method, device, system and electronic equipment
EP2693337B1 (en) Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
US8903767B2 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
EP3803616A1 (en) Change notifications for object storage
US9124448B2 (en) Method and system for implementing a best efforts resequencer
CN116382943A (en) Sequential message processing method, bus system, computer device, and storage medium
KR101499890B1 (en) Low Latency Framework System
CN111597056B (en) Distributed scheduling method, system, storage medium and equipment
CN113157465A (en) Message sending method and device based on pointer linked list
CN116633875B (en) Time order-preserving scheduling method for multi-service coupling concurrent communication
CN107819823A (en) A kind of information processing method, server and computer-readable recording medium
AU2018280855B2 (en) Multi-standard message processing

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20150203

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20150619

Comment text: Request for Examination of Application

A302 Request for accelerated examination
PA0302 Request for accelerated examination

Patent event date: 20151116

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20160222

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20160407

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20160407

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20190326

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20190326

Start annual number: 4

End annual number: 4