KR20140063690A - 복수의 장치로 이벤트를 배포하는 기법 - Google Patents

복수의 장치로 이벤트를 배포하는 기법 Download PDF

Info

Publication number
KR20140063690A
KR20140063690A KR1020147006638A KR20147006638A KR20140063690A KR 20140063690 A KR20140063690 A KR 20140063690A KR 1020147006638 A KR1020147006638 A KR 1020147006638A KR 20147006638 A KR20147006638 A KR 20147006638A KR 20140063690 A KR20140063690 A KR 20140063690A
Authority
KR
South Korea
Prior art keywords
event
routing
delivery
distribution
events
Prior art date
Application number
KR1020147006638A
Other languages
English (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140063690A publication Critical patent/KR20140063690A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates

Abstract

메시지 복사 및 메시지 레이턴시를 최소화할 수 있는 방식으로 이벤트를 많은 수의 이벤트 소비자에게 배포하는 방법이 개시된다. 이 방법은 이벤트가 특정한 세트의 소비자에게 송신되어야 한다고 판정하는 단계를 포함한다. 이 방법은 이벤트를 복사하고 개개의 사본을 복수의 배포 파티션(distribution partitions)에 제공하는 단계를 포함한다. 이 방법은 추가로 각각의 배포 파티션에서 이벤트의 사본을 복수의 라우팅 슬립을 이용하여 패키지화하여 복수의 전달 번들(delivery bundles)을 생성하는 단계를 포함한다. 상기 라우팅 슬립은 이벤트를 수신하려는 복수의 개별적인 소비자를 기술한다. 이 방법은 추가로, 전달 번들을 사용하여 이벤트를 라우팅 슬립에 특정된 개별적인 소비자에게 배포하는 단계를 포함한다.

Description

복수의 장치로 이벤트를 배포하는 기법{DISTRIBUTING EVENTS TO LARGE NUMBERS OF DEVICES}
컴퓨터 및 컴퓨팅 시스템은 현대 생활의 거의 모든 측면에 영향을 미치고 있다. 컴퓨터는 포괄적으로 일, 레크리에이션, 건강 관리, 운송, 엔터테인먼트, 가계 관리 등에 관련된다.
또한, 컴퓨팅 시스템 기능은 네트워크 연결을 통해 다른 컴퓨팅 시스템에 상호연결되는 컴퓨팅 시스템 기능에 의해 강화될 수 있다. 네트워크 연결은 유선 또는 무선 이더넷(Ethernet), 셀룰러 연결, 또는 직렬, 병렬, USB 연결 등을 통한 컴퓨터 대 컴퓨터 연결을 포함할 수 있으나, 이에 한정되는 것은 아니다. 연결은 컴퓨팅 시스템으로 하여금 다른 컴퓨팅 시스템의 서비스에 액세스하고 애플리케이션 데이터를 다른 컴퓨팅 시스템으로부터 빠르고 효과적으로 수신하게 한다.
많은 컴퓨터가 컴퓨터와의 직접적인 사용자 상호작용에 의해 사용된다. 이와 같이, 컴퓨터는 사용자 상호작용을 용이하게 하는 하드웨어 및 소프트웨어 사용자 입력 인터페이스를 포함한다. 예를 들어, 현대의 범용 컴퓨터는 사용자로 하여금 컴퓨터에 데이터를 입력하게 하는 키보드, 마우스, 터치패드, 카메라 등을 포함할 수 있다. 또한, 다양한 소프트웨어 사용자 인터페이스가 사용될 수 있다.
소프트웨어 사용자 인터페이스의 예는 그래픽 사용자 인터페이스, 텍스트 커맨드 라인 기반 사용자 인터페이스, 기능 키 또는 핫 키 사용자 인터페이스 등을 포함한다.
축구, 풋볼, 하키 또는 야구 리그 또는 팀의 스포츠 팬을 위한 또는 월드 이벤트에 대한 일반적-관심대상 뉴스, 정보 및 사실을 최신 상태로 유지하도록 하기 위해 이들을 전달하는 것에 초점을 맞춘 모바일 앱을, iOS, 안드로이드, 윈도우즈 폰(Windows Phone), Windows 등에 구축하는 개발자를 가정하자. 이러한 애플리케이션(및 매우 다양한 다른 앱)에 관한 알림(alerts) 또는 토스트(toasts)를 팬이 가장 좋아하는 팀 스코어로서 또는 세계의 소정 유형의 뉴스 이벤트 브레이크로서 팝하는(pop) 통지는 훌륭한 차별자(differentiator)이다. 이러한 차별자는 일반적으로 최적화된 사용자 경험에 초점을 맞춘 많은 모바일 애플리케이션("앱") 개발자의 기술 설정을 넘어서는 벤더-공급형 통지 채널로 이러한 이벤트를 푸시하기 위한 서버 인프라스트럭처를 구축하고 동작시키는 것을 구현한다. 이들의 앱이 매우 성공적인 경우에, 간단한 서버 기반 솔루션은 곧 확장성 한계(scalability ceiling)에 부딪치게 될 것인데 이는 이벤트를 적절한 방식으로 수십 또는 수백 또는 수천 개의 장치로 배포하는 것이 바로 과제이기 때문이다.
시의적절함(timeliness)은 이러한 종류 애플리케이션 중 많은 애플리케이션에게 중요한 가치 제안일 수 있다. 예를 들어, 스포츠 팬은 최근의 것일수록 참을성을 가지지 못한다. 유사하게, 임계치를 치는 자신의 재정 포트폴리오의 양상을 지켜보고 있는 개인 및 기관, 대규모 경매에 참여하고 있는 사람들 또는 페이스북 상의 가상 농업 제국이 지나가는 허리케인에 의해 타격을 받고 있는 플레이어는 최근에 가까워지면 흔히 많은 인내심을 갖지 못한다.
iOS를 위한 애플의 푸시 통지 서비스, 안드로이드를 위한 구글의 C2DM 서비스 및 윈도우즈 폰을 위한 마이크로소프트의 MPNS 서비스 및 대부분의 다른 모바일 플랫폼은 애플리케이션으로 하여금 개별적인 플랫폼의 푸시 통지 API를 통해 이러한 공유 채널을 이용하는 것을 가능하게 하고 최대 에너지(그리고 이에 따라 배터리) 효율을 제공하는 장치로의 일정한 형태의 최적화된 공유 연결을 제공한다. 그러나, 전술한 바와 같이, 이러한 플랫폼을 사용한 단일 이벤트에 기초하여 많은 수의 통지를 배포하는 것은 많은 컴퓨팅 자원을 요구하거나 어려울 수 있다.
본 명세서의 청구범위의 발명의 대상은 임의의 문제점을 해결하는 실시예 또는 전술한 환경에서만 동작하는 실시예에 한정되지 않는다. 오히려, 본 배경기술은 단지 본 명세서에 설명된 일부 실시예가 실현될 수 있는 하나의 예시적인 기법을 설명하기 위해 제공된다.
본 명세서에 설명된 일 실시예는 컴퓨팅 환경에서 실현될 수 있는 방법에 관한 것이다. 이 방법은 메시지 복사 및 메시지 레이턴시(latency)를 최소화할 수 있는 방식으로 이벤트를 많은 수의 이벤트 소비자에게 배포하는 단계들을 포함한다. 이 방법은 이벤트가 특정한 세트의 소비자에게 송신되어야 한다고 판정하는 단계를 포함한다. 이 방법은 이벤트를 복사하고 개개의 사본을 복수의 배포 파티션(distribution partitions)에 제공하는 단계를 포함한다. 이 방법은 추가로 각각의 배포 파티션에서 이벤트의 사본을 복수의 라우팅 슬립을 이용하여 패키지화하여 복수의 전달 번들(delivery bundles)을 생성하는 단계를 포함한다. 상기 라우팅 슬립은 이벤트를 수신하려는 복수의 개별적인 소비자를 기술한다. 이 방법은 추가로, 전달 번들을 사용하여 이벤트를 라우팅 슬립에 특정된 개별적인 소비자에게 배포하는 단계를 포함한다.
본 요약은 상세한 설명에서 이하에 추가로 설명되는 개념에 대한 선택사항을 간략한 형태로 소개하도록 제공된다. 본 요약은 청구된 발명의 대상의 핵심 특징 또는 주요 특징을 식별하려는 것이 아니며 청구된 발명의 대상의 범주를 결정하는 데 있어 보조내용으로 사용하려는 것도 아니다.
추가적인 특징 및 효과가 이어지는 상세한 설명에 제시될 것이고, 어느 정도는 상세한 설명에 의해 명확해질 것이며, 본 명세서의 내용을 실행함으로써 학습될 수 있다. 본 발명의 특징 및 효과는 첨부된 청구항에 구체적으로 나타낸 수단 및 조합을 이용하여 실현되고 획득될 수 있다. 본 발명의 특징은 다음의 상세한 설명 및 첨부된 청구범위로부터 보다 완전하게 이해될 수 있을 것이고 이하에서 제시된 본 발명을 실행함으로써 학습될 수 있다.
전술한 및 다른 효과 및 특징이 얻어질 수 있는 방식으로 기술하기 위해, 간략하게 전술된 발명의 대상에 대한 더 구체적인 설명이 첨부된 도면에 도시된 특정한 실시예를 참조하여 제공될 것이다. 이러한 도면은 단지 대표적인 실시예를 나타내려는 것이며 이에 따라 범위를 제한하려는 의도가 아님을 이해한다는 조건에서, 실시예가 첨부된 도면의 사용하여 추가적인 특이 및 세부 사항과 함께 기술되고 설명될 것이다.
도 1은 이벤트 데이터 배포 시스템의 일 예를 도시한다.
도 2는 이벤트 데이터 획득 및 배포 시스템을 도시한다.
도 3은 이벤트를 배포하는 방법을 도시한다.
본 명세서에 설명된 일부 실시예는 푸시 통시 메커니즘(push notification mechanism)을 이용하고, 모바일 및 데스크톱 개발자로 하여금 스케일에서(at scale) 그리고 매우 적절한 배포 특성을 가진 상태에서 이러한 푸시 통지 채널을 이용하는 것을 가능하게 하는 통지 관리 및 배포 레이어를 제공한다.
일부 실시예는 메시지 사본의 수를 최소화하고 각각의 개별적인 타깃에 대해 입구에서 출구까지 통지의 평균 이동 시간(average flow time)을 최소화함과 동시에 많은 수의 전달 타깃에 대해 스케일할 수 있는 캐스케이딩(cascading) 및 파티션화 된 배포 및 전달 시스템을 통해 통지의 브로드캐스팅을 수행하는 방법을 포함할 수 있다.
일부 실시예는 클라이언트 및 제3자 빌링(3rd party billing)과 함께 시스템 모니터링을 위해 데이터 창고 솔루션(data warehouse solution)으로의 전달 통계를 수집 및 플로우하는 방법을 포함할 수 있다.
일부 실시예는 임시 또는 영구 전달 에러 조건에 의해 타깃을 임시로 또는 영구적으로 블랙리스트 처리하는 방법을 포함할 수 있다.
기본적으로, 하나의 구현 시스템은 워싱턴, 레드몬드의 마이크로소프트 사에서 입수할 수 있는 Windows Azure 서비스 버스에 의해 제공되는 발행/구독 인프라스트럭처를 사용하나, 이는 또한 다양한 다른 메시징 시스템에 유사한 형태로 존재할 수 있다. 인프라스트럭처는 제시된 방법(즉, 토픽 및 큐)에 대해 설명된 구현을 용이하게 하는 두 개의 기능을 제공한다.
큐(Queue)는 메시지가 순차적인 순서(in sequential order)로 추가(인큐잉, enqueued)되게 하고 이들이 추가되었던 것과 동일한 순서로 제거(디큐잉, dequeued)되게 하는 메시지를 위한 저장 구조이다. 메시지는 임의의 수의 동시 클라이언트에 의해 부가 및 제거될 수 있고, 인큐잉 측의 부하를 경감하고 디큐잉 측의 수신자에 대한 부하 처리의 균형을 맞추는 것을 가능하게 한다. 큐는 또한 메시지가 디큐잉됨에 따라 엔티티로 하여금 메시지에 대한 잠금(lock)을 획득하는 것을 가능하게 하여, 소비 클라이언트로 하여금 메시지가 큐에서 실제로 제거되는 경우 및 검색된 메시지의 처리가 실패하면 메시지가 큐에 다시 복귀될 수 있는지 여부에 대한 명백한 제어를 가능하게 한다.
토픽은 큐의 모든 특성(characteristics)을 가지는 저장 구조이나, 각각이 인큐잉된 메시지의 시퀀스에 대해 격리되고 필터링된 보기(view)를 가능하게 하는 복수의 동시 존재 '구독'(concurrently existing 'subscriptions')을 가능하게 한다. 토픽에 대한 각각의 구독은 구독의 연관된 필터 조건(들)이 메시지와 포지티브 방식으로 일치하는(positively match) 경우에 각각의 큐잉된 메시지의 사본을 생성한다. 결과적으로, 각각의 구독이 단순히 모든 메시지와 일치하는 '통과(passthrough)' 조건을 가지는 경우에 10개의 구독을 포함하는 토픽에 인큐잉된 메시지가 각각의 구독에 대해 하나씩 총 10개의 메시지를 생성한다. 구독은 큐와 같이, 수신자에 대한 부하 처리의 균형을 제공하는 복수의 동시 소비자(multiple concurrent consumers)를 포함한다.
다른 기본적인 개념은 '이벤트'에 관한 것이며, 이는 기본적인 발행/구독 인프라스트럭처라는 면에서 단지 메시지일 뿐이다. 일 실시예에서, 이벤트는 메시지 본문(message body) 및 메시지 속성의 사용을 관리하는 간단한 제약조건(constraints)의 세트의 대상이다. 이벤트의 메시지 본문은 일반적으로 불명료한(opaque) 데이터 블록으로 플로우(flow), 일 실시예에 의해 고려되는 임의의 이벤트 데이터는 일반적으로 메시지 속성으로서 플로우하고, 이는 이벤트를 나타내는 메시지의 일부인 키/값 쌍(key/value pairs)의 세트이다.
실시예는 주어진 입력 이벤트로부터의 정보의 사본을 소정의 스코프(scope)와 연관되는 많은 수의 '타깃(102)'으로 각각 배포하고, 각각의 타깃(102)에 대해 최소 시간 동안 배포하도록 구성될 수 있다. 타깃(102)은 일부 제3 자 통지 시스템이나 일부 네트워크 액세스가능 외부 인프라스트럭처에 대한 어댑터의 식별자에 연결되는 장치 또는 애플리케이션의 어드레스 및, 통지 시스템 또는 인프라스트럭처에 액세스하기 위한 보조 데이터(auxiliary data)를 포함할 수 있다.
일부 실시예는 세 개의 구분된 프로세싱 규칙으로 분리되는 아키텍처를 포함할 수 있으며, 이는 다음에서 상세히 설명되고 도 1을 참조하여 이해될 수 있다. 도 1에 '1', 타원 및 'n'으로 나타낸 바와 같이, 각각의 프로세싱 규칙은 프로세싱 규칙의 하나 이상의 사례를 가질 수 있다. 각각의 케이스에서 'n'의 사용은 프로세싱 규칙에 적용되는 각각의 다른 케이스와 구별되는 것으로 여겨야 하며, 이는 각각의 프로세싱 규칙이 동일한 수의 사례를 가질 필요가 없다는 것을 의미한다. '배포 엔진'(112)는 이벤트를 받아들이고, 타깃(102)의 그룹을 포함하는 라우팅 슬립(예를 들면, 도 2의 라우팅 슬립(128-1) 참조)을 이용하여 이들을 번들화한다. '전달 엔진'(108)은 이러한 번들을 입력받아 타깃(102)에 의해 표현되는 네트워크 위치로 전달하기 위해 라우팅 슬립을 처리한다. 매니지먼트 서비스(142)에 의해 표현되는 '매니지먼트 역할(management role)'은 타깃(102)을 관리하기 위한 외부 API를 제공하고 또한 전달 엔진(108)으로부터 통계 및 에러 데이터를 입력받아 그 데이터를 처리/저장할 책임이 있다.
데이터 플로우가 '배포 토픽(144)'(이벤트가 배포를 위해 배포 토픽에 제출됨)에 고정된다. 제출된 이벤트는 메시지 속성을 사용하여, 자신이 연관되는 스코프로 레이블링된다(labeled) - 메시지 속성은 이벤트 및 원 메시지(raw messages)를 구별하는 전술한 제약 중 하나일 수 있다.
설명된 예에서 배포 토픽(144)은 '배포 파티션'(120) 당 하나의 통과(필터링되지 않은) 구독(subscription)을 가진다. '배포 파티션'은 통지를 지정된 스코프에 대한 타깃(102)의 서브세트로 배포 및 전달할 책임이 있는 격리된 자원의 세트이다. 배포 토픽에 송신된 각각의 이벤트의 사본은 자신의 연관된 구독을 통해 실질적으로 동시에 모든 동시 구성되는 배포 파티션에서 이용가능하고, 이는 배포 작업의 병렬화(parallelization)를 가능하게 한다.
파티션화(partitioning)을 통한 병렬화는 적절하게 배포가 이루어지도록 돕는다. 이를 이해하기 위해, 1000만 개의 타깃(102)을 포함하는 스코프를 고려한다. 타깃의 데이터가 파티션화되지 않은 스토어에 보관되는 경우에, 시스템은 단일한 대량의 데이터베이스 결과 세트를 차례로 가로질러야할 것이며 또는 결과 세트가 동일한 스토어에 대한 파티션화 질의를 사용하여 획득된 경우에, 타깃 데이터를 획득하는 처리량(throughput)은 적어도 지정된 스토어의 처리량 한계에 의해 제한될 것이고, 결과적으로 타깃(102)(이의 설명 레코드(description record)는 지정된 결과 세트에서 매우 늦게 발생됨)으로 통지를 전달하는 전달 레이턴시가 만족스럽지 못할 것이다.
대신에, 1000만 개의 타깃(102)이 1000 개의 스토어(각각이 10,000 개의 타깃 레코드를 보유하고 이러한 스토어는 질의를 수행하며 본 명세서에 설명된 파티션 형식의 결과를 처리하는 전용 컴퓨트 인프라스트럭처(본 명세서에 설명된 '배포 엔진(122)' 및 '전달 엔진(108)'과 쌍을 이룸))인 경우에, 타깃 설명의 획득이 컴퓨트 및 네트워크 자원의 광범위한 세트에 대해 병렬화될 수 있고, 배포된 첫 이벤트부터 마지막 이벤트까지 측정된 모든 이벤트의 배포에 관한 시간 차이를 현저하게 감소시킨다.
실제 배포 파티션의 수는 기술적으로 제한되지 않는다. 배포 파티션의 수는 단일 파티션으로부터 하나보다 많은 임의의 수의 파티션에 이르는 범위를 가질 수 있다.
설명된 예에서, 배포 파티션(120)을 위한 '배포 엔진(122)'이 이벤트(104)를 획득하면, 배포 엔진은 처음에 이벤트 데이터의 사이즈를 계산하고 이후에 라우팅 슬립(128)의 사이즈를 계산하며, 이는 기본적인 메시징 시스템의 허용가능 최대 메시지 사이즈와 절대 사이즈 한계값 중 더 작은 것과 이벤트 사이즈 사이의 델타에 기초하여 계산될 수 있다. 이벤트는 '라우팅 슬립' 데이터에 대해 일부 최소 헤드룸(headroom)이 존재하는 방식으로 사이즈가 제한된다.
라우팅 슬립(128)은 타겟(102)의 설명을 포함하는 리스트이다. 라우팅 슬립은 파티션의 스토어(124)에 보관되는 타깃(102)에 대해 이벤트의 스코프를 일치시키는 룩업 질의(lookup query)를 수행함으로써 배포 엔진(122)에 의해 생성되고, 이벤트의 스코프 및 추가 조건의 세트(이벤트 데이터에 대한 필터링 조건에 기초하여 선택을 좁힘)를 일치시키는 모든 타깃(102)을 반환한다. 실시예는 그러한 필터 조건 중에서도 현재 예에서 유효하다고 여겨지는 타깃(102)으로 결과를 제한할 시간 창(time window) 조건을 포함하며, 이는 현재 UTC 시간이 타깃 설명 레코드에 포함되는 시작/종료 유효 시간(stat/end validity time) 이내라는 것을 의미한다. 이러한 유용성은 블랙리스트에 사용되며, 이는 본 명세서에서 이후에 설명된다. 룩업 결과가 통과됨에 따라(traversed), 엔진은 이벤트(104)의 사본을 생성하고, 라우팅 슬립(128)을 최대 사이즈까지 스토어(124)로부터 검색된 타깃 설명으로 채우고, 이후에 이벤트 및 라우팅 슬립의 결과 번들을 파티션의 '전달 큐(130)'에 인큐잉한다(enqueues).
라우팅 슬립 기법은 배포 엔진(122)으로부터 전달 엔진(들)(108)으로의 이벤트의 이벤트 플로우 속도가 기본 인프라스트럭처에서의 실제 메시지 플로우 레이트(flow rate)보다 높고, 이는 예를 들면, 30개의 타깃 설명이 이벤트 데이터를 따라 라우팅 슬립(128)으로 패키지화될 수 있는 경우의 이벤트/타깃 쌍의 플로우 속도가 이벤트/타깃 쌍이 메시지로 즉시 그룹화되었던 경우보다 30배 더 높다는 것을 의미한다.
전달 엔진(108)은 전달 큐(130)로부터의 이벤트/라우팅-슬립 번들(126)의 소비자이다. 전달 엔진(108)의 역할은 이러한 번들을 디큐잉하고 이벤트(104)를 라우팅 슬립(128)에 열거된 모든 종착지(destinations)로 전달하는 것이다. 전달은 일반적으로 이벤트 메시지를 개개의 타깃 인프라스트럭처에 의해 인식되는 통지 메시지로 포맷하는 어댑터를 통해 이루어진다. 예를 들어, 통지 메시지는 Windows® 7 폰을 위한 MPNS 포맷, iOS 장치를 위한 APN(Apple Push Notification) 포맷, 안드로이드 장치를 위한 C2DM(Cloud To Device Messaging) 포맷, 장치 상의 브라우저를 위한 JOSN(Java Script Objet Notation) 포맷, HTTP(Hyper Text Transfer Protocol) 등으로 전달될 수 있다.
전달 엔진(108)은 일반적으로 독립 타깃(102)에 대한 전달을 병렬화하고 타깃 인프라스트럭처에 의해 강화된 스코프를 공유하는 타깃(102)으로의 전달을 직렬화할 것이다. 후자에 대한 예는 전달 엔진 내의 특정 어댑터가 단일 네트워크 연결을 통해 특정한 통지 플랫폼 상의 구체적인 타깃 애플리케이션에서 타겟화된 모든 이벤트를 송신하도록 선택될 수 있다.
배포 엔진(122) 및 전달 엔진(108)이 전달 큐(130)를 사용하여 분리되어 전달 엔진(108)의 독립적 스케일링을 허용하고 전달이 느려지는 것을 방지하며, 배포 질의/패킹(packing) 스테이지를 차단한다.
각각의 배포 파티션(120)은 전달 큐(130)를 동시 관찰하는 임의의 수의 전달 엔진 인스턴스를 가질 수 있다. 전달 큐(130)의 길이가 사용되어 많은 전달 엔진이 동시에 활성화되는 방법을 결정한다. 큐 길이가 소정의 임계치를 넘으면(cross), 새로운 전달 엔진 인스턴스가 파티션(120)에 추가되어 송신 처리량을 증가시킬 수 있다.
배포 파티션(120) 및 연관된 배포 및 전달 엔진 인스턴스는 높은 스케일에서의 최적의 병렬화가 이루어지도록 사실상 제한 없는 방식으로 스케일 업될 수 있다. 타깃 인프라스트럭처가 병렬 방식으로 장치로의 100만 개의 이벤트 요청을 수신하고 전달할 수 있는 경우에, 설명된 시스템은 이벤트가 모든 원하는 타깃(102)으로의 전달을 위한 이벤트 제출로 타깃 인프라스트럭처를 포화시킬 수 있는 방식으로 이벤트를 자신의 전달 인프라스트럭처 - 네트워크 인프라스트럭처 및 데이터센터에 대한 대역폭 - 를 통해 배포할 수 있으며, 전달은 하한 부하(under load) 및 지정된 임의의 승인된 전달 한도를 허용할 만큼 적절하게 이루어진다.
메시지가 자신의 개별적인 인프라스트럭처 어댑터를 통해 타깃(102)으로 전달되기 때문에, 일부 실시예에서, 시스템은 통계적 정보 아이템의 범위에 주목한다. 무엇보다도, 전달 번들을 수신하는 것과 임의의 개별적인 메시지의 전달 사이의 지속시간 동안 및 실제 송신 동작의 지속시간 동안의 시간 간격이 측정된다. 또한, 통계적 정보의 일부는 전달이 성공했는지 또는 실패했는지 여부에 대한 표시자이다. 이러한 정보는 전달 엔진(108) 내부에서 수집되고 스코프마다 그리고 각 타깃 애플리케이션 기준의 평균으로 롤업된다(roll up). '타깃 애플리케이션'은 통계적 롤업의 특정한 목적을 위해 도입된 그룹화 식별자(grouping identifier)이다. 계산된 평균은 지정된 간격으로 전달 상태 큐(146)에 송신된다. 이러한 큐는 매니지먼트 서비스(142) 내의 작업자(들)(세트)에 의해 소모되고(drain), 이벤트 데이터를 목적 범위의(for a range of purposes) 데이터 창고에 제출한다. 이러한 목적은, 동작 모니터링에 추가하여, 이벤트가 전달되는 테넌트의 빌링 및/또는 제3자의 자체 빌링을 위해 테넌트에게 통계를 알리는 것을 포함할 수 있다.
전달 에러가 검출되면, 이러한 에러가 임시 및 영구 에러 조건으로 분류된다. 임시 에러 조건은 예를 들면, 시스템이 타깃 인프라스트럭처의 전달 포인트 또는 전달 제한에 일시적으로 도달했음을 보고하는 타깃 인프라 스트럭처에 도달하는 것을 허용하지 않는 네트워크 오류를 포함할 수 있다. 영구 에러 조건은 예를 들면, 수동 개입 없이 치유될 수 있는 타깃 인프라스트럭처에 대한 승인/인증 에러 또는 기타 에러 및, 타깃 인프라스트럭처가 타깃이 더 이상 이용가능하지 않거나 영구적 기준에서 메시지를 수신하려고 하지 않는 경우의 에러 조건을 포함할 수 있다. 분류되면, 에러 보고가 전달 실패 큐(148)에 제출된다. 일시적 에러 조건에 대해, 또한 에러는 에러 조건이 해결될 것으로 예상될 때까지, 절대 UTC 타임스탬프(absolute UTC timestamp)를 포함할 수 있다. 동시에, 타깃은 이러한 전달 엔진 인스턴스에 의한 임의의 추가적 부하 전달을 위한 타깃 어댑터에 의해 로컬 방식으로 블랙리스팅된다. 또한 블랙리스트는 타임스탬프를 포함할 수 있다.
전달 오류 큐(148)는 매니지먼트 역할의 작업자(들)(세트)에 의해 소모된다. 영구 에러는 각각의 타겟을 매니지먼트 역할이 액세스할 수 있는 자신의 각 배포 파티션 스토어(124)로부터 즉시 삭제하게 할 수 있다. '삭제(deleting)'는 레코드가 실제로 제거되는 것을 의미하거나 레코드가 자신의 유효 기간의 '엔드(end)' 타임스탬프를 에러의 타임스탬프로 설정함으로써 단지 룩업 질의에서 벗어나도록 이동되는 것을 의미한다. 임시 에러 조건은 에러에 의해 표현되는 기간 동안 타깃이 비활성화되게 할 수 있다. 비활성화(deactivation)는 에러 조건이 치유될 것으로 예상되는 에러에 나타난 타임스탬프까지 타깃의 유효 기간의 시작을 이동시킴으로써 이루어질 수 있다.
이제 도 2를 참조하여, 대안적인 예가 설명된다. 이전에 언급한 바와 같이, 실시예는 단일 이벤트가 복수(광범위한 수일 수 있음)의 최종 사용자에게 팬 아웃되는 메시지 팬 아웃 시스템에서 특히 유용할 수 있다. 이러한 예가 도 2에 도시된다. 도 2에는 많은 수의 상이한 소스로부터의 정보가 많은 수의 상이한 타깃으로 전달되는 예가 도시된다. 일부 예에서, 단일 소스로부터의 정보 또는 복수의 소스로부터 수집된 정보가 복수의 타깃으로 전달되는 단일 이벤트를 생성하는 데 사용될 수 있다. 이는 일부 실시예에서, 본 명세서에 첨부된 도 2에 도시된 팬-아웃 토폴로지(fan-out topology)를 사용하여 성취될 수 있다.
도 2는 소스(116)를 나타낸다. 본 명세서에서 이후에 논의될 것과 같이, 실시예는 획득 파티션(140)을 사용할 수 있다. 획득 파티션(140) 각각은 복수의 소스(116)를 포함할 수 있다. 잠재적으로, 많은 수의 그리고 다양한 소스(116)가 존재할 수 있다. 소스(116)는 정보를 제공한다. 이러한 정보는 예를 들면(제한이 아님), 이메일, 텍스트 메시지, 실시간 주식 견적(real-time stock quotes), 실시간 스포츠 스코어, 뉴스 업데이트 등을 포함할 수 있다.
도 2는 각각의 파티션이 예시적인 획득 엔진(118)과 같은 획득 엔진을 포함하는 것으로 도시한다. 획득 엔진(118)은 소스(116)로부터의 정보를 수집하고 그 정보에 기초하여 이벤트를 생성한다. 도 2에 도시된 예에서, 복수의 이벤트가 다양한 소스를 사용하는 획득 엔진에 의해 생성되는 것으로 도시된다. 이벤트(104-1)는 예시를 위해 사용된다. 일부 실시예에서, 이벤트(104-1)는 본 명세서에 추가로 설명되는 것과 같이 표준화될 수 있다. 획득 엔진(118)은 네트워크 상의 소스(116)로부터 정보를 수집하는, 네트워크(예, 인터넷) 상의 서비스일 수 있다.
도 2는 이벤트가 배포 토픽(distribution topic, 144)으로 송신되는 것을 도시한다. 배포 토픽(144)은 이벤트를 복수의 배포 파티션으로 팬 아웃한다. 배포 파티션(120-1)은 배포 파티션 모두를 위한 아날로그(analog)로서 사용된다. 배포 파티션 각각은 구독에 의해 표현되는 복수의 최종 사용자 또는 장치를 서비스한다. 배포 파티션에 의해 서비스되는 복수의 구독이 다른 배포 파티션과 달라질 수 있다. 일부 실시예에서, 파티션에 의해 서비스되는 복수의 구독은 배포 파티션의 용량(capacity)에 의존할 수 있다. 대안적으로 또는 추가적으로, 배포 파티션은 최종 사용자에 대한 논리적 또는 지리학적 근접도에 기초하여 사용자를 서비스하도록 선택될 수 있다. 이는 보다 적절한 방식으로 알림(alerts)이 최종 사용자에게 전달되게 할 수 있다.
도시된 예에서, 배포 파티션(120-1)은 배포 엔진(122-1)을 포함한다. 배포 엔진(122-1)은 데이터베이스(124-1)를 참고한다(consult). 데이터베이스(124-1)는 연관된 전달 타깃(102)에 관한 세부사항을 포함하는 구독에 관한 정보를 포함한다. 구체적으로, 데이터베이스는 타깃(102)을 위한 플랫폼, 타깃(102)에 의해 사용되는 애플리케이션, 타깃(102)을 위한 네트워크 어드레스, 타깃(102)을 사용하는 최종 사용자의 사용자 선호사항 등을 기술하는 정보와 같은 정보를 포함할 수 있다. 데이터베이스(124-1) 내의 정보를 사용하여, 배포 엔진(122-1)은 번들(126-1)을 구성하고, 여기서 번들(126-1)은 이벤트(104)(또는 적어도 이벤트(104)로부터의 정보) 및 이벤트(104-1)로부터의 정보가 통지로서 송신될 타깃(102) 중에서 복수의 타깃(102)을 식별하는 라우팅 슬립(128-1)을 포함한다. 번들(126-1)은 이후에 큐(130-1)에 배치된다.
배포 파티션(120-1)은 복수의 전달 엔진을 포함할 수 있다. 전달 엔진은 큐(103-1)로부터의 번들을 디큐잉(dequeue)하고 통지를 타깃(102)으로 전달한다. 예를 들어, 전달 엔진(108-1)은 큐(103-1)로부터의 번들(126-1)을 받아들이고 라우팅 슬립(128-1)에서 식별되는 타깃(102)으로 이벤트(104)의 정보를 송신한다. 따라서, 이벤트(104-1)의 정보를 포함하는 통지(134)가 다양한 배포 파티션으로부터 타깃(102)으로, 상이한 타깃(102)에 적절한 그리고 개별적인 타깃(102)에 특정된 복수의 상이한 포맷으로 송신될 수 있다. 이는 (전달 시스템을 통해 많은 수의 개별화된 통지를 운반하기보다는) 개별적인 타깃(102)에 대해 개별화된, 개별화 통지(134)가 전달 시스템의 에지에서 공통 이벤트(104-1)로부터 생성되게 한다.
지금부터 이어지는 논의는 수행될 수 있는 복수의 방법 및 방법의 단계를 설명한다. 방법의 단계가 소정의 순서로 설명되거나 특정한 순서로 일어나는 것으로 흐름도에 도시될 수 있으나, 구체적으로 언급되거나, 하나의 단계가 그 단계가 수행되기 전에 완료되는 다른 단계에 의존하기 때문에 요구되는 경우가 아닌 한, 반드시 특정한 순서가 요구되는 것은 아니다.
이제 도 3을 참조하여, 방법(300)이 설명된다. 이 방법은 컴퓨팅 환경에서 실현될 수 있다. 방법은 메시지 복사 및 메시지 레이턴시를 최소화할 수 있는 방식으로 많은 수의 이벤트 소비자에게 이벤트를 배포하는 단계를 포함한다. 이 방법은 이벤트가 특정 세트의 소비자에게 송신되어야 한다고 판정하는 것(단계 302)을 포함한다. 예를 들어, 도 2에 도시된 것과 같이, 이벤트(104)는 하나 이상의 타깃(102)으로 송신될 필요가 있다.
이 방법은 추가로 이벤트를 복사하고 개개의 사본을 복수의 배포 파티션에게 제공하는 것(단계 304)을 포함한다. 예를 들어, 도 2에 도시된 것과 같이, 이벤트가 배포 파티션(120-1) 및 도시된 다른 배포 파티션과 같은 복수의 배포 파티션으로의 배포 토픽에 복사된다.
이 방법은 추가로 각각의 배포 파티션에서, 복수의 전달 번들을 생성하기 위한 복수의 라우팅 슬립을 이용하여 이벤트의 사본을 패키지화하는 것(단계 306)을 포함한다. 라우팅 슬립은 이벤트를 수신하려는 복수의 개별적인 소비자를 기술할 수 있다. 이러한 전달 번들의 예가 도 2에 126-1로 도시된다.
이 방법은 추가로 전달 번들을 사용하여 라우팅 슬립에 특정된 개별적인 소비자에게 이벤트를 배포하는 것(단계 308)을 포함한다. 예를 들어, 도 2에 도시된 것과 같이, 전달 엔진(108-1)은 라우팅 슬립(128-1)을 사용하여 이벤트(104)를 다양한 타깃(102)으로 전달할 수 있다.
파티션이 파티션 용량에 기초하여 결정되는 방법(300)의 일부 실시예가 구현될 수 있다. 예를 들어, 이벤트가 전달 파티션에 의해 배포될 타겟의 수는, 시스템 하드웨어, 네트워크 연결, 현재 부하 등과 같은 요인에 의해 결정되는 용량에 따라 결정될 수 있다.
파티션이 지역(locale)에 따라 결정되는 방법(300)의 일부 실시예가 구현될 수 있다. 예를 들어, 파티션(120-1)과 같은 파티션이 그 파티션에 대한 지리학적 또는 논리적으로 매우 근접하게 위치한 타깃에 할당될 수 있다.
라우팅 슬립이 이벤트를 개별적인 소비자에게 전달하는 방식에 대한 규칙 및 제약을 정의하는 방법(300)의 일부 실시예가 구현될 수 있다. 예를 들어, 라우팅 슬립은 소비자 특정 필터를 포함할 수 있다. 일 예에서, 소비자(즉, 타깃 사용자)는 어떤 타입의 이벤트를 수신하거나 수신하지 않는지에 대한 선호도(preferences)를 정의할 수 있다. 이러한 정보는 이벤트를 전달할 것인지 여부에 대한 결정이 전달 엔진에 의해 전달 시스템의 에지에서 이루질 수 있도록 라우팅 슬립에 포함될 수 있다.
대안적인 또는 추가적인 예에서, 라우팅 슬립은 네트워크 위치 규정(network location rule)을 정의할 수 있다. 예를 들어, 라우팅 슬립은 특정한 타깃에 도달하는 네트워크 경로를 포함할 수 있다.
대안적인 또는 추가적인 예에서, 라우팅 슬립은 보안 자격증명 정보(security credential information)를 포함할 수 있다. 예를 들어, 보안 자격증명은 이벤트가 전달되는 데 필요할 수 있다. 구체적으로, 장치 상의 애플리케이션은 이벤트 데이터를 제공하는 서버와 통신하는 경우에 일부 보안 프로토콜 정보를 예상할 수 있다. 이러한 보안 프로토콜 정보는 이벤트가 적절하게 전달되는 것을 보증하기 위해 전달 엔진(108-1)에 의해 포함될 수 있다.
대안적인 또는 추가적인 예에서, 라우팅 슬립은 원 이벤트 데이터(raw event data)를 소비자가 예상하는 포맷으로 매핑하는 규칙을 포함할 수 있다. 예를 들어, 이벤트는 일반 형식(generic form)일 수 있으나, 라우팅 슬립은 타깃을 위한 플랫폼을 정의할 수 있다. 이는 전달 엔진(108-1)으로 하여금 이벤트를 타깃으로 전달하기 전에 정의된 플랫폼에 적합한 특정한 포맷으로 이벤트(104)를 포맷하는 것을 가능하게 한다.
방법은 하나 이상의 프로세서 및 컴퓨터 판독가능 매체(예, 컴퓨터 메모리)를 포함하는 컴퓨터 시스템에 의해 실행될 수 있다. 구체적으로, 컴퓨터 메모리는 하나 이상의 프로세서에 의해 실행되는 경우에 다양한 기능(예를 들면, 실시예에 언급된 단계들)이 수행되게 하는 컴퓨터 실행가능 명령어를 저장할 수 있다.
본 발명의 실시예는 이하에서 더 상세히 논의되는 것과 같이, 전용 또는 범용 컴퓨터(컴퓨터 하드웨어를 포함함)를 포함하거나 사용할 수 있다. 본 발명의 범주 내의 실시예는 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 담고 있거나 저장하고 있는 물리적 컴퓨터 판독가능 매체 및 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 판독가능 매체(컴퓨터 실행가능 명령어를 저장함)는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어가 저장된 컴퓨터 판독가능 매체는 전송 매체(transmission media)이다. 따라서, 예로써(제한이 아님), 본 발명의 실시예는 적어도 두 개의 구분된 상이한 유형의 컴퓨터 판독가능 매체, 즉 물리적 컴퓨터 판독가능 저장 매체 및 컴퓨터 판독가능 전송 매체를 포함할 수 있다.
물리적 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소(예, CD, DVD 등), 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 바람직한 프로그램 코드 수단을 컴퓨터 판독가능 명령어 또는 데이터 구조의 형태로 저장하는 데 사용될 수 있고, 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 장치 간에 전자 데이터의 송신을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 연결(유선(harwired), 무선, 또는 유선 또는 무선의 조합)을 통해 컴퓨터로 전달되거나 제공되는 경우에, 컴퓨터가 그 연결을 전송 매체로서 적절히 간주한다. 전송 매체는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램을 담는데 사용될 수 있고 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 또한, 전술한 것들의 조합이 컴퓨터 판독가능 매체의 범주에 포함된다.
나아가, 다양한 컴퓨터 시스템 컴포넌트에 이르면, 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 프로그램 코드 수단이 전송 컴퓨터 판독가능 매체에서 물리적인 컴퓨터 판독가능 저장 매체로(또는 반대로) 자동으로 전달될 수 있다. 예를 들어, 네트워크나 데이터 링크로 수신된 컴퓨터 판독가능 명령어 또는 데이터 구조가 네트워크 인터페이스 모듈(예, "NIC") 내의 RAM에서 버퍼링될 수 있고, 이어서 최종적으로 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템의 덜 휘발성인 컴퓨터 판독가능 물리적 저장 매체로 전달된다. 따라서, 컴퓨터 판독가능 물리적 저장 매체는 추가적으로 (또는 주로) 전송 매체를 사용하는 컴퓨터 시스템 컴포넌트에 포함될 수 있다.
컴퓨터 실행가능 명령어는 예를 들면, 범용 컴퓨터, 전용 컴퓨터, 또는 전용 프로세싱 장치로 하여금 소정의 기능 또는 기능 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 예를 들어, 컴퓨터 실행가능 명령어는 이진수의, 중간 포맷 명령어(예, 어셈블리 언어)일 수 있고 또는 심지어 소스 코드일 수 있다. 발명의 대상이 구조적 특징 및/또는 방법론적 단계에 특정된 언어로 설명되었으나, 첨부된 청구범위에 정의된 발명의 대상이 반드시 설명된 특징이나 전술한 단계에 한정될 필요가 없다는 것을 이해해야 한다. 오히려, 바람직한 특징 및 단계가 청구범위를 구현하는 예시적인 형태로 기술된다.
본 발명이 속하는 분야의 기술자는 본 발명이 많은 유형의 컴퓨터 시스템 구성(퍼스널 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티 프로세서 시스템, 마이크로프로세서 기반의 또는 프로그램 가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 페이저, 라우터, 스위치 등을 포함함)을 이용하여 네트워크 컴퓨팅 환경에서 실현될 수 있다는 것을 이해할 수 있을 것이다. 또한, 본 발명은 로컬 및 원격 컴퓨터 시스템(이는 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크에 의해 또는 유선 및 무선 데이터 링크의 조합에 의해) 연결됨) 모두가 태스크를 수행하는 분산형 시스템 환경에서 구현될 수 있다. 분산형 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 배치될 수 있다.
본 발명은 본 발명의 사상 또는 특성에서 벗어나지 않는 범위에서 다른 특정한 형태로 구현될 수 있다. 설명된 실시예는 모든 면에서 단지 예시적이고 제한적이지 않은 것으로 간주될 것이다. 따라서 본 발명의 범주는 전술한 상세한 설명에 의해서라기 보다는 첨부된 청구범위에 의해 나타내진다. 청구범위의 등가물의 의도 및 범주 내에 속하는 모든 변경이 청구범위의 범위에 포함될 것이다.

Claims (7)

  1. 컴퓨팅 환경에서, 메시지 복사 및 메시지 레이턴시를 최소화할 수 있는 방식으로 이벤트를 복수의 이벤트 소비자에게 배포하는 방법으로서,
    이벤트가 특정한 세트의 소비자에게 송신되어야 한다고 판정하는 단계와,
    상기 이벤트를 복사하고 개개의 사본을 복수의 배포 파티션(distribution partitions)에 제공하는 단계와,
    각각의 배포 파티션에서 상기 이벤트의 사본을 복수의 라우팅 슬립을 이용하여 패키지화하여 복수의 전달 번들(delivery bundles)을 생성하는 단계 - 상기 라우팅 슬립은 이벤트를 수신하려는 복수의 개별적인 소비자를 기술함 - 와,
    상기 전달 번들을 사용하여 상기 이벤트를 상기 라우팅 슬립에 특정된 개별적인 소비자에게 배포하는 단계
    를 포함하는 이벤트 배포 방법.
  2. 제1항에 있어서,
    상기 배포 파티션은 배포 파티션 용량(distribution partition capacity)에 기초하여 결정되는
    이벤트 배포 방법.
  3. 제1항에 있어서,
    상기 파티션은 지역(locale)에 의해 결정되는
    이벤트 배포 방법.
  4. 제1항에 있어서,
    상기 라우팅 슬립은 상기 이벤트를 개별적인 소비자에게 전달하는 방법에 대한 규칙 및 제약(constraints)을 정의하는
    이벤트 배포 방법.
  5. 제4항에 있어서,
    상기 제약은 사용자 선호도를 정의하고,
    상기 전달 번들을 사용하여 상기 이벤트를 상기 라우팅 슬립에 특정된 개별적인 소비자에게 배포하는 단계는 상기 라우팅 슬립의 상기 사용자 선호도에 기초하여 상기 이벤트를 전달할 것인지 여부를 결정하는 단계를 포함하는
    이벤트 배포 방법.
  6. 제4항에 있어서,
    상기 제약은 원 이벤트 데이터(raw event data)를 개별적인 소비자 장치에 대한 플랫폼 특정 포맷(platform specific formats)에 매핑하는 규칙을 정의하는
    이벤트 배포 방법.
  7. 제1항에 있어서,
    상기 라우팅 슬립은 보안 자격증명 정보를 포함하는
    이벤트 배포 방법.
KR1020147006638A 2011-09-12 2012-09-10 복수의 장치로 이벤트를 배포하는 기법 KR20140063690A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161533657P 2011-09-12 2011-09-12
US201161533669P 2011-09-12 2011-09-12
US61/533,657 2011-09-12
US61/533,669 2011-09-12
US13/278,401 2011-10-21
US13/278,401 US20130066979A1 (en) 2011-09-12 2011-10-21 Distributing events to large numbers of devices
PCT/US2012/054348 WO2013039797A2 (en) 2011-09-12 2012-09-10 Distributing events to large numbers of devices

Publications (1)

Publication Number Publication Date
KR20140063690A true KR20140063690A (ko) 2014-05-27

Family

ID=47830808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006638A KR20140063690A (ko) 2011-09-12 2012-09-10 복수의 장치로 이벤트를 배포하는 기법

Country Status (5)

Country Link
US (1) US20130066979A1 (ko)
EP (1) EP2756418A4 (ko)
JP (1) JP2014531072A (ko)
KR (1) KR20140063690A (ko)
WO (1) WO2013039797A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595322B2 (en) 2011-09-12 2013-11-26 Microsoft Corporation Target subscription for a notification distribution system
US9830603B2 (en) 2015-03-20 2017-11-28 Microsoft Technology Licensing, Llc Digital identity and authorization for machines with replaceable parts
US10333879B2 (en) * 2015-08-07 2019-06-25 Satori Worldwide, Llc Scalable, real-time messaging system
US9407585B1 (en) * 2015-08-07 2016-08-02 Machine Zone, Inc. Scalable, real-time messaging system
CN107666432A (zh) * 2016-07-29 2018-02-06 京东方科技集团股份有限公司 进行通知的方法、装置和系统
US10805236B2 (en) * 2018-08-31 2020-10-13 Twitter, Inc. Event content delivery

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267527B1 (en) * 2000-03-07 2013-04-10 Nippon Telegraph And Telephone Corporation Semantic information network (sion)
JP3571604B2 (ja) * 2000-03-07 2004-09-29 日本電信電話株式会社 自律分散照合装置、コンテンツ情報流通システム、コンピュータ、処理方法、及び記憶媒体
US8001232B1 (en) * 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7287089B1 (en) * 2000-10-25 2007-10-23 Thomson Financial Inc. Electronic commerce infrastructure system
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
ES2246048T3 (es) * 2002-05-06 2006-02-01 Telefonaktiebolaget Lm Ericsson (Publ) Servicio de mensajes multimedia multiusuario.
US20040002958A1 (en) * 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
US20060235715A1 (en) * 2005-01-14 2006-10-19 Abrams Carl E Sharable multi-tenant reference data utility and methods of operation of same
US7743137B2 (en) * 2005-02-07 2010-06-22 Microsoft Corporation Automatically targeting notifications about events on a network to appropriate persons
US20060224772A1 (en) * 2005-04-04 2006-10-05 Digital Shoeboxes Llc Apparatus and computer readable medium for transporting and processing digital media
US20080222283A1 (en) * 2007-03-08 2008-09-11 Phorm Uk, Inc. Behavioral Networking Systems And Methods For Facilitating Delivery Of Targeted Content
JP4894550B2 (ja) * 2007-02-19 2012-03-14 富士通株式会社 コンテンツ配信システム、サーバ装置、およびコンテンツ配信方法
US20110125753A1 (en) * 2009-11-20 2011-05-26 Rovi Technologies Corporation Data delivery for a content system

Also Published As

Publication number Publication date
EP2756418A4 (en) 2015-04-22
WO2013039797A3 (en) 2013-05-10
WO2013039797A2 (en) 2013-03-21
EP2756418A2 (en) 2014-07-23
US20130066979A1 (en) 2013-03-14
JP2014531072A (ja) 2014-11-20

Similar Documents

Publication Publication Date Title
US9208476B2 (en) Counting and resetting broadcast system badge counters
JP6126099B2 (ja) タイムリーイベントデータ分配用マーケットプレイス
US20130067024A1 (en) Distributing multi-source push notifications to multiple targets
US8595322B2 (en) Target subscription for a notification distribution system
US10057341B2 (en) Peer-to-peer architecture for web traffic management
US11916727B2 (en) Processing high volume network data
US20130066980A1 (en) Mapping raw event data to customized notifications
US9137325B2 (en) Efficiently isolating malicious data requests
US20180248709A1 (en) Managing channels in an open data ecosystem
KR20140063690A (ko) 복수의 장치로 이벤트를 배포하는 기법
KR101950050B1 (ko) 이벤트 데이터 획득을 위한 스케일 아웃 시스템
US9578120B1 (en) Messaging with key-value persistence
US8805940B2 (en) Enhanced replication for message services
US20170118082A1 (en) Systems and methods for an intelligent, distributed, autonomous, and scalable resource discovery, management, and stitching
Anta et al. Distributed slicing in dynamic systems
Hong et al. Global-scale event dissemination on mobile social channeling platform

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid