KR20190093653A - 이종 이벤트 큐 - Google Patents

이종 이벤트 큐 Download PDF

Info

Publication number
KR20190093653A
KR20190093653A KR1020197020286A KR20197020286A KR20190093653A KR 20190093653 A KR20190093653 A KR 20190093653A KR 1020197020286 A KR1020197020286 A KR 1020197020286A KR 20197020286 A KR20197020286 A KR 20197020286A KR 20190093653 A KR20190093653 A KR 20190093653A
Authority
KR
South Korea
Prior art keywords
event
event message
message
messages
target delivery
Prior art date
Application number
KR1020197020286A
Other languages
English (en)
Other versions
KR102239428B1 (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 KR20190093653A publication Critical patent/KR20190093653A/ko
Application granted granted Critical
Publication of KR102239428B1 publication Critical patent/KR102239428B1/ko

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/542Event management; Broadcasting; Multicasting; Notifications
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨팅 시스템에서 이벤트 메시지의 다수의 종류를 처리하는 단계는 이벤트 메시지와 연관되는 제1 복수의 레코드(222)를 위한 스토리지(220)를 포함하는 데이터 저장 시스템에 수신된 이벤트 메시지를 저장하는 단계를 포함한다. 각각의 이벤트 메시지는 타임스탬프를 포함한다. 이벤트 메시지와 연관되는 레코드(222)는 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드(426)를 포함하며, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 이벤트 메시지의 종류에 따라 결정된다. 저장된 이벤트 메시지는 저장된 이벤트 메시지 내의 정보 및 이벤트 메시지와 연관되는 레코드(222) 내의 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 처리된다. 이벤트 메시지는 우선순위를 표시하는 저장된 정보에 따라 이벤트 결과를 전달하기 위해 우선순위화된다. 타겟 전달 시간은 각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대해 계산된다. 이벤트 결과는 클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대해 전달된다.

Description

이종 이벤트 큐
관련 출원에 대한 상호 참조
본 출원은 2016년 12월 15일에 출원된 미국 특허 일련 번호 제62/434,472호에 대한 우선권을 주장한다.
본 명세서는 이종 특성을 가진 이벤트를 처리하기 위한 이벤트 큐에 관한 것이다.
데이터 처리 시스템은 종종 많은 상이한 종류의 입력 이벤트를 다룬다. 예를 들어 전기통신 도메인에서, 예를 들어 전화 호출의 셋업, 라우팅, 및/또는 티어-다운(tear-down)에 관한 일부 이벤트는 "실시간" 특성을 가질 수 있다. 예를 들어, 호출 레코드 핸들링과 관련되는, 예를 들어 호출 당 한 번 발생하는 일부 이벤트는 "근 실시간"일 수 있다. 예를 들어, 빌링 또는 주기적 유지 작업과 관련되는 다른 이벤트는 덜 빈번할 수 있다. 동시에, 이러한 입력 이벤트는 특정 종류의 이벤트(예를 들어, 근 실시간 이벤트)를 위한 적절한 응답을 제공하는 내내, 처리되어야 하는 대규모 흐름을 구성할 수 있다.
이러한 이종 입력을 다루는 시스템을 디자인하는 하나의 접근법은 이러한 종류의 입력의 상이한 것에 전용인 개별 소프트웨어 및/또는 하드웨어 구조를 가지며, 이에 의해 상이한 종류에 적절한 상이한 타입의 처리를 가능하게 한다. 상이한 타입의 처리의 일부 예는 이벤트가 가능한 한 신속히 처리되어야 하는지, 적절한 비즈니스 로직을 보장하기 위해 발생된 순서로 처리되어야 하는지, 또는 더 높은 우선순위 작업으로부터 계산 자원을 스틸링(steeling)하는 것을 회피하기 위해 낮은 우선순위로 처리되어야 하는지에 따라 다를 수 있다.
예를 들어, 전용 자원의 잠재적인 충분히 이용하지 않음(under-utilization)에서 기인하는 기술적 비용뿐만 아니라, 복합 시스템을 유지하는 인적 비용으로 인해 발생하는 개별 소프트웨어 및/또는 하드웨어 구조를 유지하는 비용이 있다.
일반적 양태에서, 시스템에 대한 이종 이벤트 입력을 다루는 접근법은 통합 큐 구조를 이용하며, 통합 큐 구조는 요구된 응답을 특정 종류의 이벤트(예를 들어, 근 실시간 이벤트)에 제공하는 동안 입력 이벤트의 대규모 흐름을 다룰 수 있다. 큐 구조는 (a) 예를 들어, 상이한 종류 또는 클래스의 이벤트를 상이한 우선순위 레벨과 연관시킴으로써, 이벤트의 우선순위화, (b) 예를 들어 이벤트의 종류 또는 클래스에 따라 달라질 수 있는 규칙-기반 전달-시간 계산에 따른, 이벤트의 연기된 전달, 및 (c) 예를 들어, 이벤트 내의 키 값에 의해 선택적으로 제약되는 시초 시간에 따른, 이벤트의 재순서화의 다수의 특징을 포함하는, 특징의 조합을 포함한다. 이러한 특징 중 하나 이상을 지원하기 위해, 큐 구조는 저장되는 이벤트의 종류로부터의 규칙에 의해 결정되는 우선순위 및/또는 연기된 전달 시간 값을 포함하거나 언급하는 필드(예를 들어, 열(column))를 가진 이벤트(예를 들어, ta 테이블)에 대한 레코드를 위한 스토리지를 포함한다. 스토리지의 이러한 배열은 종래의 접근법에 의해(예를 들어, 각각의 종류의 메시지에 대한 개별 큐를 사용하는 것에 의해) 가능한 것보다 스토리지의 더 적은 동작 및/또는 더 효과적인 사용을 필요로 하는 방식으로 이벤트를 처리하는 방법을 제공한다. 더욱이, 접근법은 시스템을 구성할 시에, 예를 들어, 새로운 종류의 이벤트가 처리되어야 할 때, 그러한 종류의 이벤트에 대한 새로운 큐가 시스템으로 도입되도록 요구되지 않기 때문에, 더 많은 유연성을 허용한다.
일부 예에서, 이러한 통합된 큐 구조는 이벤트 처리 시스템에 대한 입력으로서 사용되며, 이벤트 처리 시스템은 적어도 일부 종류의 이벤트에 대한 근 실시간 수행을 유지하는 동안 이벤트의 대규모 흐름을 처리하도록 구성될 수 있다. 선택된 특징(예를 들어, 상기 (a) 내지 (c))의 사용을 통해, 큐 구조는 계산 자원의 높은 이용을 유지하는 동안, 매우 다양한 종류의 이벤트의 효율적인 처리를 제공함으로써 이벤트 처리 기술을 개선한다. 처리에서의 개선은 큐 구조에 의해 도입되는 기능성 및 연관된 절차적 단계에 기인하는 것으로, 단순히 컴퓨터들이 그것의 통상 능력으로 사용되는 작업에서의 컴퓨터에 의해 수행되는 덕분은 아니라는 점을 주목한다. 더욱이, 접근법은 이벤트를 종래에 조직화하고 처리하는 사람이, 처리되는 이벤트의 흐름을 다루기 위해 충분한 능력을 가져야 하는 방식의 단순화 자동화가 아니다.
하나의 특정 양태에서, 일반적으로, 방법은 컴퓨팅 시스템에서 이벤트 메시지를 처리하는 것에 적용된다. 방법은 데이터 저장 시스템에 수신된 이벤트 메시지를 저장하는 단계를 포함한다. 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 여기서 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 이벤트 메시지의 종류에 따라 결정된다. 저장된 이벤트 메시지는 저장된 이벤트 메시지 내의 정보 및 이벤트 메시지와 연관되는 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 처리된다. 이러한 처리는 우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계, 각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및 클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함한다.
양태는 이하의 특징 중 하나 이상을 포함할 수 있다.
처리는 그러한 이벤트 메시지가 수신된 순서에 따라 이벤트 메시지의 제2 세트 내의 이벤트 메시지를 처리하는 대신에 이벤트 메시지 내의 타임스탬프에 따라 이벤트 메시지의 제2 세트 내의 이벤트 메시지를 처리하기 위해 저장된 이벤트 메시지의 모두보다 적은 이벤트 메시지를 포함하는 이벤트 메시지의 제2 세트를 재순서화하는 단계를 추가로 포함한다.
특정 이벤트 메시지와 연관되는 타겟 전달 시간은 특정 이벤트 메시지가 특정 이벤트 메시지에 포함되는 정보에 의해 적어도 부분적으로 정의되는 함수를 사용하여 수신된 후에 계산된다. 예를 들어, 제1 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 함수는 클록 시간에 기초하는 타겟 전달 시간을 리턴시킨다.
제1 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있지 않고, 그러한 이벤트 메시지가 수신된 순서에 따라 처리된다.
제1 이벤트 클래스보다 더 낮은 우선순위의 제2 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 함수는 고정된 지연 및 이벤트 메시지 내의 타임스탬프의 합인 타겟 전달 시간을 리턴시킨다.
제2 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있고, 제2 클래스와 연관되는 이벤트 메시지에 저장되는 타임스탬프에 따라 재순서화된다.
제2 이벤트 클래스보다 더 낮은 우선순위의 제3 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 함수는 이벤트 메시지에 저장되는 타임스탬프에 기초하는 타겟 전달 시간을 리턴시킨다.
제3 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있고, 제3 클래스와 연관되는 이벤트 메시지에 저장되는 타임스탬프에 따라 재순서화된다.
제2 이벤트 클래스보다 더 낮은 우선순위의 제3 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 함수는 반복 스케줄에 기초하는 타겟 전달 시간을 리턴시킨다.
제2 세트는 공통 키 값을 모두 포함하는 이벤트 메시지를 포함한다.
이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계는 상이한 각각의 순서화된 큐에 상이한 우선순위의 이벤트 클래스와 연관되는 이벤트 메시지를 저장하는 단계, 및 비어 있지 않은 가장 높은 우선순위의 순서화된 큐의 전면으로부터 이벤트 결과의 잠재적 전달을 평가하기 위해 다음 이벤트 메시지를 선택하는 단계를 포함한다.
다른 양태에서, 일반적으로, 컴퓨팅 시스템에서 이벤트 메시지를 처리하기 위한 소프트웨어는 컴퓨터 판독 가능 매체 상에 비-일시적 형태로 저장된다. 소프트웨어는 컴퓨팅 시스템으로 하여금 데이터 저장 시스템에 수신된 이벤트 메시지를 저장하게 하고, 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 여기서 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 이벤트 메시지의 종류에 따라 결정되고; 저장된 이벤트 메시지 내의 정보 및 이벤트 메시지와 연관되는 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 저장된 이벤트 메시지를 처리하게 하기 위한 명령어를 포함하며, 처리는 우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계, 각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및 클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함한다.
다른 양태에서, 일반적으로, 이벤트 메시지를 처리하기 위한 컴퓨팅 시스템으로서, 컴퓨팅 시스템은 수신된 이벤트 메시지를 저장하기 위한 데이터 저장 시스템으로서, 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 여기서 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 이벤트 메시지의 종류에 따라 결정되는 데이터 저장 시스템; 및 저장된 이벤트 메시지 내의 정보 및 이벤트 메시지와 연관되는 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 저장된 이벤트 메시지를 처리하도록 구성되는 적어도 하나의 프로세서를 포함하며, 처리는 우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계, 각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및 클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함한다.
양태는 이하의 장점 중 하나 이상을 포함할 수 있다.
단일 큐 구조에서 우선순위 및 전달 시간 또는 지연 요건과 관련되는 실질적으로 상이한 특성을 가진 이벤트(즉, 이종 세트의 이벤트)를 처리하는 것은 각각의 타입의 이벤트를 위한 개별 큐에 대한 요구를 회피한다. 더욱이, 큐로부터 출력되는 처리 이벤트가 공유 자원(예를 들어, 계산 자원)을 소비할 때, 이벤트를 디큐잉하는(dequeuing) 순서 및 시간은 공유 자원의 사용을 스케줄링, 할당, 및/또는 우선순위화하는 역할을 한다. 예를 들어, 지연 둔감 이벤트(예를 들어, "배치(batch)" 처리 이벤트)는 이벤트를 처리할 필요가 있는 공유 자원의 높은 이용을 유지하는 동안 낮은 레이턴시(예를 들어, "실시간" 이벤트)와 동일한 큐에서 처리될 수 있다.
발명의 다른 특징 및 장점은 이하의 설명, 및 청구항으로부터 분명해질 것이다.
도 1은 입력 이벤트의 이종 세트를 수신하는 이벤트 큐를 포함하고, 이러한 이벤트를 이벤트 처리 엔진에 제공하는 이벤트 처리 시스템의 블록도이다.
도 2는 도 1의 이벤트 큐의 일 구현예의 블록도이다.
도 3은 도 2에 도시된 이벤트 큐의 입력 프로세서의 일 예에 의해 구현되는 규칙을 나타내는 표이다.
도 4는 분산된 이벤트 큐를 이용하는 분산된 이벤트 처리 시스템의 블록도이다.
도 5a 내지 도 5h는 일련의 이벤트의 처리를 도시하는 도 2에 대응하는 블록도이다.
도 6은 도 2에 예시된 이벤트 큐의 처리의 다양한 스테이지에서 이벤트 데이터 구조를 예시하는 도해이다.
도 1은 한 세트의 이벤트 소스(112)가 시스템에 의해 처리되는 이벤트를 제공(예를 들어, 생성)하는 데이터 처리 시스템(100)의 일 예를 도시한다. 시스템(100)에서, 생성된 이벤트는 이벤트 큐(110)에 제공되며, 이벤트 큐는 소스(112)로부터 상이한 종류의 이벤트를 수락한다. 예를 들어, 각각의 이벤트 소스(112)는 상이한 종류의 이벤트를 제공할 수 있거나, 특정 소스는 다수의 종류의 이벤트를 각각 제공할 수 있다. 임의의 경우에, 이벤트 큐(110)는 상이한 종류의 이벤트를 처리하고, 이벤트 처리 환경(120)에 의한 처리를 위해 그것을 제공한다. 상기 소개된 바와 같이, 전기통신 예에서, 하나의 이벤트 소스(112)는 호출 셋업, 라우팅, 및 티어-다운과 관련되는 실시간 이벤트를 제공할 수 있는 반면에, 다른 이벤트 소스(112)는 호출 레코드 이벤트를 제공할 수 있는 한편, 또 다른 이벤트 소스(112)는 빌링 이벤트를 제공할 수 있으며, 이 이벤트는 실시간 이벤트보다 훨씬 더 낮은 우선순위 및 지연 요건을 갖는다.
도 2를 참조하면, 도 1의 이벤트 큐(110)의 일 구현은 내부에서 일반적으로 제1 스테이지(244) 및 제2 스테이지(245)로서 표현되는, 처리의 2개의 스테이지를 이용한다. 처리의 제1 스테이지(244)에서, 입력 프로세서(210)는 이벤트(212)를, 예를 들어, 이벤트 소스로부터의 통신 링크 상의 데이터 레코드로서, 또는 이벤트 큐의 객체 지향 소프트웨어 구현의 경우에 입력 방법에 대한 호출 내의 파라미터로서 수신한다. 상기 소개된 바와 같이, 이러한 이벤트는 다수의 상이한 소스(112)에서 나올 수 있고, 각각의 소스는 동종인 이벤트(212)(즉, 동일한 타입의 모두)를 제공할 수 있거나 이종인 이벤트(즉, 다양한 타입의 이벤트)를 제공할 수 있다. 도 2에서, 상이한 타입의 이벤트는 상이한 크로스 해칭으로 도시되어, 이벤트(212a)는 이벤트(212b)와 상이한 타입이다.
아래에 보다 완전히 논의되는 바와 같이, 이벤트는 전형적으로 이벤트가 발생된 시간을 나타내는 타임스탬프를 포함한다. 이벤트는 또한 특정 맥락에서 "메시지" 또는 "레코드"로 언급될 수 있으며, 용어 "이벤트"는 데이터 표현 내의 타임 스탬프의 제시를 고려하여 사용된다. 일반적으로, 처리의 제1 스테이지에서, 이벤트의 추종은 직접적 경로(화살표(230)로 예시됨), 또는 연기된 경로(화살표(232)에 의해 예시됨)를 뒤따를 수 있다. 연기된 경로에서, 특정 이벤트는 입력 프로세서에 의한 연기된 전달에 적절한 것으로 식별되며, 이 프로세서는 전달 시간이 경과한 후까지 이벤트가 이벤트 큐(110)로부터 전달되지 않도록 전달 시간을 각각의 그러한 이벤트에 할당한다. 아직 도달되지 않았던 전달 시간을 할당받았던 이벤트(222)는 "지연 큐"로 언급되는 큐(220)에 유지된다. 일 구현에서, 큐(220) 내의 이벤트는 가장 빠른 전달 시간을 가진 이벤트(222)가 큐의 선두에 있도록 분류된다. 이러한 지연 큐는 다수의 이벤트(220)를 유지할 수 있고, 연기된 전달을 견디는 이러한 이벤트의 성질은 전달 시간에 따른 분류와 같은 단계를 위한 시간을 제공한다. 지연 프로세서(230)는 클록(250)을 이용하며, 클록은 시간 레퍼런스를 입력 프로세서(210) 및 지연 프로세서 둘 다에 제공하고, 그것은 클록(250)에 의해 제공되는 시간이 지연 큐의 선두에서 이벤트의 할당된 전달 시간 이후이기 때문에 지연 큐로부터 이벤트(222)를 디큐잉할 때를 결정한다. 예시로서, 입력 프로세서에 의해 수신되는 2개의 입력 이벤트(212b)는 지연 큐 내의 이벤트(222b)로서 큐잉되었던 것으로 도시되며, 여기서 그것의 전달 시간이 큐에서 가장 빠르기 때문에 큐의 선두에 예시된다.
이벤트 큐(110)의 제2 스테이지(245)는 우선순위 큐(245)를 이용한다. 일 구현에서, 우선순위의 별개의 세트의 각각의 우선순위(가장 높은 우선순위(A) 내지 가장 낮은 우선순위(Z)로 예시됨)는 한 세트의 큐(240A 내지 Z)의 개별 큐를 갖는다. 입력 프로세서(210)는 이벤트가 연기된 전달에 적절하지 않은 것을 결정한 경우에, 예를 들어 경로(230) 상에 이벤트(212a)로서 예시되는 이벤트는 직접적 경로(230)에 의해 이러한 제2 스테이지에 진입한다. 입력 프로세서(210)로부터 연기된 경로(232)를 통해 전달되고, 지연 큐(220)에서 큐잉되는 이벤트에 대해, 이러한 구현에서, 지연 프로세서(230)는 이벤트의 우선순위에 기초하여 전달 시간이 적절한 큐(240A 내지 Z)로 경과했던 각각의 이벤트(242)를 인큐잉한다. 예를 들어, 입력 이벤트(212b) 및 큐잉된 이벤트(222b)에 대응하는 이벤트(242b)는 큐(240B)에 전달되는 것으로 예시된다. 우선순위 프로세서(250)는 임의의 보류 이벤트(242)를 갖는 가장 높은 우선순위 큐를 선택함으로써 큐(240A 내지 Z)로부터 이벤트(242)를 디큐잉하고, 그러한 큐의 선두에서 이벤트를 디큐잉한다. 이벤트 결과로 언급될 수 있는, 이벤트 큐(110)의 출력은 이벤트가 통과되는 통신 링크일 수 있다. 객체 지향 구현에서, 큐(240A 내지 Z)로부터 이벤트를 디큐잉하는 프로세스는 이벤트 큐 객체의 출력 방법의 실행 동안 수행될 수 있다. 일부 구현에서, 지연 프로세서에 의한 처리는 또한 이벤트 큐의 객체 지향 구현의 출력 방법의 실행의 일부로서 수행될 수 있거나, 지연 큐(220)의 이벤트(222)를 분류하고, 경과된 전달 시간을 가진 그러한 이벤트(222)를 그의 우선순위에 기초하여 적절한 큐(240A 내지 Z)에 전달하는 주기적 타이머 "인터럽트"에 기초하여 구현될 수 있다.
상기 소개된 바와 같이, 입력 프로세서(210)에 의해 수락되는 특정 이벤트(212)는 임의의 지연 또는 연기된 전달을 요구하지 않거나 임의의 지연 또는 연기된 전달에 적절하지 않다. 이러한 이벤트는 입력 프로세서에 의해 결정되는 우선순위에 따라 입력 프로세서(210)에 의해 직접적 경로(230)를 통해 적절한 큐(240A 내지 Z)에 직접 전달된다.
도 3을 참조하면, 한 세트의 클래스와, 예를 들어 타임스탬프(ts로 표시됨)에 따라, 우선순위(pri로 표시됨) 및 전달 시간(dt로 표시됨)을 할당하기 위한 규칙의 일 예가 표에 표시되어 있다. 이러한 예에서, "실시간"으로 칭해지는, 이벤트의 제1 클래스는 가장 높은 우선순위(A)를 할당 받는다. 전달 시간은 현재 시간(now())에 할당되며, 그것은 이러한 클래스로부터의 이벤트에 대한 추가의 지연이 없는 것을 의미한다. 도 2를 다시 참조하면, 입력 프로세서(210)는 이러한 이벤트를 우선순위 큐(245)의 가장 높은 우선순위 큐(240A)에 직접 전달한다. 제2 클래스, "근 실시간"은 두 번째로 높은 우선순위(B)를 할당 받는다. 이러한 클래스의 이벤트의 특징은 그의 타임스탬프와 상이한 순서로 도달할 수 있다는 것이지만, 순서대로 도달하는 것이 바람직하다. 이러한 이벤트의 비순차적 도달을 처리하는 방식은 입력 프로세서(210)가 타임스탬프와, 타임스탬프와 이벤트의 도달 시간(클록(260)에 따름) 사이의 가장 긴 전형적 지연(델타로 표시됨)을 더한 전달 시간을 할당하는 것이다(즉, dt = ts + 델타). 이러한 방식으로, 이벤트 큐에 도달되는 데 델타보다 더 적게 걸리는 이러한 근 실시간 클래스의 이벤트는 우선순위 큐(245)로, 그리고 다음에 이벤트 큐(110)로부터, 그의 타임스탬프의 순서로 전달될 것이다. 일부 이벤트가 이벤트 큐(110)에 도달하기 전에 델타보다 많게 지연되면, 그것은 이벤트 큐(110)로부터 ts 순서로 전달되지 않을 수 있고, 따라서 이러한 접근법은 비순차적 도달의 경우의 대부분을 처리하지만 이벤트 큐로부터 순차적 출력을 절대적으로 보장하지 않는다는 점을 주목한다. 그러나, 이러한 순차적 출력은 입력 지연이 그러한 클래스에서 모든 이벤트의 상응하는 지연을 야기하는 것 없이 매우 클 수 있는 경우 보장될 수 없다.
도 3에서, 3개의 다른 클래스는 또한 연기된 전달을 요구하지 않는 것으로서 도시되며, 각각은 상이한 우선순위를 갖는다. 이러한 클래스는 우선순위(C)에서의 "근 실시간(NRT) 알람", 우선순위(D)에서의 "배치 알람", 및 우선순위(Z)에서의 "스케줄링되지 않은 배치"이다. 입력 프로세서(210)는 지연 큐(220)를 통과하는 것 없이 이러한 이벤트를 우선순위 큐(245)에 직접 전달한다.
최종적으로, "스케줄링된 배치" 큐는 우선순위(E)를 갖지만, 처리 시간(next_window()), 예를 들어, 현재 시간 후의 다음 자정까지 연기된다. 이러한 클래스의 이벤트는 그러한 전달 시간이 경과할 때까지 지연 큐(220)에서 유지되고, 그 다음 지연 프로세서(230)에 의해 우선순위 큐(245)의 큐(240E)에 전달된다.
도 4를 참조하면, 이벤트 큐를 통과하는 이벤트의 구조의 하나의 가능한 세트가 예시된다. 이러한 예에서, 이벤트 큐(110)에 대한 각각의 입력 이벤트(212)는 한 세트의 필드를 갖는다: 메시지(412)는, 예를 들어 메시지를 표현하는 한 세트의 필드 그 자체를 갖는, 이벤트의 "페이로드"; 아래에 보다 완전히 설명되는 특정 재순서화 동작에 대해 특히 처리되는, 메시지의 필드 중 하나로 간주될 수 있는 (413); 예를 들어 지정 "실시간"을 표현하는, cls(414)로 표시되는 클래스 등; 및 이벤트의 소스에 의해 할당되는 이벤트에 대한 타임스탬프(ts(415))를 유지한다. 입력 프로세서(210)가 입력 이벤트(212)를 수신할 때, 그것은 구조(222)를 형성하기 위해 이벤트를 증대시킨다. 특히, 입력 프로세서는, 예를 들어 도 3에 예시된 규칙에 따라, 전달 시간(dt(426)), 및 우선순위(pri(427))를 추가한다. 이벤트가 지연 프로세서에 의해 지연 큐(220)로부터 디큐잉된 후에, 이벤트(242)는 우선순위 큐에 배치된다. 우선순위(pri(427)), 및 전달 시간(dt(426))은 이벤트가 배치되는 큐(240A 내지 Z)에 의해 우선순위가 내포되고, 전달 시간이 이미 전달되었던 것으로 보장되기 때문에 생략될 수 있다.
큐(240A 내지 Z) 내의 이벤트(242)의 선택적 처리에서, 메시지는 다수의 제약에 따라 추가로 재순서화될 수 있다. 하나의 제약은 클래스에 대한 이벤트가 재순서화되도록 허가된다는 것이다. 예를 들어, 입력 프로세서(210)를 위한 도 3에 도시된 규칙은 "실시간" 클래스가 재순서화되지 않을 수 있는 반면에(re=F), 클래스 "근 실시간"이 재순서화될 수 있는 것(re=T)을 표시할 수 있다. 일부 구현예에서, 재순서화는 특정 큐(240B라고 함) 내의 이벤트가 임의의 순서로 전달될 수 있다는 요건을 겪어서, 의 동일한 값을 가진 이벤트가 미리 규정된 순서로(예를 들어, ts 순서로, 또는 그것이 이벤트 큐(110)에 도달한 순서로) 남아 있어야 한다는 요건을 겪을 수 있다. 어느 re=F를 위한 클래스에 대한 하나의 선택적 구현은 우선순위 프로세서(250)가 가장 낮은 ts를 갖는 이벤트를 취하고 동일한 ts를 가진 더 빠르게 전달된 이벤트를 취하지 않기 위한 것이다. 어느 re=T를 위한 클래스에 대한 하나의 선택적 구현은 우선순위 프로세서(250)가 가장 빠른 ts를 가진 이벤트를 각각의 큐(240A 내지 Z) 전체에 전달하기 위한 것이다.
도 5a 내지 도 5h를 참조하면, 도 2에 대응하는 일 구현예의 동작은 이벤트 큐(110)를 통한 일련의 입력 이벤트(212-1 내지 212-5)의 통과를 도시하는 것으로 예시된다. 도 5a를 참조하면, 이벤트(242-0 및 242-10)는 큐(240C 및 240D)에서 각각 큐잉되고, 이벤트(212-1)는 입력 프로세서(210)에 의해 막 처리되려고 한다. 도 5b에서, 이벤트(242-0)는 우선순위 프로세서(250)에 의해 디큐잉되었고, 입력 이벤트(212-1)(즉, 이벤트(212-1)의 콘텐츠에 더하여 전달 시간 필드 및 우선순위 필드를 포함함)에 대응하는 이벤트(222-1)는 이벤트(212-1)가 연기된 경로를 통해 처리될 수 있는 것을 입력 프로세서가 결정한 후에 지연 큐(220)에서 큐잉되었다. 이벤트(222-1)는 입력 프로세서에 의해 계산되는 전달 시간을 포함하고, 이러한 이벤트(222-1)는 그러한 시간이 지났을 때까지 지연 큐(220)에 남아 있을 것이다. 2개의 새로운 이벤트(212-2 및 212-3)는 도 5b에서 입력 프로세서(210)에 의해 막 처리되려고 한다. 도 5c에서, 입력 이벤트(212-2 및 212-3)는 입력 프로세서(210)에 의해 처리되었다. 이러한 예시에서, 이벤트(212-2)는 즉시 처리를 요구하는 바와 같이 입력 프로세서에 의해 결정되고, 따라서 직접적 경로를 통해 큐(240A)(이벤트(242-2)와 같음)에서 큐잉된다. 다른 한편, 이벤트(212-3)는 이러한 이벤트가 연기된 전달에 적절한 것을 입력 프로세서가 결정했기 때문에 지연 큐(220) 내의 이벤트(222-3)로서 큐잉되며, 다시 전달 시간은 이벤트(223-3)에서 표시된다. 이러한 예시에서, 이벤트(222-3)의 전달 시간은 이벤트(222-1)의 것보다 더 늦고, 따라서 이벤트(222-3)는 나중에 디큐잉될 것이기 때문에 지연 큐에서 나중에 유지된다. 도 5c에서, 이벤트(214-4)는 입력 프로세서(210)에 의해 막 처리되려고 하는 것으로 예시된다. 도 5d에서, 이벤트(242-2)는 우선순위 프로세서(250)에 의해 디큐잉되었던 것으로 도시되고 입력 이벤트(212-4)는 지연 큐 내의 이벤트(222-4)로서 큐잉된 것으로 도시된다. 이러한 예시에서, 이벤트(222-4)의 전달 시간은 이벤트(222-1)의 것 후 그리고 이벤트(222-3)의 것 전인 것으로 가정되고, 따라서 이벤트(222-1. 222-4, 및 222-3)는 지연 큐(220)에서 그것의 전달 시간에 따라 순서화된다. 도 5e에서, 이벤트(222-1)의 전달 시간은 지나갔고, 지연 프로세서(230)는 큐(240B) 내의 대응하는 이벤트(242-1)를 큐잉했다. 입력 프로세서(210)는 또한 입력 이벤트(212-5)를 이벤트(242-5)로서 큐(240A)에 직접 전달했다. 도 5f에서, 우선순위 프로세서는 디큐잉된 이벤트(242-5)를 갖고 이벤트(222-4 및 222-3) 둘 다의 전달 시간은 지나갔기 때문에, 지연 프로세서는 큐(240B 및 240D) 내의 대응하는 이벤트(242-4 및 242-3)를 각각 큐잉했다. 도 5g에서, 우선순위 프로세서(250)는 디큐잉된 이벤트(242-1)(즉, 보류 이벤트를 가진 가장 높은 우선순위 큐의 헤드 이벤트)를 갖는다. 도 5h에서, 우선순위 프로세서(250)는 우선순위 프로세서에 의한 나중의 디큐잉을 위해 낮은 우선순위 이벤트(242-10 및 242-3)를 남기고 디큐잉된 이벤트(242-4)를 갖는다. 전형적으로 실제 동작에서, 훨씬 더 큰 수의 이벤트가 이러한 큐에서 발견되고, 우선순위 큐(240A 내지 D)가 일반적으로 다수의 보류 이벤트를 가질 것이라는 점이 이해되어야 한다.
상기 설명은 단일 이벤트 큐(110)에 초점을 맞춘다. 분산된 이벤트 큐(510)는 도 6에 도시된다. 분산된 큐(510)는 도 2에 도시된 이벤트 큐(110)의 구조를 각각 갖는 다수의 카피(511)를 포함한다. 이러한 예에서, 분산된 이벤트 큐에 입력되는 이벤트는 상기 설명된 에 따라 분할된다. 이러한 방식으로, 클래스는 특정 값에 대한 이벤트가 순번으로 남아 있는 것을 요구하면, 그러한 제약은 각각의 이벤트 큐 카피(511)에서 개별적으로 적용될 수 있다.
일 구현에서, 상기 설명된 이벤트 큐(100)의 일 구현은 "EXECUTING GRAPH-BASED PROGRAM SPECIFICATIONS"인 미국 특허 공개 제2016/0062776호에 설명되는 시스템과 함께 사용되며, 이 미국 특허는 본원에 참조로 포함된다. 예를 들어, 이벤트 큐(100)는 실행될 수 있는 작업의 "실행 가능 큐"를 구현하기 위해 사용될 수 있거나, 예를 들어, 비순서화된 집합의 흐름을 지원하기 위한 링크 버퍼를 구현할 수 있다. 일부 구현에서, 이벤트(100)는 상기 참조된 공개에 설명된 바와 같은 런타임 시스템에 대한 스케줄링 및 우선순위화 기능을 형성하며 이에 의해 상이한 계산 그래프의 실행 가능 작업은 단일 이벤트 큐에서 조합되고, 이벤트 큐에 의해 부과되는 우선순위화 및 스케줄링은 우선순위화 및 스케줄링에 따라, 계산의 특정 실행 인스턴스에서, 계산 자원을 효과적으로 할당한다. 이러한 방식으로, 다수의 그래프는 런타임 시스템에 공존할 수 있으며, 자원은 더 높은 우선순위 또는 더 많은 지연 민감 이벤트에 우선적으로 적용되고, 다른 이벤트는 이용 가능할 때 더 많은 "배경" 자원을 소비한다.
상기 설명된 접근법은, 예를 들어 적절한 소프트웨어 명령어를 실행하는 프로그램 가능 컴퓨팅 시스템을 사용하여 구현될 수 있거나 이는 적절한 하드웨어 예컨대 필드 프로그램 가능 게이트 어레이(FPGA) 또는 일부 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그래밍된 접근법에서, 소프트웨어는 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및/또는 비-휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하고, 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 제공하기 위함)를 각각 포함하는 하나 이상의 프로그래밍된 또는 프로그램 가능 컴퓨팅 시스템(다양한 아키텍처 예컨대 분산된, 클라이언트/서버, 또는 그리드일 수 있음) 상에 실행하는 하나 이상의 컴퓨터 프로그램에서의 절차를 포함할 수 있다. 소프트웨어는, 예를 들어 데이터흐름 그래프의 디자인, 구성, 및 실행과 관련되는 서비스를 제공하는, 더 큰 프로그램의 하나 이상의 모듈을 포함할 수 있다. 프로그램의 모듈(예를 들어, 데이터흐름 그래프의 요소)은 데이터 저장소에 저장되는 데이터 모델에 따르는 데이터 구조 또는 다른 조직화된 데이터로서 구현될 수 있다.
소프트웨어는 시간 기간(예를 들어, 동적 RAM과 같은 동적 메모리 디바이스의 재생 기간 사이의 시간) 동안 매체의 물리적 성질(예를 들어, 표면 피트(surface pit) 및 랜드, 자기 도메인, 또는 전기 전하)을 사용하여, 휘발성 또는 비-휘발성 저장 매체, 또는 임의의 다른 비-일시적 매체에 구체화되는 것과 같이, 비-일시적 형태로 저장될 수 있다. 명령어를 로딩하기 위한 준비에서, 소프트웨어는 유형의, 비-일시적 매체, 예컨대 CD-ROM 또는 다른 컴퓨터 판독 가능 매체(예를 들어, 일반 또는 특수 목적 컴퓨팅 시스템 또는 디바이스에 의해 판독 가능함) 상에 제공될 수 있거나 네트워크의 통신 매체를 통해 그것이 실행되는 컴퓨팅 시스템의 유형의, 비-일시적 매체에 전달(예를 들어, 전파된 신호로 인코딩)될 수 있다. 처리의 일부 또는 전부는 특수 목적 컴퓨터 상에, 또는 특수 목적 하드웨어, 예컨대 코프로세서 또는 필드 프로그램 가능 게이트 어레이(FPGA) 또는 전용, 주문형 집적 회로(ASIC)를 사용하여 수행될 수 있다. 처리는 소프트웨어에 의해 지정되는 계산의 상이한 부분이 상이한 컴퓨팅 요소에 의해 수행되는 분산 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은 저장 디바이스 매체가 본원에 설명되는 처리를 수행하기 위해 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 동작시키기 위해, 일반 또는 특수 목적 프로그램 가능 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터 판독 가능 저장 매체(예를 들어, 고체 상태 메모리 또는 매체, 또는 자기 또는 광 매체) 상에 저장되거나 이 저장 매체에 다운로드되는 것이 바람직하다. 발명 시스템은 또한 컴퓨터 프로그램을 가지고 구성되는 유형의, 비-일시적 매체로서 구현되는 것으로 간주될 수 있으며, 그렇게 구성되는 매체는 컴퓨터로 하여금 본원에 설명되는 처리 단계 중 하나 이상을 수행하기 위해 구체적이고 미리 정의된 방식으로 동작하게 한다.
기계 언어 명령어, 가상 기계 명령어, 상위 레벨 프로그래밍 명령어 및/또는 컴파일링된 또는 해석된 명령어를 포함하는, 명령어는 상이한 레벨에 있을 수 있다. 일부 구현에서, 기능의 일부는 특수 목적 하드웨어로 전적으로 또는 부분적으로 구현될 수 있다. 예를 들어, 도 2에 도시된 다양한 큐는 전용 하드웨어를 가질 수 있으며, 이 하드웨어는 효율을 증가시키고 구현되는 큐잉 접근법의 레이턴시를 감소시킬 수 있다. 일부 구현은 소프트웨어 및 특수 목적 하드웨어 구성요소의 조합을 사용한다.
발명의 다수의 구현예가 설명되었다. 그렇기는 하나, 상술한 설명은 이하의 청구항의 범위에 의해 정의되는 발명의 범위를 예시하도록 의도되고, 범위를 제한하도록은 의도되지 않는다는 점이 이해되어야 한다. 따라서, 다른 구현예는 또한 이하의 청구항의 범위 내에 있다. 예를 들어, 다양한 수정은 발명의 범위로부터 벗어나는 것 없이 이루어질 수 있다. 부가적으로, 상기 설명된 단계의 일부는 순서 독립적일 수 있고, 따라서 설명된 것과 상이한 순서로 수행될 수 있다.

