KR20110073279A - A method for performance optimisation of publish operation - Google Patents

A method for performance optimisation of publish operation Download PDF

Info

Publication number
KR20110073279A
KR20110073279A KR1020100128168A KR20100128168A KR20110073279A KR 20110073279 A KR20110073279 A KR 20110073279A KR 1020100128168 A KR1020100128168 A KR 1020100128168A KR 20100128168 A KR20100128168 A KR 20100128168A KR 20110073279 A KR20110073279 A KR 20110073279A
Authority
KR
South Korea
Prior art keywords
subscriber
message
subscribers
response
waiting
Prior art date
Application number
KR1020100128168A
Other languages
Korean (ko)
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
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20110073279A publication Critical patent/KR20110073279A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1209Improving or facilitating administration, e.g. print management resulting in adapted or bridged legacy communication protocols, e.g. emulation, protocol extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2066Optimisation of the communication load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/129Remote printer device, e.g. being remote from client or server in server-printer device-client configuration, e.g. print flow goes from server to printer and then bidirectional from printer to client, i.e. the client does not communicate with the server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/457Communication
    • 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
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16ZINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS, NOT OTHERWISE PROVIDED FOR
    • G16Z99/00Subject matter not provided for in other main groups of this subclass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

PURPOSE: A performance optimization method of publish operation is provided to identify whether or not a subscriber is waiting for a published message in response to the published message by a publisher. CONSTITUTION: A publisher(205) publishes a message having subject string. A matching engine(215) builds a delivery list of subscribers, which matches the subject string of the published message. A delay device(235) obtains a first subscriber from the delivery list to identify whether or not a subscriber is waiting for the message. The delay device checks the queue status information related to the subscriber to identify whether or not the subscriber is actively waiting for the message.

Description

발행 작업의 퍼포먼스 최적화 방법{A METHOD FOR PERFORMANCE OPTIMISATION OF PUBLISH OPERATION}A METHOD FOR PERFORMANCE OPTIMISATION OF PUBLISH OPERATION}

본 발명은 발행 작업(publish operation)의 퍼포먼스 최적화 방법과 관련된다.The present invention relates to a method of optimizing the performance of a publish operation.

발행 및 구독(publish and subscribe, pub/sub)은 다수의 사용자들에게 정보를 전파하는 효과적인 방법이다. pub/sub 어플리케이션들은, 동적으로 변하며 잠재적으로 큰 폭넓은 독자(audience)에 대해 시기적절하게 비즈니스 메시지들 및 트랜잭션들을 얻는 작업을 간략화하는 것을 도울 수 있다.Publish and subscribe (pub / sub) is an effective way of disseminating information to multiple users. pub / sub applications can help simplify the task of obtaining business messages and transactions in a timely manner for a dynamically changing and potentially large audience.

pub/sub 시스템에서, 발행자들(publishers)은 그들의 메시지들이 어디로 가는지에 관해 관심이 없고, 구독자들(subscribers)은 그들이 받는 메시지들이 어디로부터 오는지에 관해 관심이 없다. 그 대신에, 브로커(broker)는 일반적으로 메시지 소스의 인테그리티(integrity)를 보장하며 또한 상기 브로커에 등록된 구독들(subscriptions)에 따라 메시지의 분배를 관리한다.In a pub / sub system, publishers aren't interested in where their messages go, and subscribers aren't interested in where their messages come from. Instead, a broker generally guarantees the integrity of the message source and also manages the distribution of messages according to subscriptions registered with the broker.

메시지 주제 스트링들(message topic strings)은 일반적으로 발행자들과 구독자들 간의 메시지들의 전달에 대한 키(key)를 제공한다. 도 1에 도시된 pub/sub 시스템(100)을 참조하면, 각각의 메시지에 특정 목적지 주소를 포함하는 것 대신에, 발행자(105)는 메시지에 주제 스트링(topic string)을 부여(assign)한다. 브로커(110)는 발행된 메시지의 주제 스트링을 구독자들(120) - 이 구독자들(120)은 상기 주제 스트링에 대해 발행된 메시지들을 수신하도록 구독함 - 의 리스트와 매칭시키기 위한 매칭 엔진(115)을 포함한다. 매치에 응답하여, 브로커(110)는 구독자(120)에게 상기 발행된 메시지를 송신한다.Message topic strings generally provide a key for the delivery of messages between publishers and subscribers. Referring to the pub / sub system 100 shown in FIG. 1, instead of including a specific destination address in each message, the publisher 105 assigns a topic string to the message. The broker 110 matches the subject string of the published message with a list of subscribers 120, which subscribers 120 subscribe to receive messages published for the subject string. It includes. In response to the match, broker 110 sends the published message to subscriber 120.

큐 pub/sub(queued pub/sub) 환경에서, 하나의 메시지를 다수의 구독자들에게 발행하는 것은 상기 구독자들에 대한 전달을 직렬화(serialize)할 때 퍼포먼스 페널티를 수반할 수 있다. 예를 들어, 만약 구독자가 상기 메시지가 발행된 시간에 메시지를 액티브하게(actively) 기다리고 있지 않으면, 상기 메시지는 디스크로 큐되는 것이 필요할 수 있는데(예를 들어, 발행자에 의해 또는 브로커에 의해), 이는 발행시 그리고 상기 구독자가 상기 메시지를 가져올 때 높은 퍼포먼스 비용(high performance cost)을 수반한다. 나아가, 만약 메시지의 전달이 하나의 스레드(thread)를 사용함으로써 발생한다면, 상기 메시지의 큐잉(queuing) 및 계속되는 전달의 프로세스는 처리 사슬(processing chain)에서 더 아래의 다른 구독자들이 시기적절하게 상기 메시지를 수신하는 것을 방지한다.In a queued pub / sub environment, publishing one message to multiple subscribers may involve a performance penalty when serializing delivery to the subscribers. For example, if a subscriber is not actively waiting for a message at the time the message is published, the message may need to be queued to disk (eg, by the publisher or by a broker). This entails a high performance cost at the time of publication and when the subscriber gets the message. Furthermore, if the delivery of a message occurs by using one thread, the process of queuing and subsequent delivery of the message may be timed by other subscribers further down in the processing chain. To prevent receiving it.

발명의 제1 측면에 따라, 발행 작업의 퍼포먼스 최적화 방법이 제공되는데, 상기 방법은 메시지를 발행하기 위한 발행자를 포함하고 구독자를 상기 발행된 메시지와 매치시키기 위한 수단을 포함하는 시스템에 사용하기 위한 것으로서, 상기 방법은, 상기 발행자가 메시지를 발행하는 것에 응답하여, 상기 매치되는 구독자(matching subscriber)가 상기 발행된 메시지를 액티브하게 기다리고 있는지를 결정하는 단계; 및 상기 구독자가 액티브하게 기다리고 있지 않다고 결정하는 것에 응답하여, 상기 발행된 메시지의 전달을 연기(defer)하는 단계를 포함한다.According to a first aspect of the invention, a method of optimizing performance of a publishing operation is provided for use in a system comprising a publisher for publishing a message and means for matching subscribers with the published message. The method further comprises: in response to the publisher publishing a message, determining whether the matching subscriber is actively waiting for the published message; And in response to determining that the subscriber is not actively waiting, deferring delivery of the published message.

발명의 제2 측면에 따라, 발행 작업의 퍼포먼스 최적화 장치가 제공되는데, 상기 장치는 메시지를 발행하기 위한 발행자를 포함하고 구독자를 상기 발행된 메시지와 매치시키기 위한 수단을 포함하는 시스템에 사용하기 위한 것으로서, 상기 장치는, 상기 발행자가 메시지를 발행하는 것에 응답하여, 상기 매치되는 구독자가 상기 발행된 메시지를 액티브하게 기다리고 있는지를 결정하기 위한 수단; 및 상기 구독자가 액티브하게 기다리고 있지 않다고 결정하는 것에 응답하여, 상기 발행된 메시지의 전달을 연기하기 위한 수단을 포함한다.According to a second aspect of the invention, there is provided an apparatus for optimizing performance of a publishing operation, the apparatus comprising a publisher for publishing a message and for use in a system comprising means for matching a subscriber with the published message. And the apparatus further comprises: means for determining, in response to the publisher publishing a message, whether the matching subscriber is actively waiting for the published message; And means for delaying delivery of the published message in response to determining that the subscriber is not actively waiting.

발명의 제3 측면에 따라, 컴퓨터 프로그램이 제공되는데, 상기 컴퓨터 프로그램은 컴퓨터 상에서 실행될 때, 상기 방법의 각 단계를 수행하기 위해 준비된 프로그램 코드 수단을 포함한다.According to a third aspect of the invention, a computer program is provided, which, when executed on a computer, comprises program code means prepared for performing each step of the method.

이제 다음의 도면들에 도시되는 바람직한 실시예들을 참조하여 본 발명이 설명될 것이다. 그러나, 첨부되는 도면들 및 설명은 단지 예시를 위한 것이다.
도 1은 바람직한 실시예가 구현되는 pub/sub 시스템의 블록도이다.
도 2는 도 1의 시스템의 더 상세한 블록도이다.
도 3은 바람직한 실시예에 따른 프로세스와 관련된 동작 단계들을 보여주는 흐름도이다.
The invention will now be described with reference to the preferred embodiments shown in the following figures. However, the accompanying drawings and descriptions are for illustration only.
1 is a block diagram of a pub / sub system in which a preferred embodiment is implemented.
2 is a more detailed block diagram of the system of FIG.
3 is a flowchart showing operational steps associated with a process according to a preferred embodiment.

이제 도면들을 참조하여, 바람직한 실시예가 설명될 것이다.Referring now to the drawings, preferred embodiments will be described.

도 2에 도시된 pub/sub 시스템(200)을 참조하면, 발행자(205); 본 발명의 매칭 엔진(215) 및 연기 장치(defer appratus)(235)를 포함하는 브로커(210); 및 복수의 구독자들(220, 225 및 230)이 도시되어 있다. 구독자들(220, 225 및 230)은 발행된 메시지들을 수신하기 위해 사용되는 하나 또는 그 이상의 큐들(227, 240 및 245)을 명시한다.Referring to the pub / sub system 200 shown in FIG. 2, the publisher 205; A broker 210 including a matching engine 215 and a defer appratus 235 of the present invention; And a plurality of subscribers 220, 225, and 230. Subscribers 220, 225, and 230 specify one or more queues 227, 240, and 245 used to receive published messages.

하나 또는 그 이상의 어플리케이션들은 큐들(237, 240 및 245)과 연관될 수 있다. 하나 또는 그 이상의 어플리케이션들은 큐에 대한 접근을 공유할 수 있으며, 이 경우, 구독 정보는 메시지들과 연관된 상관 식별자(correlation identifier)를 더 명시하고 또한 어플리케이션은 상관 식별자를 명시한다.One or more applications may be associated with queues 237, 240, and 245. One or more applications may share access to the queue, in which case the subscription information further specifies a correlation identifier associated with the messages and the application also specifies a correlation identifier.

바람직한 실시예의 프로세스는 이제 도 2 및 3을 참조하여 설명될 것이다.The process of the preferred embodiment will now be described with reference to FIGS. 2 and 3.

전-처리(pre-processing) 단계에서, 발행자(205)는 주제 스트링을 갖는 메시지를 발행한다. 나아가, 타임아웃(timeout)이 설정(configure)되고 구독자들의 평균 메시지 처리 속도들이 얻어진다.In the pre-processing phase, publisher 205 issues a message with a subject string. Furthermore, timeout is configured and subscribers' average message processing rates are obtained.

단계 300에서, 매칭 엔진(215)은 상기 발행된 메시지의 주제 스트링을 매치시키는 구독자들의 전달 리스트를 구성(build)한다.In step 300, the matching engine 215 builds a delivery list of subscribers that match the subject string of the published message.

바람직하게는, 추가 구독자들이 상기 발행된 주제에 관한 메시지들을 요청하는 것을 방지하기 위해 락(lock)이 수립된다.Preferably, a lock is established to prevent additional subscribers from requesting messages about the published topic.

단계 305에서, 연기 장치(235)는 상기 구독자가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310에서), 상기 전달 리스트에서 제1 구독자를 입수(get)한다. 바람직하게는, 연기 장치(235)는 상기 구독자가 메시지를 액티브하게 기다리고 있는지를 결정하기 위해 상기 구독자와 연관된 큐의 상태 정보를 체크한다. 기다리고 있는 구독자는 그것의 큐로부터 메시지를 가져오기 위한 명령을 이슈(issue)하는 자이다.At step 305, the deferral device 235 gets a first subscriber from the delivery list to determine if the subscriber is waiting for the message (step 310). Preferably, the deferral device 235 checks the state information of the queue associated with the subscriber to determine if the subscriber is actively waiting for a message. The waiting subscriber is the one who issues the command to get a message from its queue.

만약 연기 장치(235)가 상기 구독자가 상기 메시지를 기다리고 있다고 결정하면, 매칭 엔진(215)은 상기 메시지를 상기 구독자에게 송신하고(단계 320), 단계 325에서, 연기 장치(235)는 상기 전달 리스트로부터 상기 구독자를 제거한다.If the deferral device 235 determines that the subscriber is waiting for the message, the matching engine 215 sends the message to the subscriber (step 320), and in step 325, the deferral device 235 sends the delivery list. Remove the subscriber from the

만약 연기 장치(235)가 상기 구독자가 상기 메시지를 기다리고 있지 않다고 결정하면, 단계 315에서, 연기 장치(235)는 상기 구독자를 연기된 리스트에 추가한다. 단계 325에서, 연기 장치(235)는 상기 전달 리스트로부터 상기 구독자를 제거한다.If the deferral device 235 determines that the subscriber is not waiting for the message, at step 315 the deferral device 235 adds the subscriber to the deferred list. At step 325, the deferral device 235 removes the subscriber from the delivery list.

단계 330에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 전달 리스트를 체크한다. 만약 구독자들이 더 있다면, 단계 305 내지 325가 반복되어, 각각의 구독자가 처리되고 전달 리스트 및 가능하다면 연기된 리스트가 획득되도록 한다.At step 330, the deferral device 235 checks the delivery list to determine if there are more subscribers. If there are more subscribers, steps 305 to 325 are repeated so that each subscriber is processed and a delivery list and possibly deferred list are obtained.

구독자들이 더 없다는 것에 응답하여, 단계 335에서, 연기 장치(235)는 연기된 리스트에 구독자들이 있는지를 결정한다. 만약 연기 장치(235)가 연기된 리스트에 어떠한 구독자들도 없다고 결정하면, 발행자(205에 의해 개시된 발행 작업은 완료된 것으로 간주된다(단계 340).In response to the lack of more subscribers, at step 335, the deferral device 235 determines whether there are subscribers in the deferred list. If the deferral device 235 determines that there are no subscribers on the deferred list, then the publishing work initiated by the publisher 205 is considered complete (step 340).

만약 연기 장치(235)가 연기된 리스트에 구독자들이 있다고 결정하면, 단계 345에서, 연기 장치(235)는 상기 구독자가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 350에서) 상기 연기된 리스트에서 제1 구독자를 입수한다.If the deferral device 235 determines that there are subscribers in the deferred list, in step 345 the deferral device 235 removes from the deferred list to determine if the subscriber is waiting for the message (in step 350). 1 Get subscribers.

단계 310에서 비록 구독자가 기다리고 있지 않았을 수도 있지만, 단계 350에 이를 때, 상기 구독자가 실제로 액티브하게 기다리고 있을 수 있고, 따라서 단계 350에서 추가 체크를 위한 필요가 있음을 주목하자.Note that although at step 310 the subscriber may not have been waiting, when it reaches step 350, the subscriber may actually be actively waiting, and thus at step 350 there is a need for further checks.

만약 연기 장치(235)가 상기 구독자가 상기 메시지를 기다리고 있다고 결정하면, 매칭 엔진(215)은 상기 구독자에게 바로 상기 메시지를 송신하고(단계 355), 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 상기 구독자를 제거한다. 상기 프로세스는 이후에 설명되는 바와 같이 단계 365로 진행된다.If the deferral device 235 determines that the subscriber is waiting for the message, the matching engine 215 sends the message directly to the subscriber (step 355), and in step 360 the deferral device 235 defers the deferral. Removes the subscriber from the list. The process proceeds to step 365 as described below.

단계 350에서, 만약 연기 장치(235)가 상기 구독자가 상기 메시지를 기다리고 있지 않다고 결정하면, 단계 370에서, 연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르렀는지를 결정한다.In step 350, if the deferral device 235 determines that the subscriber is not waiting for the message, in step 370, the deferral device 235 determines whether the set timeout mentioned above has been reached.

만약 상기 설정된 타임아웃에 이르면, 매칭 엔진(215)은 상기 구독자의 큐로 상기 메시지를 송신한다(단계 375). 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 상기 구독자를 제거한다. 이후에 기술되는 바와 같이, 상기 프로세스는 단계 365로 진행된다.If the set timeout is reached, the matching engine 215 sends the message to the subscriber's queue (step 375). In step 360, the deferral device 235 removes the subscriber from the deferred list. As will be described later, the process proceeds to step 365.

만약 상기 설정된 타임아웃에 이르지 않는다면, 연기 장치(235)는 상기 구독자가 상기 타임아웃에 이르기 전에 액티브하게 될 것인지를 결정하기 위해 상기 설정된 타임아웃에 대비하여 상기 구독자의 평균 메시지 처리 속도를 체크한다(단계 380).If the set timeout is not reached, the deferral device 235 checks the average message processing rate of the subscriber against the set timeout to determine whether the subscriber will be active before reaching the timeout ( Step 380).

만약 연기 장치(235)가 상기 구독자가 상기 타임아웃에 이르기 전에 액티브하게 될 것이라고 결정하면, 단계 385에서, 연기 장치(235)는 상기 값비싼 큐잉 작업을 방지하기 위해, 상기 연기된 리스트에서 상기 구독자를 남긴다. 이후에 더 기술되는 바와 같이, 상기 프로세스는 단계 365로 진행된다.If the deferral device 235 determines that the subscriber will be active before reaching the timeout, then at step 385, the deferral device 235 is configured to prevent the expensive queuing operation from being performed by the subscriber in the deferred list. Leaves. As will be described further below, the process proceeds to step 365.

만약 연기 장치(235)가 상기 구독자가 상기 타임아웃에 이르기 전에 액티브하게 되지 않을 것 같다고 결정하면, 단계 375에서, 매칭 엔진(215)은 상기 메시지를 상기 구독자의 큐로 송신한다. 즉, 상기 발행된 메시지를 전달함에 있어서 추가 지연이 받아들여질 수 없으므로 상기 메시지는 디스크에 큐된다. 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 상기 구독자를 제거하고, 이후에 기술되는 바와 같이, 상기 프로세스는 단계 365로 진행된다.If the deferral device 235 determines that the subscriber is unlikely to become active before reaching the timeout, then at step 375, the matching engine 215 sends the message to the subscriber's queue. That is, no further delay can be accepted in delivering the issued message so that the message is queued to disk. In step 360, the deferral device 235 removes the subscriber from the deferred list, and the process proceeds to step 365, as described later.

상기 타임아웃은 값비싼 큐잉 작업과 발행된 메시지를 전달함에 있어서 받아들일 수 없는 지연의 방지 사이에서 균형이 이뤄질 수 있도록 하는 것을 주목하자.Note that the timeout allows a balance between expensive queuing operations and the prevention of unacceptable delays in delivering issued messages.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크한다.In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers.

만약 구독자들이 더 있으면, 단계 345 내지 385는 반복된다. 그리하여, 구독자는 상기 메시지를 바로 수신하거나, 상기 메시지가 큐되거나 상기 연기된 리스트에 상기 구독자가 남아지도록 한다.If there are more subscribers, steps 345 to 385 are repeated. Thus, the subscriber receives the message immediately, or causes the subscriber to remain in the queued or deferred list.

만약, 단계 365에서, 구독자들이 더 없으면, 발행자(205)에 의해 개시된 상기 발행 작업은 완료된 것으로 간주된다(단계 340).If, at step 365, there are no more subscribers, the publishing work initiated by the publisher 205 is considered complete (step 340).

이제 바람직한 실시예들이 설명될 것이다.Preferred embodiments will now be described.

제1 예에서, 타임아웃은 2초로 설정되는데, 구독자 1(220) 및 구독자 3(230)은 평균, 매 1초마다 메시지들을 처리하고, 구독자 2(225)는 평균 매 10초마다 메시지들을 처리한다.In a first example, the timeout is set to 2 seconds, where subscriber 1 220 and subscriber 3 230 process messages on average, every second, and subscriber 2 225 processes messages every 10 seconds on average. do.

단계 300에서, 매칭 엔진(215)은 상기 발행된 메시지의 주제 스트림을 매치시키는 구독자들의 전달 리스트를 구성하는데, 상기 전달 리스트는 구독자 1(220); 구독자 2(225); 및 구독자 3(230)을 포함한다.In step 300, the matching engine 215 constructs a delivery list of subscribers that match the subject stream of the published message, the delivery list comprising: subscriber 1 220; Subscriber 2 225; And subscriber 3 230.

단계 305에서, 연기 장치(235)는 구독자 1(220)이 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310) 구독자 1(220)을 입수한다.At step 305, the deferral device 235 obtains subscriber 1 220 to determine if subscriber 1 220 is waiting for the message (step 310).

연기 장치(235)는 구독자 1(220)이 상기 메시지를 기다리고 있다고 결정하고, 단계 320에서, 매칭 엔진(215)은 상기 메시지를 구독자 1(220)에게 바로 송신한다. 단계 235에서, 연기 장치(235)는 상기 전달 리스트로부터 구독자 1(220)을 제거한다.The deferral device 235 determines that subscriber 1 220 is waiting for the message, and at step 320, the matching engine 215 sends the message directly to subscriber 1 220. At step 235, the deferral device 235 removes subscriber 1 220 from the delivery list.

단계 330에서, 연기 장치(235)는 추가 구독자들이 있는지를 결정하기 위해 상기 전달 리스트를 체크한다.At step 330, the deferral device 235 checks the delivery list to determine if there are additional subscribers.

추가 구독자들이 있으므로, 연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310), 상기 전달 리스트에서 그 다음 구독자, 즉, 구독자 2(225)를 입수한다.As there are additional subscribers, the deferral device 235 obtains the next subscriber in the delivery list, subscriber 2 225, to determine if subscriber 2 225 is waiting for the message (step 310).

연기 장치(235)는 구독자 2(235)가 상기 메시지를 기다리고 있지 않다고 결정하고, 단계 315에서, 연기 장치(235)는 연기된 리스트에 구독자 2(225)를 추가한다. 단계 325에서, 전달 장치(235)는 상기 전달 리스트로부터 구독자 2(225)를 제거한다.The deferral device 235 determines that subscriber 2 235 is not waiting for the message, and at step 315, the deferral device 235 adds subscriber 2 225 to the deferred list. In step 325, the delivery device 235 removes subscriber 2 225 from the delivery list.

단계 330에서, 전달 장치(235)는 상기 전달 리스트를 체크하고 추가 구독자가 있다고 결정한다. 이에 응답하여, 연기 장치(235)는 구독자 3(230)이 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310에서), 상기 전달 리스트에서 그 다음 구독자, 즉 구독자 3(230)을 입수한다.In step 330, the delivery device 235 checks the delivery list and determines that there are additional subscribers. In response, the deferral device 235 obtains the next subscriber, namely subscriber 3 230, from the delivery list to determine if subscriber 3 230 is waiting for the message (at step 310).

연기 장치(235)는 구독자 3(230)이 상기 메시지를 기다리고 있다고 결정하고, 단계 320에서, 매칭 엔진(215)은 구독자 3(230)에게 바로 상기 메시지를 송신한다. 단계 325에서, 연기 장치(235)는 상기 전달 리스트로부터 구독자 3(230)을 제거한다.The deferral device 235 determines that subscriber 3 230 is waiting for the message, and at step 320 the matching engine 215 sends the message directly to subscriber 3 230. At step 325, the deferral device 235 removes subscriber 3 230 from the delivery list.

단계 330에서, 연기 장치(235)는 추가 구독자들이 있는지를 결정하기 위해 상기 전달 리스트를 체크한다.At step 330, the deferral device 235 checks the delivery list to determine if there are additional subscribers.

구독자들이 더 없으므로, 단계 335에서, 연기 장치(235)는 연기된 리스트에 구독자들이 있는지를 결정한다.Since there are no more subscribers, at step 335, the deferral device 235 determines if there are subscribers in the deferred list.

연기 장치(235)는 구독자 2(235)가 상기 연기된 리스트에 있다고 결정하고, 단계 345에서, 연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 350) 구독자 2(225)를 입수한다.The deferral device 235 determines that subscriber 2 235 is on the deferred list, and at step 345, the deferral device 235 determines whether subscriber 2 225 is waiting for the message (step 350). Subscriber 2 (225) is obtained.

연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있지 않다고 결정하고, 단계 370에서, 연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르렀는지를 결정한다.The deferral device 235 determines that subscriber 2 225 is not waiting for the message, and at step 370, the deferral device 235 determines whether the set timeout mentioned above has been reached.

연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르지 않았다고 결정하고, 구독자 2(225)가 상기 타임아웃에 이르기 전에 액티브하게 될 것인지를 결정하기 위해 상기 설정된 타임아웃(즉, 2초)에 대비하여 구독자 2(225)의 평균 메시지 처리 속도(즉, 10초)를 체크한다(단계 380).The deferral device 235 determines that the set timeout mentioned above has not been reached, and prepares for the set timeout (ie, 2 seconds) to determine whether Subscriber 2 225 will be active before reaching the timeout. Check the average message processing rate (ie, 10 seconds) of subscriber 2 (225) (step 380).

연기 장치(235)는 구독자 2(225)가 상기 타임아웃에 이르기 전에 액티브하게 되지 않을 것이라고 결정하고, 단계 375에서, 매칭 엔진(215)은 상기 메시지를 구독자 2(225)의 큐(240)로 송신한다. 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 구독자 2를 제거한다.The deferral device 235 determines that subscriber 2 225 will not be active before reaching the timeout, and at step 375, the matching engine 215 directs the message to queue 2 of subscriber 2 225. Send. In step 360, the deferral device 235 removes subscriber 2 from the deferred list.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크하고, 구독자들이 더 없으므로, 발행자(205)에 의해 개시된 발행 작업은 완료된 것으로 간주된다(단계 340).In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers, and since there are no more subscribers, the publishing work initiated by the publisher 205 is considered complete (step 340).

두 번째 예에서, 타임아웃은 2초로 설정되며, 구독자 1(220) 및 구독자 3(230)는 평균 매 1초 마다 메시지들을 처리하고, 구독자 2(225)는 평균 매 10초마다 메시지들을 처리한다.In the second example, the timeout is set to 2 seconds, subscriber 1 220 and subscriber 3 230 process messages every 1 second on average, and subscriber 2 225 processes messages every 10 seconds on average. .

단계 300에서, 매칭 엔진(215)은 구독자 1(220); 구독자 2(225); 및 구독자 3(230)을 포함하는 구독자들의 전달 리스트를 구성한다.In step 300, the matching engine 215 may include subscriber 1 220; Subscriber 2 225; And subscriber 3 230 to build a delivery list of subscribers.

단계 305에서, 연기 장치(235)는 구독자 1(220)을 입수하고, 구독자 1(220)이 상기 메시지를 기다리고 있다고 결정한다(단계 310). 이에 응답하여, 단계 320에서, 매칭 엔진(215)은 구독자 1(220)에 바로 상기 메시지를 송신하고, 단계 235에서, 연기 장치(235)는 상기 전달 리스트로부터 구독자 1(220)을 제거한다.At step 305, the deferral device 235 obtains subscriber 1 220 and determines that subscriber 1 220 is waiting for the message (step 310). In response, at step 320, the matching engine 215 sends the message directly to subscriber 1 220, and at step 235 the deferral device 235 removes subscriber 1 220 from the delivery list.

단계 330에서, 연기 장치(235)는 추가 구독자들이 있는지를 결정하기 위해 상기 전달 리스트를 체크하며, 추가 구독자들이 있으므로, 연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310에서) 상기 전달 리스트에서 그 다음의 구독자, 즉 구독자 2(225)를 입수한다.In step 330, the deferral device 235 checks the delivery list to determine if there are additional subscribers, and since there are additional subscribers, the deferral device 235 determines whether subscriber 2 225 is waiting for the message. The next subscriber, subscriber 2 225, is obtained from the delivery list.

전달 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있지 않다고 결정하고, 단계 315에서, 연가 장치(235)는 연기된 리스트에 구독자 2(225)를 추가한다. 단계 325에서, 연기 장치(235)는 상기 전달 장치로부터 구독자 2(225)를 제거한다.Delivery device 235 determines that subscriber 2 225 is not waiting for the message, and at step 315, postponed device 235 adds subscriber 2 225 to the deferred list. At step 325, the deferral device 235 removes subscriber 2 225 from the delivery device.

단계 330에서, 연기 장치(235)는 상기 전달 리스트를 체크하고 추가 구독자가 있다고 결정한다. 이에 응답하여, 연기 장치(235)는 구독자 3(230)이 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 310에서) 상기 전달 리스트에서 그 다음 구독자, 즉 구독자 3(230)을 입수한다.At step 330, the deferral device 235 checks the delivery list and determines that there are additional subscribers. In response, the deferral device 235 obtains the next subscriber, subscriber 3 230, from the delivery list to determine if subscriber 3 230 is waiting for the message (at step 310).

연기 장치(235)는 구독자 3(230)이 상기 메시지를 기다리고 있지 않다고 결정하고, 단계 315에서, 연기 장치(235)는 연기된 리스트에 구독자 3(230)을 추가한다. 단계 325에서, 연기 장치(235)는 상기 전달 리스트로부터 구독자 3(230)을 제거한다.The deferral device 235 determines that subscriber 3 230 is not waiting for the message, and at step 315 the deferral device 235 adds subscriber 3 230 to the deferred list. At step 325, the deferral device 235 removes subscriber 3 230 from the delivery list.

단계 330에서, 연기 장치(235)는 추가 구독자들이 있는지를 결정하기 위해 상기 전달 리스트를 체크한다.At step 330, the deferral device 235 checks the delivery list to determine if there are additional subscribers.

더 이상의 구독자들이 없으므로, 단계 335에서, 연기 장치(235)는 연기된 리스트에 구독자들이 있는지를 결정한다.Since there are no more subscribers, at step 335, the deferral device 235 determines whether there are subscribers in the deferred list.

연기 장치(235)는 상기 연기된 리스트에 구독자들이 있다고 결정하고, 단계 345에서, 연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 350) 구독자 2(225)를 입수한다.The deferral device 235 determines that there are subscribers in the deferred list, and in step 345, the deferral device 235 determines whether subscriber 2 225 is waiting for the message (step 350) and subscriber 2 225 Get)

연기 장치(235)는 구독자 2(225)가 상기 메시지를 기다리고 있지 않다고 결정하고, 단계 370에서, 연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르렀는지를 결정한다.The deferral device 235 determines that subscriber 2 225 is not waiting for the message, and at step 370, the deferral device 235 determines whether the set timeout mentioned above has been reached.

연기 장치(235)는 구독자 3(230)이 현재 상기 메시지를 기다리고 있는지를 결정하고, 단계 355에서, 매칭 엔진(215)은 상기 메시지를 구독자 3(230)에게 바로 송신한다. 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 구독자 3(230)을 제거한다.The deferral device 235 determines whether subscriber 3 230 is currently waiting for the message, and at step 355, the matching engine 215 sends the message directly to subscriber 3 230. In step 360, the deferral device 235 removes subscriber 3 230 from the deferred list.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크하고, 더 이상의 구독자들이 없으므로, 발행자(205)에 의해 개시된 발행 작업은 완료된 것으로 간주된다(단계 340).In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers, and since there are no more subscribers, the publishing work initiated by the publisher 205 is considered complete (step 340). .

제3의 예에서, 위에서의 제2의 예를 참조하면, 단계 350에서, 연기 장치(235)는 구독자 3(230)이 현재 상기 메시지를 기다리고 있다고 결정하고, 단계 370에서, 연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르렀는지를 결정한다.In a third example, referring to the second example above, in step 350, the deferral device 235 determines that subscriber 3 230 is currently waiting for the message, and in step 370, the deferred device 235 Determines whether the set timeout mentioned above has been reached.

연기 장치(235)는 위에서 언급한 설정된 타임아웃에 이르지 않았다고 결정하고, 단계 380에서, 연기 장치(235)는 구독자 3(230)이 상기 타임아웃에 이르기 전에 액티브하게 될 것인지를 결정하기 위해 상기 설정된 타임아웃(즉, 2초)에 대비하여 구독자 3(230)의 평균 메시지 처리 속도(즉, 1초)를 체크한다.The deferral device 235 determines that the set timeout mentioned above has not been reached, and at step 380, the deferred device 235 is configured to determine whether subscriber 3 230 will be active before reaching the timeout. Check the average message processing speed (ie, 1 second) of subscriber 3 230 against the timeout (ie, 2 seconds).

연기 장치(235)는 구독자 3(230)이 상기 타임아웃에 이르기 전에 액티브하게 될 것이라고 결정하고, 단계 385에서, 연기 장치(235)는 상기 연기된 리스트에서 구독자 3(230)을 남긴다.The deferral device 235 determines that subscriber 3 230 will be active before reaching the timeout, and at step 385, the deferral device 235 leaves subscriber 3 230 in the deferred list.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크한다. 구독자 3(230)이 상기 연기된 리스트에 있으므로, 단계 345에서, 연기 장치(235)는 구독자 3(230)이 상기 메시지를 기다리고 있는지를 결정하기 위해(단계 350에서) 구독자 3(230)을 입수한다.In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers. Since subscriber 3 230 is on the deferred list, at step 345, the deferral device 235 obtains subscriber 3 230 (at step 350) to determine if subscriber 3 230 is waiting for the message. do.

연기 장치(235)는 구독자 3(230)이 현재 상기 메시지를 기다리고 있다고 결정하고, 단계 355에서, 매칭 엔진(215)은 상기 메시지를 구독자 3(230)에게 바로 송신한다. 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 구독자 3(230)을 제거한다.The deferral device 235 determines that subscriber 3 230 is currently waiting for the message, and at step 355 the matching engine 215 sends the message directly to subscriber 3 230. In step 360, the deferral device 235 removes subscriber 3 230 from the deferred list.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크한다.In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers.

더 이상의 구독자들이 없으므로, 발행자(205)에 의해 개시된 발행 작업은 완료된 것으로 간주된다(단계 340).Since there are no more subscribers, the publishing work initiated by the publisher 205 is considered complete (step 340).

이와는 다르게, 만약, 단계 370에서, 연기 장치(235)가 위에서 언급한 설정된 타임아웃에 이르면, 단계 375에서, 매칭 엔진(215)은 상기 메시지를 구독자 3(230)의 큐(245)로 송신한다. 단계 360에서, 연기 장치(235)는 상기 연기된 리스트로부터 구독자 3(230)을 제거한다.Alternatively, if, in step 370, the deferral device 235 reaches the set timeout mentioned above, in step 375, the matching engine 215 sends the message to queue 3 of subscriber 3230. . In step 360, the deferral device 235 removes subscriber 3 230 from the deferred list.

단계 365에서, 연기 장치(235)는 구독자들이 더 있는지를 결정하기 위해 상기 연기된 리스트를 체크한다.In step 365, the deferral device 235 checks the deferred list to determine if there are more subscribers.

더 이상의 구독자들이 없으므로, 발행자(205)에 의해 개시된 발행 작업은 완료된 것으로 간주된다(단계 340).Since there are no more subscribers, the publishing work initiated by the publisher 205 is considered complete (step 340).

바람직하게는, 바람직한 실시예는 발행된 메시지를 전달하는 것에 대한 "두 개의 패스(two-pass)" 접근법을, 구독자 액티비티(subscriber activity)와 연관된 지연(latency)에 기초하여 비액티브한 구독자들(inactive subscriptions)을 위해 전달을 연기함으로써, 액티브한 그리고 비액티브한 구독자들의 혼합(mixture)에 제공한다.Preferably, the preferred embodiment employs a "two-pass" approach to delivering published messages, based on the latency associated with the subscriber activity. By deferring delivery for inactive subscriptions, it provides a mix of active and inactive subscribers.

상기 연기된 리스트는 각각의 액티브한 구독자들이 상기 메시지의 그들의 카피(copy)를 수신한 후 계속해서 반복된다. 상기 연기된 리스트는 상기 발행 작업이 시작된 후 액티브하게 된 기다리고 있는 구독자들의 리스트의 서브세트에 대비하여 교차 참조(cross reference)된다.The deferred list is repeated over and over after each active subscriber receives their copy of the message. The deferred list is cross referenced against a subset of the list of waiting subscribers that became active after the publishing job began.

만약 구독자가 설정된 타임아웃 내에서 액티브하게 되지 않으면, 상기 결정은 상기 메시지를 큐하도록 이뤄진다. 그리하여, 상기 처리 사슬에서 더 아래의 다른 구독자들이, 받아들일 수 있는 스레쉬홀드 내에 상기 메시지의 카피를 수신할 기회를 갖도록 한다.If the subscriber is not active within the set timeout, the decision is made to queue the message. Thus, other subscribers further down in the processing chain have the opportunity to receive a copy of the message within an acceptable threshold.

바람직하게는, 빈번하지 않은 액티브한 구독자들에 대한 전달은 여전히 큐될 수 있다. 그러나, 이러한 구독자들에 대한 큐되는 전달(queued delivery)은 가장 최근의 가능한 기회까지 연기된다.Advantageously, delivery to infrequently active subscribers can still be queued. However, queued delivery to these subscribers is delayed until the latest possible opportunity.

바람직하게는, 상기 타임아웃은 설정가능한다(예, 이전의 발행 작업들을 위해 하나 또는 그 이상의 평균 시간 구간들과 함께).Preferably, the timeout is configurable (e.g. with one or more average time intervals for previous publishing jobs).

바람직하게는, 상기 연기 장치가 호출되는지에 관한 옵션은 최상의 전체 퍼포먼스를 달성하기 위해 구독자들의 수와 연관된다(예, 상기 연기 장치는 비교적 큰 수의 구독자들이 있는 경우 더 효과적일 수 있다).Preferably, the option as to whether the deferral device is called is associated with the number of subscribers to achieve the best overall performance (eg, the deferral device may be more effective if there are a relatively large number of subscribers).

바람직하게는, 상기 연기 장치의 퍼포먼스는 2차 스레드들(secondary threads)로의 상기 연기된 리스트 처리의 전달을 오프로드(offload)함에 의해 증가된다.Advantageously, the performance of the deferral device is increased by offloading the transfer of the deferred list processing to secondary threads.

바람직하게는, 새로운 구독자들은 상기 연기된 리스트의 반복이 일단 시작되는 경우 상기 발행된 메시지의 주제에 대한 구독으로부터 배제되지 않는다는 것을 주목하자. 오히려, 상기 새로운 액티브한 구독자들의 2차 리스트는 상기 발행된 메시지가 전달되고 있는 시간 동안 유지된다. 상기 발행 작업이 완료된 것으로 간주되는 경우, 추가 구독자들이 상기 발행된 주제에 관한 메시지들을 요청하는 것을 방지하기 위해 수립된 락(lock)이 해제(release)되고, 상기 2차 리스트는 그 다음으로 발행된 메시지를 위해 구성된 전달 리스트에 추가된다.Preferably, note that new subscribers are not excluded from subscription to the subject of the published message once the iteration of the deferred list begins. Rather, the secondary list of new active subscribers is maintained for the time that the published message is being delivered. If the publishing task is deemed complete, a lock established to prevent further subscribers from requesting messages about the published topic is released, and the secondary list is then published. It is added to the delivery list configured for the message.

본 발명의 바람직한 실시예들의 방법의 일부 또는 모두가 상기 방법의 단계들을 수행하도록 구성된 로직 엘리먼트들을 포함하는, 복수의 로직 장치, 또는 로직 장치에 적절하게 그리고 유용하게 구현될 수 있고, 또한 이러한 로직 엘리먼트들이 하드웨어 컴포넌트들, 펌웨어 컴포넌트들 또는 이것들의 조합을 포함할 수 있다는 것은, 당해 기술 분야에서 통상의 기술을 가진 자에게는 자명할 것이다.Some or all of the methods of the preferred embodiments of the present invention may be suitably and usefully implemented in a plurality of logic devices, or logic devices, including logic elements configured to perform the steps of the method, and may also be such logic elements. It will be apparent to those skilled in the art that these may include hardware components, firmware components, or a combination thereof.

마찬가지로, 본 발명의 바람직한 실시예들에 따른 로직 구성의 일부 또는 모두는 상기 방법의 단계들을 수행하기 위해 로직 엘리먼트들을 포함하는 로직 장치 내에 적절하게 구현될 수 있고, 이러한 로직 엘리먼트들은, 예를 들어, 프로그램가능한 로직 어레이 또는 주문형 집적회로에서 로직 게이트들과 같은 컴포넌트들을 포함할 수 있다는 것은, 당해 기술 분야에서 통상의 기술을 가진 자에게는 자명할 것이다. 이러한 로직 구성은 나아가, 예를 들어, 가상 하드웨어 기술 언어(virtual hardware descriptor language) - 이는 고정되거나 전송가능한 캐리어 매체를 사용하여 저장 및 전달될 수 있음 - 를 사용하여 이러한 어레이 또는 회로에서 로직 구조들을 임시적으로 또는 영구적으로 수립하기 위한 엘리먼트들을 인에이블함에 있어서 더 구현될 수 있다.Likewise, some or all of the logic arrangements in accordance with preferred embodiments of the present invention may be suitably implemented in a logic device including logic elements to perform the steps of the method, such logic elements being, for example, It will be apparent to those skilled in the art that it may include components such as logic gates in a programmable logic array or application specific integrated circuit. This logic configuration further advances the logic structures in such an array or circuit using, for example, a virtual hardware descriptor language, which can be stored and delivered using a fixed or transportable carrier medium. It may be further implemented in enabling the elements to establish, either permanently or permanently.

위에서 기술된 방법 및 구성은 또한 하나 또는 그 이상의 프로세서들(도면상에는 미도시)을 실행하는 소프트웨어에서 전체적으로 또는 부분적으로 적절하게 수행될 수 있고, 상기 소프트웨어는 자기 또는 광 디스크 등과 같은 적절한 데이터-캐리어(이 또한 도면들에 미도시) 상에서 수행되는 하나 또는 그 이상의 컴퓨터 프로그램 엘리먼트들의 형태로 제공될 수 있다는 것을 이해할 수 있을 것이다. 데이터의 전송을 위한 채널들은 마찬가지로 유선 또는 무선 신호-캐리 매체와 같은 신호-캐리 매체뿐만 아니라 모든 기술들(descriptions)의 스토리지 매체를 포함할 수 있다.The method and configuration described above may also be appropriately performed, in whole or in part, on software executing one or more processors (not shown in the figures), which software may be adapted to a suitable data-carrier (such as a magnetic or optical disk). It will be appreciated that this may also be provided in the form of one or more computer program elements executed on the drawings (not shown). Channels for the transmission of data can likewise include a storage medium of all descriptions as well as a signal-carrie medium such as a wired or wireless signal-carrie medium.

본 발명은 나아가 컴퓨터에서 사용하기 위한 컴퓨터 프로그램 제품으로 적절하게 더 구현될 수 있다. 이러한 구현은 컴퓨터 판독가능 매체(예를 들어, 디스켓, CD-ROM, ROM, 또는 하드 디스크)와 같은 실체적인 매체 상에 고정되거나, 실체적인 매체 상에서(실체적인 매체로서는, 예를 들어, 광학 또는 유사 통신 라인들 등이 있으나, 이러한 예들로 한정되는 것은 아님), 또는 무선 기술들(예를 들어, 마이크로파, 적외선 또는 다른 전송 기술들을 포함하나, 이러한 예들로 한정되는 것은 아님)을 사용하여 실체적으로, 모뎀 또는 기타 인터페이스 디바이스를 통해 컴퓨터 시스템으로 전송가능한 일련의 컴퓨터 판독가능 명령들을 포함할 수 있다. 상기 일련의 컴퓨터 판독가능 명령들은 본 명세서 내에서 이미 기술된 기능의 일부 또는 모두를 구현한다.The invention may further be suitably further implemented as a computer program product for use in a computer. Such an implementation may be immobilized on a physical medium, such as a computer readable medium (eg, a diskette, CD-ROM, ROM, or hard disk), or on a physical medium (eg, as a physical medium, for example, optical or Similar communication lines and the like, but are not limited to such examples, or may be substantive using wireless technologies (e.g., including, but not limited to, microwave, infrared, or other transmission technologies). As such, it may include a series of computer readable instructions transmittable to a computer system via a modem or other interface device. The series of computer readable instructions implements some or all of the functionality previously described herein.

당해 기술 분야에서 숙련된 자들은 이러한 컴퓨터 판독가능 명령들은 많은 컴퓨터 아키텍쳐들 또는 운영 체제들에서 사용하기 위한 다수의 프로그래밍 언어들로 작성될 수 있다. 나아가, 이러한 명령들은 현재 또는 장래의 메모리 기술(예를 들어, 반도체, 자기, 또는 광학 기술을 포함하나, 이러한 예들로 한정되는 것은 아님)을 사용하여 저장될 수 있고, 현재 또는 장래의 통신 기술(예를 들어, 광학, 적외선, 또는 마이크로파를 포함하나, 이러한 예들로 한정되는 것은 아님)을 사용하여 전송될 수 있다. 이러한 컴퓨터 프로그램 제품은, 예를 들어, 시스템 ROM 또는 고정된 디스크 상에서, 인쇄 또는 전자 문서화를 수반하는 착탈식 매체로서 배포될 수 있고(예를 들어, 쉬링크-랩된 소프트웨어(shrink-wrapped software), 컴퓨터 시스템에 미리 로드됨), 또는 예를 들어, 인터넷 또는 WWW와 같은 네트워크를 통한 전자 게시판 또는 서버로부터 배포될 수 있다.Those skilled in the art can write these computer readable instructions in a number of programming languages for use in many computer architectures or operating systems. Furthermore, these instructions may be stored using current or future memory technology (eg, including but not limited to semiconductor, magnetic, or optical technology), and may be stored in current or future communication technology ( For example, but not limited to, optical, infrared, or microwave. Such a computer program product may be distributed, for example, on a system ROM or fixed disk as a removable medium with printing or electronic documentation (eg, shrink-wrapped software, computer Pre-loaded in the system), or from an electronic bulletin board or server over a network such as, for example, the Internet or the World Wide Web.

또 다르게는, 본 발명의 바람직한 실시예는 컴퓨터로 구현되는 방법의 형태로 실현될 수 있다. 상기 컴퓨터로 구현된 방법은, 컴퓨터 인프라구조에 채용되고 그 상에서 실행될 때, 상기 컴퓨터 시스템이 위에서 기술된 방법의 모든 단계들을 수행하도록 하게 동작가능한 컴퓨터 프로그램 코드를 채용하는 단계들을 포함하는 서비스를 채용하는 방법이다.Alternatively, the preferred embodiment of the present invention may be realized in the form of a computer-implemented method. The computer-implemented method employs a service that includes, when employed in and executed on a computer infrastructure, computer program code operable to cause the computer system to perform all the steps of the method described above. It is a way.

본 발명의 범위로부터 벗어남이 없이 앞서 설명된 실시예에 대해 많은 개량들 및 변형들이 이뤄질 수 있다는 것은 당해 기술 분야에서 숙련된 자에게는 자명하다 할 것이다.It will be apparent to those skilled in the art that many modifications and variations can be made to the embodiment described above without departing from the scope of the invention.

Claims (13)

메시지를 발행(publish)하기 위한 발행자(publisher)를 포함하고 구독자(subscriber)를 상기 발행된 메시지와 매치시키기 위한 수단을 포함하는 시스템에 사용하기 위한, 발행 작업(publish operation)의 퍼포먼스 최적화 방법에 있어서,
상기 발행자가 메시지를 발행하는 것에 응답하여, 상기 매치되는 구독자(matching subscriber)가 상기 발행된 메시지를 액티브하게(actively) 기다리고 있는지를 결정하는 단계; 및
상기 구독자가 액티브하게 기다리고 있지 않다고 결정하는 것에 응답하여, 상기 발행된 메시지의 전달을 연기하는 단계를 포함하는
방법.
A method of performance optimization of a publish operation for use in a system comprising a publisher for publishing a message and a means for matching a subscriber with the published message. ,
In response to the publisher issuing a message, determining if the matching subscriber is actively waiting for the published message; And
In response to determining that the subscriber is not actively waiting, deferring delivery of the published message.
Way.
청구항 1에 있어서, 상기 방법은
상기 구독자를 전달 리스트(delivery list)로부터 제거하는 단계; 및
상기 구독자를 연기된 전달 리스트에 추가하는 단계를 더 포함하는
방법.
The method of claim 1, wherein the method
Removing the subscriber from a delivery list; And
Adding the subscriber to the deferred delivery list.
Way.
청구항 1 또는 2에 있어서, 상기 방법은
설정가능한 타임아웃에 이르렀는지를 결정하는 단계를 더 포함하는
방법.
The method according to claim 1 or 2, wherein the method
Determining whether a configurable timeout has been reached;
Way.
청구항 3에 있어서, 상기 방법은
상기 설정가능한 타임아웃에 이르렀다고 결정하는 것에 응답하여, 상기 발행된 메시지를 디스크에 기록하는 단계를 더 포함하는
방법.
The method of claim 3, wherein the method
In response to determining that the settable timeout has been reached, recording the issued message to disk.
Way.
청구항 4에 있어서, 상기 방법은
상기 연기된 전달 리스트로부터 상기 구독자를 제거하는 단계를 더 포함하는
방법.
The method of claim 4, wherein the method
Removing the subscriber from the deferred delivery list.
Way.
청구항 3에 있어서, 상기 방법은
상기 설정가능한 타임아웃에 이르지 않았다고 결정하는 것에 응답하여, 상기 구독자가 상기 설정가능한 타임아웃에 이르기 전에 상기 구독자가 액티브하게 기다리고 있을 것인지를 결정하는 단계를 더 포함하는
방법.
The method of claim 3, wherein the method
In response to determining that the settable timeout has not been reached, determining whether the subscriber is actively waiting before reaching the settable timeout.
Way.
청구항 6에 있어서, 상기 방법은
상기 구독자가 액티브하게 기다리고 있지 않을 것이라고 결정하는 것에 응답하여, 상기 발행된 메시지의 연기된 전달을 계속하는 단계를 더 포함하는
방법.
The method of claim 6, wherein the method
In response to determining that the subscriber is not actively waiting, continuing with the deferred delivery of the published message.
Way.
청구항 6에 있어서, 상기 방법은
상기 구독자가 액티브하게 기다리고 있지 않을 것이라고 결정하는 것에 응답하여, 상기 발행된 메시지를 디스크에 기록하는 단계를 더 포함하는
방법.
The method of claim 6, wherein the method
In response to determining that the subscriber is not actively waiting, writing the issued message to disk.
Way.
청구항 6 내지 8 중 어느 한 항에 있어서, 상기 구독자가 액티브하게 기다리고 있을 것인지를 결정하는 단계는, 상기 구독자와 연관된 저장된 메트릭(metric)을 분석하는 단계를 더 포함하는
방법.
The method of claim 6, wherein determining whether the subscriber is actively waiting further comprises analyzing a stored metric associated with the subscriber.
Way.
청구항 9에 있어서, 상기 저장된 메트릭은 평균 메시지 처리 속도를 포함하는
방법.
10. The method of claim 9, wherein the stored metric comprises an average message processing rate.
Way.
청구항 1 또는 2에 있어서, 상기 방법은
상기 발행된 메시지의 전달을 연기하는 단계에 응답하여, 상기 구독자가 액티브하게 기다리고 있는지를 재결정(re-determine)하는 단계; 및
상기 구독자가 액티브하게 기다리고 있다고 결정하는 것에 응답하여, 상기 발행된 메시지를 상기 구독자에게 전달하는 단계를 더 포함하는
방법.
The method according to claim 1 or 2, wherein the method
In response to deferring delivery of the published message, re-determine whether the subscriber is actively waiting; And
In response to determining that the subscriber is actively waiting, delivering the published message to the subscriber;
Way.
메시지를 발행(publish)하기 위한 발행자(publisher)를 포함하고 구독자를 상기 발행된 메시지와 매치시키기 위한 수단을 포함하는 시스템에 사용하기 위한, 발행 작업(publish operation)의 퍼포먼스 최적화를 위한 장치에 있어서,
상기 발행자가 메시지를 발행하는 것에 응답하여, 상기 매치되는 구독자(matching subscriber)가 상기 발행된 메시지를 액티브하게 기다리고 있는지를 결정하기 위한 수단; 및
상기 구독자가 액티브하게 기다리고 있다고 결정하는 것에 응답하여, 상기 발행된 메시지의 전달을 연기하기 위한 수단을 포함하는
장치.
An apparatus for performance optimization of a publish operation, for use in a system comprising a publisher for publishing a message and means for matching subscribers with the published message.
Means for determining, in response to the publisher publishing a message, whether the matching subscriber is actively waiting for the published message; And
Means for delaying delivery of the published message in response to determining that the subscriber is actively waiting;
Device.
컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 컴퓨터 상에서 실행될 때 청구항 1 내지 11 중 어느 한 항에 기재된 방법의 각 단계를 수행하도록 준비되는
컴퓨터 프로그램.
A computer program, wherein the computer program is prepared to perform each step of the method of any one of claims 1 to 11 when executed on a computer.
Computer programs.
KR1020100128168A 2009-12-21 2010-12-15 A method for performance optimisation of publish operation KR20110073279A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP0918015.2 2009-12-21
EP09018015 2009-12-21

Publications (1)

Publication Number Publication Date
KR20110073279A true KR20110073279A (en) 2011-06-29

Family

ID=44404064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100128168A KR20110073279A (en) 2009-12-21 2010-12-15 A method for performance optimisation of publish operation

Country Status (1)

Country Link
KR (1) KR20110073279A (en)

Similar Documents

Publication Publication Date Title
JP6732899B2 (en) System and method for storing message data
US9634848B2 (en) Message broadcasting in a clustered computing environment
US7090749B2 (en) Method and apparatus for simulating application workloads on an e-business application server
JP2018525760A (en) Scalable real-time messaging system
US8024744B2 (en) Method and system for off-loading user queries to a task manager
CN102859961B (en) There is the distributed video transcoding system of adaptive file process
EP2044749B1 (en) Dispatching request fragments from a response aggregating surrogate
JP2018531472A (en) Scalable real-time messaging system
US20170220385A1 (en) Cross-platform workload processing
US8375051B2 (en) Apparatus for controlling subscriptions
US20050210109A1 (en) Load balancing mechanism for publish/subscribe broker messaging system
US20190018709A1 (en) Scheduling of Micro-Service Instances
CN114730305A (en) Controlling transaction requests between an application and a server
US8990332B2 (en) Performance optimization of a publish operation
JP2017191387A (en) Data processing program, data processing method and data processing device
JPWO2008105099A1 (en) Application cooperation control program, application cooperation control method, and application cooperation control apparatus
JP2009123202A (en) Processor-server hybrid system for processing data
CN113742389A (en) Service processing method and device
US10616317B2 (en) Method and system for affinity load balancing
CN107229424B (en) Data writing method for distributed storage system and distributed storage system
KR20110073279A (en) A method for performance optimisation of publish operation
JP2010152435A (en) Information processing apparatus and method, and program
JP2019532399A (en) Data replication in scalable messaging systems
US11210089B2 (en) Vector send operation for message-based communication
CN107465743B (en) Method and device for processing request

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application