Claims (14)

  1. 컴퓨팅 시스템에서 이벤트 메시지의 다수의 종류를 처리하기 위한 방법으로서, 상기 방법은,
    데이터 저장 시스템에 수신된 이벤트 메시지를 저장하는 단계로서, 상기 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 상기 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 상기 이벤트 메시지의 종류에 따라 결정되는 단계; 및
    상기 저장된 이벤트 메시지 내의 정보 및 상기 이벤트 메시지와 연관되는 레코드 내의 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 상기 저장된 이벤트 메시지를 처리하는 단계를 포함하며, 상기 처리는,
    우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계,
    각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 상기 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및
    클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 처리는 이벤트 메시지가 수신된 순서에 따라 이벤트 메시지의 제2 세트 내의 이벤트 메시지를 처리하는 대신에 상기 이벤트 메시지 내의 타임스탬프에 따라 상기 이벤트 메시지의 제2 세트 내의 이벤트 메시지를 처리하기 위해 상기 저장된 이벤트 메시지의 모두보다 더 적게 포함하는 이벤트 메시지의 제2 세트를 재순서화하는 단계를 추가로 포함하는, 방법.
  3. 제2항에 있어서, 특정 이벤트 메시지와 연관되는 타겟 전달 시간은 상기 특정 이벤트 메시지가 상기 특정 이벤트 메시지에 포함되는 정보에 의해 적어도 부분적으로 정의되는 함수를 사용하여 수신된 후에 계산되는, 방법.
  4. 제3항에 있어서, 제1 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 상기 함수는 상기 클록 시간에 기초하는 타겟 전달 시간을 리턴시키는, 방법.
  5. 제4항에 있어서, 상기 제1 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있지 않고, 그러한 이벤트 메시지가 수신된 순서에 따라 처리되는, 방법.
  6. 제4항에 있어서, 상기 제1 이벤트 클래스보다 더 낮은 우선순위의 제2 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 상기 함수는 상기 고정된 지연 및 상기 이벤트 메시지 내의 타임스탬프의 합인 타겟 전달 시간을 리턴시키는, 방법.
  7. 제6항에 있어서, 상기 제2 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있고, 상기 제2 클래스와 연관되는 이벤트 메시지에 저장되는 타임스탬프에 따라 재순서화되는, 방법.
  8. 제6항에 있어서, 상기 제2 이벤트 클래스보다 더 낮은 우선순위의 제3 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 상기 함수는 상기 이벤트 메시지에 저장되는 타임스탬프에 기초하는 타겟 전달 시간을 리턴시키는, 방법.
  9. 제8항에 있어서, 상기 제3 이벤트 클래스와 연관되는 이벤트 메시지는 재순서화되는 제2 세트에 있고, 상기 제3 클래스와 연관되는 이벤트 메시지에 저장되는 타임스탬프에 따라 재순서화되는, 방법.
  10. 제6항에 있어서, 상기 제2 이벤트 클래스보다 더 낮은 우선순위의 제3 이벤트 클래스와 연관되는 이벤트 메시지에 대해, 상기 함수는 반복 스케줄에 기초하는 타겟 전달 시간을 리턴시키는, 방법.
  11. 제2항에 있어서, 상기 제2 세트는 공통 키 값을 모두 포함하는 이벤트 메시지를 포함하는, 방법.
  12. 제1항에 있어서, 상기 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계는 상이한 각각의 순서화된 큐에 상이한 우선순위의 이벤트 클래스와 연관되는 이벤트 메시지를 저장하는 단계, 및 비어 있지 않은 가장 높은 우선순위의 순서화된 큐의 전면으로부터 이벤트 결과의 잠재적 전달을 평가하기 위해 다음 이벤트 메시지를 선택하는 단계를 포함하는, 방법.
  13. 컴퓨팅 시스템에서 이벤트 메시지를 처리하기 위한, 컴퓨터 판독 가능 매체 상에 비-일시적 형태로 저장되는 소프트웨어로서, 상기 소프트웨어는 상기 컴퓨팅 시스템으로 하여금,
    데이터 저장 시스템에 수신된 이벤트 메시지를 저장하게 하고, 상기 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 상기 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 상기 이벤트 메시지의 종류에 따라 결정되고;
    상기 저장된 이벤트 메시지 내의 정보 및 상기 이벤트 메시지와 연관되는 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 상기 저장된 이벤트 메시지를 처리하게 하기 위한 명령어를 포함하며, 상기 처리는,
    우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계,
    각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 상기 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및
    클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함하는, 소프트웨어.
  14. 이벤트 메시지를 처리하기 위한 컴퓨팅 시스템으로서, 상기 컴퓨팅 시스템은,
    수신된 이벤트 메시지를 저장하기 위한 데이터 저장 시스템으로서, 상기 데이터 저장 시스템은 이벤트 메시지와 연관되는 제1 복수의 레코드를 위한 스토리지를 포함하며, 각각의 이벤트 메시지는 타임스탬프를 포함하고, 이벤트 메시지와 연관되는 레코드는 상기 이벤트 메시지에 대한 이벤트 결과에 대한 타겟 전달 시간을 표시하는 필드를 포함하고, 적어도 일부 이벤트 메시지에 대한 타겟 전달 시간은 상기 이벤트 메시지의 종류에 따라 결정되는 데이터 저장 시스템; 및
    상기 저장된 이벤트 메시지 내의 정보 및 상기 이벤트 메시지와 연관되는 타겟 전달 시간에 기초하여 이벤트 결과를 전달하기 위해 상기 저장된 이벤트 메시지를 처리하도록 구성되는 적어도 하나의 프로세서를 포함하며, 상기 처리는,
    우선순위를 표시하는 이벤트 메시지에 저장되는 정보에 따라 이벤트 결과를 전달하기 위해 이벤트 메시지를 우선순위화하는 단계,
    각각의 타임스탬프에 대한 고정된 지연에 기초하여 제1 세트에 상기 이벤트 메시지의 모두에 대한 동일한 우선순위를 표시하는 정보를 저장하는 하나 이상의 이벤트 메시지의 제1 세트 내의 각각의 이벤트 메시지에 대한 타겟 전달 시간을 계산하는 단계, 및
    클록 시간과 타겟 전달 시간의 비교에 기초하여 전달 가능한 이벤트 메시지에 대한 이벤트 결과를 전달하는 단계를 포함하는, 컴퓨팅 시스템.
KR1020197020286A 2016-12-15 2017-12-15 이종 이벤트 큐 KR102239428B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662434472P 2016-12-15 2016-12-15
US62/434,472 2016-12-15
PCT/US2017/066676 WO2018112344A1 (en) 2016-12-15 2017-12-15 Heterogeneous event queue

Publications (2)

Publication Number Publication Date
KR20190093653A true KR20190093653A (ko) 2019-08-09
KR102239428B1 KR102239428B1 (ko) 2021-04-12

Family

ID=61656331

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197020286A KR102239428B1 (ko) 2016-12-15 2017-12-15 이종 이벤트 큐

Country Status (8)

Country Link
US (1) US10628240B2 (ko)
EP (1) EP3555747B1 (ko)
JP (1) JP6864746B2 (ko)
KR (1) KR102239428B1 (ko)
CN (1) CN110100235B (ko)
AU (1) AU2017377034B2 (ko)
CA (1) CA3044287C (ko)
WO (1) WO2018112344A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11074554B2 (en) * 2016-12-30 2021-07-27 Verizon Patent And Licensing Inc. Cloud-based event calendar synching and notification
KR102527925B1 (ko) * 2017-11-29 2023-05-03 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN109508231B (zh) * 2018-11-17 2020-09-18 中国人民解放军战略支援部队信息工程大学 异构多模处理器的等价体间的同步方法及装置
US11593248B2 (en) * 2020-03-11 2023-02-28 SK Hynix Inc. Firmware event tracking systems and methods for preventing loss of events
CN111694619A (zh) * 2020-06-09 2020-09-22 重庆锐云科技有限公司 基于刷新率的定时器实现方法、装置、设备及存储介质
CN113535426B (zh) * 2021-06-16 2023-11-03 福建天泉教育科技有限公司 一种消息下发的优化方法及服务端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101043167B1 (ko) * 2003-06-25 2011-06-20 주식회사 케이티 레거시 망 운용관리 시스템간의 연동시스템 및 방법
US8924981B1 (en) * 2010-11-12 2014-12-30 Teradat US, Inc. Calculating priority indicators for requests in a queue
KR101616967B1 (ko) * 2008-02-29 2016-05-12 유로클리어 에스에이/엔브이 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선
US9372730B1 (en) * 2007-12-06 2016-06-21 West Corporation Method, system and computer readable medium for notification delivery
US9424075B1 (en) * 2015-01-30 2016-08-23 Amazon Technologies, Inc. Dynamic virtual partitioning for delayed queues

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09244984A (ja) * 1996-03-08 1997-09-19 Nippon Telegr & Teleph Corp <Ntt> イベント順序補正方法
CA2358525C (en) 1999-01-08 2008-04-01 Nortel Networks Limited Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
JP2000293387A (ja) * 1999-04-05 2000-10-20 Nec Corp イベント通知システム
US6760309B1 (en) 2000-03-28 2004-07-06 3Com Corporation Method of dynamic prioritization of time sensitive packets over a packet based network
JP4294879B2 (ja) 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US7334000B2 (en) 2001-07-16 2008-02-19 Aol Llc Method and apparatus for calendaring reminders
US7421273B2 (en) 2002-11-13 2008-09-02 Agere Systems Inc. Managing priority queues and escalation in wireless communication systems
US8028052B2 (en) * 2004-07-09 2011-09-27 Alcatel Lucent NMS with multi-server change requests processing
US20060277330A1 (en) 2005-06-01 2006-12-07 Wilhelmus Diepstraten Techniques for managing priority queues and escalation considerations in USB wireless communication systems
US9042366B2 (en) * 2010-09-30 2015-05-26 Vitesse Semiconductor Corporation Timestamp predictor for packets over a synchronous protocol
WO2012149450A1 (en) * 2011-04-29 2012-11-01 Welleness & Prevention, Inc. Method and apparatus for electronic event correlated message delivery
US8452901B1 (en) * 2011-12-30 2013-05-28 Emc Corporation Ordered kernel queue for multipathing events
EP2763041A1 (en) * 2013-01-31 2014-08-06 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus, method and computer program for processing out-of-order events
US20140278641A1 (en) * 2013-03-15 2014-09-18 Fiserv, Inc. Systems and methods for incident queue assignment and prioritization
US9785419B2 (en) 2014-09-02 2017-10-10 Ab Initio Technology Llc Executing graph-based program specifications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101043167B1 (ko) * 2003-06-25 2011-06-20 주식회사 케이티 레거시 망 운용관리 시스템간의 연동시스템 및 방법
US9372730B1 (en) * 2007-12-06 2016-06-21 West Corporation Method, system and computer readable medium for notification delivery
KR101616967B1 (ko) * 2008-02-29 2016-05-12 유로클리어 에스에이/엔브이 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선
US8924981B1 (en) * 2010-11-12 2014-12-30 Teradat US, Inc. Calculating priority indicators for requests in a queue
US9424075B1 (en) * 2015-01-30 2016-08-23 Amazon Technologies, Inc. Dynamic virtual partitioning for delayed queues

Also Published As

Publication number Publication date
AU2017377034A1 (en) 2019-06-06
US20180173577A1 (en) 2018-06-21
CA3044287A1 (en) 2018-06-21
EP3555747A1 (en) 2019-10-23
AU2017377034B2 (en) 2020-08-20
CN110100235B (zh) 2023-01-06
JP2020502647A (ja) 2020-01-23
CN110100235A (zh) 2019-08-06
CA3044287C (en) 2021-08-10
KR102239428B1 (ko) 2021-04-12
EP3555747B1 (en) 2021-12-08
WO2018112344A1 (en) 2018-06-21
US10628240B2 (en) 2020-04-21
JP6864746B2 (ja) 2021-04-28

Similar Documents

Publication Publication Date Title
KR102239428B1 (ko) 이종 이벤트 큐
CN106802826B (zh) 一种基于线程池的业务处理方法及装置
Bertogna et al. Limited preemption EDF scheduling of sporadic task systems
US7549151B2 (en) Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US20170109200A1 (en) Method for scheduling user request in distributed resource system, and apparatus
US9141447B2 (en) Conditional deferred queuing
JPH0635726A (ja) 確率的優先順位に基づいてタスクを選択する方法
KR102238034B1 (ko) 태스크 할당 시스템에서의 행동 페어링을 위한 기술들
Xie et al. Pandas: robust locality-aware scheduling with stochastic delay optimality
US9654408B2 (en) Strict queue ordering in a distributed system
JP2020502647A5 (ko)
Behera et al. A new dynamic round robin and SRTN algorithm with variable original time slice and intelligent time slice for soft real time systems
US11221883B2 (en) Hierarchical scheduler
CN115421905A (zh) 一种任务调度方法、装置、电子设备及存储介质
CN111190541B (zh) 存储系统的流控方法以及计算机可读存储介质
CN116302420A (zh) 并发调度方法、装置、计算机设备及计算机可读存储介质
CN114661415A (zh) 调度方法及计算机系统
CN113535361A (zh) 任务调度方法、装置、设备及存储介质
CN113806049A (zh) 任务排队方法、装置、计算机设备和存储介质
Manolache Schedulability analysis of real-time systems with stochastic task execution times
KR20180082560A (ko) 태스크의 시간-기반 스케줄링을 위한 방법 및 장치
JP2018073303A (ja) イベント制御装置、イベント制御方法、及びプログラム
Kohútka et al. FPGA-based Task Scheduler for Mixed-Criticality Real-Time Systems
US10140150B2 (en) Thread diversion awaiting log call return
CN117891604A (zh) 计算资源调度方法、介质、装置和计算设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant