KR20220047796A - 실시간 메시지들을 전달하기 위한 메시징 플랫폼 - Google Patents

실시간 메시지들을 전달하기 위한 메시징 플랫폼 Download PDF

Info

Publication number
KR20220047796A
KR20220047796A KR1020227007214A KR20227007214A KR20220047796A KR 20220047796 A KR20220047796 A KR 20220047796A KR 1020227007214 A KR1020227007214 A KR 1020227007214A KR 20227007214 A KR20227007214 A KR 20227007214A KR 20220047796 A KR20220047796 A KR 20220047796A
Authority
KR
South Korea
Prior art keywords
subscription
query
response
event
messages
Prior art date
Application number
KR1020227007214A
Other languages
English (en)
Other versions
KR102498752B1 (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 트위터, 인크.
Priority to KR1020227025846A priority Critical patent/KR102498777B1/ko
Publication of KR20220047796A publication Critical patent/KR20220047796A/ko
Application granted granted Critical
Publication of KR102498752B1 publication Critical patent/KR102498752B1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • G06F16/90324Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9536Search customisation based on social or collaborative filtering
    • 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
    • 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
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services
    • H04L51/14
    • H04L51/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • H04L51/32
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • H04L67/2833
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Information Transfer Between Computers (AREA)
  • Preparation Of Clay, And Manufacture Of Mixtures Containing Clay Or Cement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시내용은, 메시지 전달의 속도를 증가시키고, 활성 질의 가입들의 수의 변동을 처리하기 위해 컴퓨터 자원들의 관리를 효과적으로 제어하고/하거나, 저자들의 관점에서 생성된 메시지들에 대해 질의 가입들을 매칭시키면서 질의 가입들을 개시한 사용자들의 관점에서 실시간으로 그러한 메시지들을 전달하는 것의 보안을 증가시키는 방식으로, 메시징 플랫폼 상에서 교환되는 메시지들의 큰 스트림으로부터의 콘텐츠와 매칭하는 질의 가입들에 따라 클라이언트 애플리케이션들에 시간에 걸쳐 실시간 메시지들을 스트리밍하는 것에 관한 것이다.

Description

실시간 메시지들을 전달하기 위한 메시징 플랫폼
[0001] 본 출원은, 2019년 8월 6일자로 출원된 미국 가출원 제62/883,633호에 대한 우선권을 주장하는, 2019년 10월 30일자로 출원된 미국 정규 출원 제16/669,044호 및 2019년 10월 30일자로 출원된 미국 정규 출원 제16/668,811호의 계속 출원이고 이들에 대한 우선권을 주장하며, 이 출원들의 개시내용들은 그 전체가 인용에 의해 본원에 포함된다.
[0002] 본 출원은 또한, 2019년 8월 6일자로 출원된 미국 가특허 출원 제62/883,633호에 대한 우선권을 주장하며, 이 출원의 개시내용은 그 전체가 인용에 의해 본원에 포함된다.
[0003] 소셜 미디어 메시징 플랫폼은 그의 사용자들 사이에서 수백만 또는 수억개의 소셜 미디어 메시지들의 교환을 용이하게 할 수 있다. 플랫폼 상에서 교환되는 메시지들은 종종 플랫폼의 사용자들에게 현재 이벤트들에 대한 최신 업데이트 또는 보고를 제공할 수 있다. 일부 예들에서, 사용자는 플랫폼 상에서 검색을 제출하고 결과들의 스트림을 수신할 수 있으며, 따라서 사용자는 하나 이상의 키워드와 매칭하는 메시지들을 시간에 걸쳐 볼 수 있다. 그러나, 일정 시간 기간에 걸쳐 매우 큰 메시지 스트림 내의 메시지들을 매칭시키면서 그러한 메시지들을 사용자에게 실시간으로 렌더링하는 것은 처리 속도, 컴퓨터 자원 할당, 및 보안 문제들과 같은 복잡하고 기술적인 과제들을 수반한다.
[0004] 본 개시내용은, 메시지 전달의 속도를 증가시키고, 활성 질의 가입들의 수의 변동을 처리하기 위해 컴퓨터 자원들의 관리를 효과적으로 제어하고/하거나, 저자(author)들의 관점에서 생성된 메시지들에 대해 질의 가입들을 매칭시키면서 질의 가입들을 개시한 사용자들의 관점에서 실시간으로 그러한 메시지들을 전달하는 것의 보안을 증가시키는 방식으로, 메시징 플랫폼 상에서 교환된 메시지들의 큰 스트림으로부터의 콘텐츠와 매칭하는 질의 가입들에 따라 클라이언트 애플리케이션들에 시간에 걸쳐 실시간 메시지들을 스트리밍하는 것에 관한 것이다.
[0005] 클라이언트 애플리케이션이 활성 질의와 관련된 메시지들의 스트림을 수신하기 시작하는 활성 질의를 확립하기 위해, 클라이언트 애플리케이션은 질의 가입 요청(예를 들어, GraphQL 가입 질의)을 생성하고 네트워크를 통해 메시징 플랫폼의 가입 실행기(예를 들어, GraphQL 엔진)에 전송하여, 가입 실행기로 하여금 질의 가입을 생성하고 질의 가입을 메시징 플랫폼의 이벤트 생성기 시스템에 제공하게 할 수 있다. 또한, 클라이언트 애플리케이션은 클라이언트 애플리케이션과 전송 엔진 사이에 전달 채널을 생성하기 위해 가입 요청을 생성하여 전송 엔진에 전송할 수 있다. 이벤트 생성기 시스템에 의해 매칭되는 메시지들은 전달 채널을 통해 클라이언트 애플리케이션에 스트리밍될 수 있다. 이러한 방식으로, 질의 가입들의 관리는 2개의 별개의 모듈, 예를 들어 가입 실행기 및 전송 엔진을 사용함으로써 메시지들의 전달로부터 분리되며, 이는 질의 생성으로부터 매칭으로의 전달, 이어서 클라이언트로의 실시간 메시지들의 렌더링의 속도를 증가시킬 수 있다. 또한, 일부 예들에서, 2개의 가입이 (예를 들어, 하나는 가입 실행기에서, 하나는 전송 엔진에서) 생성되기 때문에, 이는 클라이언트 애플리케이션이 가입 실행기 및 전송 모듈 둘 다에서 갱신되어야 한다는 것을 시사할 수 있다. 그러나, 본 개시내용에서 나중에 논의되는 바와 같이, 클라이언트 애플리케이션은 전송 엔진으로 갱신될 수 있고, 메시징 플랫폼의 구조는 질의 가입이 전송 엔진 및 가입 실행기에서 갱신되게 할 수 있고, 그에 따라 질의 가입을 유지하기 위해 클라이언트 애플리케이션과 메시징 플랫폼 사이에서 전송되는 통신의 양을 감소시킬 수 있다. 또한, 메시징 플랫폼은 큰 메시지 스트림(예를 들어, 초당 50k개 초과의 메시지들)에 대해 수천 개의 클라이언트 애플리케이션으로부터의 질의 가입들을 실행하고 초당 수만 개의 메시지들을 클라이언트 애플리케이션들에 전달할 수 있다.
[0006] 사용자는 사용자 인터페이스를 리프레시하거나 사용자 인터페이스 상에서 새로운 메시지들을 보기 위한 다른 요청을 제출할 필요가 없을 수 있고, 오히려 다른 사용자들이 질의 가입과 매칭하는 메시지들을 메시징 플랫폼 상에 포스팅하는 것에 응답하여 메시지들이 사용자의 사용자 인터페이스에 푸시된다. 예를 들어, 사용자는 활성 질의를 생성하기 위해 "dog"와 같은 검색어를 입력하고, 이어서 새로운 메시지들이 생성되고 메시징 플랫폼에 포스팅될 때 검색어 "dog"를 포함하는 메시지들의 스트림을 활성 질의가 만료될 때까지 계속하여 수신할 수 있다. 정적 질의를 제출할 때쯤에 결과들이 한번 제공되는(예컨대, 검색 요청에 응답하여 웹 결과들의 리스트를 수신하는) 정적 질의와 달리, 사용자는 활성 질의의 제출 후에(그리고 활성 질의가 만료될 때까지) 매칭된 콘텐츠를 계속하여 볼 수 있다.
[0007] 이벤트 생성기 시스템은 매칭 콘텐츠를 식별하는 질의 가입들을 동시에 실행하도록 구성된 이벤트 생성기 관리기 및 복수의 이벤트 생성기들을 포함한다. 이벤트 생성기 관리기는 가입 실행기로부터 질의 가입을 수신하고, 질의 가입이 할당된 이벤트 생성기에 저장되도록 하나 이상의 이벤트 생성기들에게 질의 가입을 할당한다. 일부 예들에서, 이벤트 생성기 관리기는 이벤트 생성기들의 구성을 관리하여, 예를 들어, 질의 가입들의 저장 및 제거를 유발하여, 이벤트 생성기 시스템에서 컴퓨팅 자원들을 제어할 수 있다. 예를 들어, 이벤트 생성기 관리기는 이벤트 생성기들로부터 만료된(또는 결함 있는) 질의 가입들을 제거하고, 새로운 질의 가입들이 이벤트 생성기 관리기에서 수신될 때 이들을 할당할 수 있다. 할당된 이벤트 생성기는 메시지 큐로부터의 메시지가 질의 가입과 매칭하는 것에 응답하여 응답 이벤트를 생성한다. 응답 이벤트는 질의 가입과 매칭되는 콘텐츠를 갖는 메시지를 식별할 수 있다.
[0008] 가입 실행기는 응답 이벤트들을 수신하고, 질의 가입을 개시한 사용자의 관점에서 데이터를 갖는 응답 이벤트들에 의해 식별된 메시지들을 생성하고, 전달 채널을 통해 전달될 메시지들을 전송 엔진에 제공한다. 예를 들어, 메시지 큐 내의 메시지들은 그들의 저자들의 관점에서 생성되었다. 그러나, 클라이언트 애플리케이션들에 전달된 메시지들은 요청들을 개시한 사용자들의 관점에서 데이터를 갖도록 요구될 수 있다. 가입 실행기는 메시지들이 이벤트 생성기 시스템에 의해 매칭된 후이지만 전송 엔진에 의해 전달되기 전에 메시지들을 생성할 수 있다(예를 들어, 메시지들을 수화(hydrate)하고 메시지들에 가시성 규칙들을 적용할 수 있다). 이러한 방식으로, 매칭된 메시지의 저자가 질의 가입을 개시한 사용자를 제한(예를 들어, 차단 또는 뮤팅)한 경우, 가입 실행기는 그 메시지를 폐기할 수 있고, 그에 따라 메시징 플랫폼의 보안을 증가시킬 수 있다. 또한, 일부 예들에서, 응답 이벤트는 사용자가 가입을 위해 요청한 데이터만을 포함할 수 있기 때문에, 이벤트 버스 상에 게재(publish)된 데이터의 양이 감소될 수 있어, 어떤 추가 데이터도 클라이언트에게 전송되지 않을 수 있으며, 이는 초당 더 많은 이벤트를 스트리밍하기 위한 대역폭의 절약을 도울 수 있다.
[0009] 일부 예들에서, 이벤트 생성기들은 복수의 이벤트 생성기 그룹들로 그룹화될 수 있고, 각각의 이벤트 생성기 그룹은 전체 메시지 스트림을 수신한다. 각각의 생성기 그룹은 복수의 이벤트 생성기들을 포함하고, 각각의 이벤트 생성기는 전체 메시지 스트림의 별개의 부분을 수신한다. 각각의 이벤트 생성기 그룹은 질의 가입들의 별개의 부분을 할당받는다. 이벤트 생성기 관리기는 가입 질의를 이벤트 생성기 그룹에 할당할 수 있고, 그룹 내의 각각의 이벤트 생성기는 질의 가입을 저장하고 실행한다. 일부 예들에서, 이벤트 생성기 관리기는 제1 이벤트 생성기 그룹 및 제2 이벤트 생성기 그룹에 가입을 할당할 수 있어서, 이벤트 생성기 그룹들 중 하나에서 질의 가입을 처리하는 데 에러가 있는 경우 질의 가입이 유지될 수 있다. 이러한 방식으로, 시스템은 변동하는 질의 가입들 및 응답 이벤트들의 양을 고려하기 위해 이벤트 생성기 그룹들의 수를 증가 또는 감소시키고/시키거나 각각의 그룹 내의 이벤트 생성기들의 수를 증가 또는 감소시킴으로써 이벤트 생성기 시스템에서의 응답들의 양을 쉽게 제어할 수 있다. 예를 들어, 단일 이벤트 생성기 그룹 내의 이벤트 생성기들의 수가 증가되는 것에 응답하여, 각각의 개별 이벤트 생성기는 처리할 메시지 스트림으로부터 더 적은 메시지들을 수신할 수 있고, 결과적으로 추가 검색들을 처리할 더 많은 계산 용량을 가질 수 있다. 이벤트 생성기 그룹들의 수가 증가되는 것에 응답하여, 이벤트 생성기에 할당되는 검색어들의 수가 감소될 수 있다.
[0010] 일부 예들에서, 이벤트 생성기 시스템은 이벤트 생성기들로부터 응답 이벤트들을 수신하고, 응답 이벤트들에 의해 식별되는 메시지들이 스트리밍 레이트 임계치 이하인 방식으로 클라이언트 애플리케이션으로 스트리밍되도록 스트리밍 레이트를 제어하기 위해 하나 이상의 응답 이벤트를 폐기하는 수집기 서비스를 포함한다. 예를 들어, 메시지들이 빠른 레이트로 스트리밍되는 경우, 사용자는 스트리밍된 메시지들을 소비하지 못할 수 있다. 따라서, 수집기 서비스는 메시지들이 스트리밍되는 레이트가 임계 레벨 이하이도록 스트리밍 레이트를 낮출 수 있다. 예를 들어, 스트리밍 레이트 임계치가 초당 10개의 메시지인 경우, 수집기 서비스는 1초 시간 간격 내에 10개를 넘는 응답 이벤트들을 폐기할 수 있다. 일부 예들에서, 수집기 서비스는 응답 이벤트들이 생성될 때의 시간 이외의 다른 속성들에 기초하여 메시지들을 폐기할 수 있다. 예를 들어, 수집기 서비스는 임계치 미만인 스트리밍 레이트로 메시지들을 제공하기 위해 낮은 품질 또는 남용으로서 예측되는 메시지들을 폐기할 수 있다. 일부 예에서, 수집기 서비스는 임계치 미만인 스트리밍 레이트로 메시지들을 제공하기 위해 낮은 관여들을 갖는 것으로 예측되는 메시지들을 폐기할 수 있다. 이들 및 다른 특징들은 상세한 개시내용에서 추가로 논의된다.
[0011] 일부 예들에서, 수집기 서비스는 이벤트 생성기들로부터 상태 응답들을 수신하고 상태 응답들을 메모리 캐시에 저장한다. 수집기 서비스는 상태 응답들에 대해 메모리 캐시에 주기적으로 질의하는 것에 의해 질의 가입의 건강을 결정할 수 있다. 수집기 서비스가 질의 가입이 수리가능하다고 결정하면, 수집기 서비스는 결함 있는 것으로서 보고하는 하나 이상의 이벤트 생성기들에 가입 데이터를 제공하여 질의 가입이 수리될 수 있게 할 수 있다.
[0012] 일 양상에 따르면, 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템은 서버 컴퓨터에 의해 실행 가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐를 포함하고, 메시징 플랫폼은 메시지들을 컴퓨팅 디바이스에 의해 실행 가능한 클라이언트 애플리케이션의 사용자 인터페이스에 스트리밍하도록 구성된다. 시스템은 복수의 이벤트 생성기들, 및 질의 가입을 수신하고, 질의 가입을 복수의 이벤트 생성기들 중 하나 이상에 할당하도록 구성된 이벤트 생성기 관리기를 포함하고, 각각의 이벤트 생성기는 메시지들의 스트림으로부터의 메시지가 질의 가입을 충족시키는 것에 응답하여 응답 이벤트를 생성하도록 구성된다. 시스템은 복수의 이벤트 생성기들로부터 상태 응답들을 수신하고 상태 응답들을 메모리 캐시에 저장하도록 구성된 수집기 서비스를 포함하고, 수집기 서비스는 메모리 캐시에서 상태 응답들을 질의함으로써 질의 가입의 건강 상태를 주기적으로 결정하도록 구성된다. 건강 상태가 수리 가능한 것으로 결정된 것에 응답하여, 수집기 서비스는 메모리 캐시로부터 가입 질의에 관한 가입 데이터를 획득하고 가입 데이터를 하나 이상의 이벤트 생성기에게 제공하여 질의 가입을 재시작하도록 구성된다.
[0013] 일부 양상들에 따르면, 시스템은 다음의 특징들 중 하나 이상(또는 이들의 임의 조합)을 포함할 수 있다. 이벤트 생성기 관리기는 쓰리프트 호출(thrift call)을 통해 질의 가입을 수신하도록 구성된 애플리케이션 프로그래밍 인터페이스(API)를 포함한다. 이벤트 생성기 관리기는 복수의 이벤트 생성기들에서 처리되는 질의 가입들의 수 및 메시지 스트림의 크기를 모니터링하고, 질의 가입들의 수 및 메시지 스트림의 크기에 기초하여 복수의 이벤트 생성기들의 수를 조정하도록 구성된다. 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 이벤트 생성기 관리기는 질의 가입을 제1 이벤트 생성기 그룹 및 제2 이벤트 생성기 그룹에 할당하도록 구성된다. 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 이벤트 생성기 관리기는 질의 가입과 연관된 사용자 식별자에 기초하여 적어도 하나의 이벤트 생성기 그룹에 질의 가입을 할당하도록 구성된다. 수집기 서비스는 이벤트 생성기들로부터 응답 이벤트들을 수신하고, 응답 이벤트들을 메모리 캐시에 저장하고, 응답 이벤트 버스 상에 응답 이벤트들을 게재하도록 구성된다.
[0014] 새로운 응답 이벤트의 수신에 응답하여, 수집기 서비스는 메모리 캐시에 질의하는 것에 의해 질의 가입에 대한 응답 이벤트들이 스트리밍 레이트 임계치를 초과했는지를 결정하도록 구성되고, 수집기 서비스는 스트리밍 레이트 임계치가 초과되는 것에 응답하여 새로운 응답 이벤트를 폐기하도록 구성된다. 새로운 응답 이벤트의 수신에 응답하여, 수집기 서비스는 새로운 응답 이벤트의 메시지 식별자가 메모리 캐시에 저장되어 있는지를 결정하도록 구성되고, 수집기 서비스는 응답 이벤트 버스 상에 새로운 응답 이벤트를 게재하고 메시지 식별자가 메모리 캐시에 저장되어 있지 않은 것에 응답하여 새로운 응답 이벤트를 메모리 캐시에 저장하도록 구성된다. 수집기 서비스는 메시지 식별자가 메모리 캐시에 저장되어 있는 것에 응답하여 새로운 응답 이벤트를 폐기하도록 구성된다. 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 각각의 이벤트 생성기 그룹은 다수의 이벤트 생성기를 포함하여 메시지 스트림이 각각의 그룹의 이벤트 생성기들 사이에 할당되게 한다.
[0015] 시스템은 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 질의 가입 요청의 수신에 응답하여 이벤트 생성기 관리기에 질의 가입을 전송하도록 구성된 가입 실행기, 및 응답 이벤트들에 의해 식별된 메시지들이 전달 채널을 통해 질의 가입이 활성인 시간 기간 동안 클라이언트 애플리케이션에 스트리밍되도록, 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 가입 요청의 수신에 응답하여 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하도록 구성된 전송 엔진을 포함한다. 이벤트 생성기 관리기는 질의 가입의 만료에 응답하여, 할당된 그룹에 대한 복수의 이벤트 생성기들 각각에서 질의 가입을 삭제하도록 구성된다.
[0016] 일 양상에 따르면, 비일시적 컴퓨터 판독가능 매체는 실행가능 명령어들을 저장하며, 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때, 적어도 하나의 프로세서로 하여금, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐 내의 콘텐츠와 매칭시키기 위한 질의 가입을 수신하게 하고, 질의 가입을 복수의 이벤트 생성기들 중 하나 이상에 할당하게 하고, 개별 이벤트 생성기에 의해, 질의 가입의 질의어를 포함하는 메시지들의 스트림의 각각의 부분으로부터의 메시지에 응답하여 응답 이벤트를 생성하게 하고, 수집기 서비스에 의해, 이벤트 생성기들로부터 상태 응답들을 수신하고 상태 응답들을 메모리 캐시에 저장하게 하고, 수집기 서비스에 의해, 메모리 캐시에서 상태 응답들을 질의함으로써 질의 가입의 건강 상태를 주기적으로 결정하고, 건강 상태가 수리가능한 것으로 결정되는 것에 응답하여, 메모리 캐시로부터 가입 질의에 관한 가입 데이터를 획득하게 하고, 그리고 가입 데이터를 하나 이상의 이벤트 생성기들에게 제공하여 질의 가입을 재시작하게 하도록 구성된다.
[0017] 일부 양상들에 따르면, 비일시적 컴퓨터 판독가능 매체는 위의/아래의 특징들 중 하나 이상(또는 이들의 임의 조합)을 제공하거나 야기하도록 구성된 명령어들을 저장할 수 있다. 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 질의 가입은 이벤트 생성기 그룹에 할당된다. 질의 가입은 질의 가입과 연관된 사용자 식별자를 사용하여 모듈로 연산의 실행에 기초하여 이벤트 생성기 그룹에 할당된다. 동작들은 응답 이벤트 버스 상에 응답 이벤트를 게재하고 응답 이벤트를 메모리 캐시에 저장하는 것을 더 포함할 수 있다. 동작들은 일정 시간 기간 내의 응답 이벤트들의 수가 스트리밍 레이트 임계치를 초과했는지를 결정하고, 스트리밍 레이트 임계치가 초과된 것에 응답하여 응답 이벤트를 폐기하는 것을 더 포함할 수 있다. 동작들은 응답 이벤트에 의해 식별된 메시지가 이미 응답 이벤트 버스에 게재되었는지를 결정하고, 메시지가 응답 이벤트 버스에 이미 게재된 것으로 결정된 것에 응답하여 응답 이벤트를 폐기하는 것을 더 포함할 수 있다. 동작들은 질의 가입의 건강 상태를 나타내는 상태 메시지의 전송을 개시하는 것을 더 포함할 수 있다. 동작들은, 가입 실행기에 의해, 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 질의 가입 요청의 수신에 응답하여 이벤트 생성기 관리기에 질의 가입을 전송하고, 전송 엔진에 의해, 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 가입 요청의 수신에 응답하여 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하고, 가입 실행기에 의해, 응답 이벤트로부터의 메시지 식별자 및 질의 가입과 연관된 사용자 식별자에 기초하여 메시지를 생성하고, 전송 엔진에 의해, 질의 가입이 활성인 시간 기간 동안 전달 채널을 통해 메시지를 클라이언트 애플리케이션에 스트리밍하는 것을 더 포함할 수 있다.
[0018] 일 양상에 따르면, 메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법은, 이벤트 생성기 관리기에 의해, 서버 컴퓨터에 의해 실행 가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐 내의 콘텐츠와 매칭시키기 위한 질의 가입을 수신하는 단계, 이벤트 생성기 관리기에 의해, 질의 가입을 복수의 이벤트 생성기 그룹들 중의 이벤트 생성기 그룹에 할당하는 단계 ― 각각의 이벤트 생성기 그룹은 복수의 이벤트 생성기들을 포함함 ―, 개별 이벤트 생성기에 의해, 질의 가입의 질의어를 포함하는 메시지들의 스트림의 각각의 부분으로부터의 메시지에 응답하여 응답 이벤트를 생성하는 단계, 수집기 서비스에 의해, 응답 이벤트를 응답 이벤트 버스에 게재하는 단계, 수집기 서비스에 의해, 이벤트 생성기들로부터 상태 응답들을 수신하고 상태 응답들을 메모리 캐시에 저장하는 단계, 수집기 서비스에 의해, 메모리 캐시에서 상태 응답들을 질의함으로써 질의 가입의 건강 상태를 주기적으로 결정하는 단계, 및 건강 상태가 수리가능한 것으로 결정되는 것에 응답하여, 메모리 캐시로부터 가입 질의에 관한 가입 데이터를 획득하는 단계, 및 하나 이상의 이벤트 생성기들에게 가입 데이터를 제공하여 질의 가입을 재시작하는 단계를 포함할 수 있다.
[0019] 일부 양상들에 따르면, 방법은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 질의 가입은 1차 이벤트 생성기 그룹 및 2차 이벤트 생성기 그룹에 할당된다. 질의 가입은 질의 가입과 연관된 사용자 식별자에 기초하여 이벤트 생성기 그룹에 할당된다. 방법은, 수집기 서비스에 의해, 게재 단계 전에 일정 시간 기간 내의 응답 이벤트들의 수가 스트리밍 레이트 임계치를 초과했는지를 결정하는 단계, 및 수집기 서비스에 의해, 스트리밍 레이트 임계치가 초과된 것에 응답하여 응답 이벤트를 폐기하는 단계를 포함할 수 있다. 방법은, 수집기 서비스에 의해, 게재 단계 전에 응답 이벤트에 의해 식별된 메시지가 응답 이벤트 버스에 이미 게재되었는지를 결정하는 단계, 및 수집기 서비스에 의해, 메시지가 응답 이벤트 버스에 이미 게재된 것으로 결정된 것에 응답하여 응답 이벤트를 폐기하는 단계를 포함할 수 있다.
[0020] 일 양상에 따르면, 메시징 플랫폼에서 질의 가입들을 처리하는 시스템은 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 메시지 큐, 질의 가입을 수신하고, 메시지들의 스트림의 메시지가 질의 가입의 질의어를 포함하는 것에 응답하여 응답 이벤트가 생성되도록, 질의 가입이 활성인 동안 응답 이벤트들을 생성하도록 구성된 이벤트 생성기, 응답 이벤트들을 수신하고, 응답 이벤트들에 의해 식별된 메시지들이 클라이언트 애플리케이션으로 전달되는 스트리밍 레이트를 제어하기 위해 응답 이벤트들 중 하나 이상을 폐기하도록 구성된 수집기 서비스, 및 네트워크를 통해, 스트리밍 레이트에 따라 클라이언트 애플리케이션으로 메시지들을 전달하도록 구성된 전송 엔진을 포함한다.
[0021] 일부 양상들에 따르면, 시스템은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 수집기 서비스는 이전에 수신된 응답 이벤트들의 수가 일정 시간 기간에 걸쳐 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트를 폐기하도록 구성된다. 수집기 서비스는 이전에 게재된 응답 이벤트들의 수가 일정 시간 기간에 걸쳐 임계량 이하인 것에 응답하여 응답 이벤트 버스에 새로운 응답 이벤트를 게재하도록 구성된다. 수집기 서비스는 응답 이벤트들을 응답 이벤트 버스에 게재하고, 게재된 응답 이벤트들을 메모리 캐시에 저장하도록 구성되고, 새로운 응답 이벤트에 응답하여, 수집기 서비스는 일정 시간 기간에 걸쳐 메모리 캐시에 저장된 응답 이벤트들의 수를 결정하기 위해 메모리 캐시에 질의하고 메모리 캐시에 저장된 응답 이벤트들의 수가 일정 시간 기간 동안 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트를 폐기하도록 구성된다. 각각의 응답 이벤트는 메시지 식별자 및 질의 가입에 관한 정보를 포함하는 가입 데이터를 포함한다. 시스템은 응답 이벤트 버스를 통해 수집기 서비스로부터 응답 이벤트들을 수신하도록 구성된 가입 실행기를 포함할 수 있고, 가입 실행기는 각각의 응답 이벤트에 포함된 메시지 식별자 및 질의 가입과 연관된 사용자 식별자에 기초하여 각각의 응답 이벤트에 대한 메시지를 생성하도록 구성된다. 수집기 서비스는 이벤트 생성기로부터 제1 질의 가입에 대한 제1 응답 이벤트들을 수신하고 이벤트 생성기로부터 제2 질의 가입에 대한 제2 응답 이벤트들을 수신하도록 구성되고, 수집기 서비스는, 제1 응답 이벤트들에 의해 식별된 메시지들이 스트리밍 레이트 임계치 이하인 방식으로 제1 전달 채널을 통해 전송 엔진에 의해 스트리밍되도록 제1 응답 이벤트들 중 하나 이상을 폐기하도록 구성되고, 수집기 서비스는, 제2 응답 이벤트들에 의해 식별된 메시지들이 스트리밍 레이트 임계치 이하인 방식으로 제2 전달 채널을 통해 전송 엔진에 의해 스트리밍되도록 제2 응답 이벤트들 중 하나 이상을 폐기하도록 구성된다.
[0022] 수집기 서비스는 복수의 수집기 서비스 인스턴스들을 포함할 수 있고, 각각의 수집기 서비스 인스턴스는 응답 이벤트들의 별개의 부분을 수신하고, 하나 이상의 응답 이벤트들을 폐기하는 것에 의해 응답 이벤트들의 서브세트를 획득하여 각각의 서브세트가 개별 스트리밍 레이트 임계치 이하인 응답 이벤트들의 수를 포함하게 하도록 구성된다. 시스템은 각각의 수집기 서비스 인스턴스로부터 수신되는 응답 이벤트들의 각각의 서브세트를 저장하도록 구성되는 메모리 캐시를 포함할 수 있고, 복수의 수집기 서비스 인스턴스 중 적어도 하나는 서브세트들을 집계하고 집계된 서브세트들로부터 하나 이상의 응답 이벤트들을 폐기하여 집계된 서브세트들이 스트리밍 레이트 임계치 이하인 응답 이벤트들의 수를 포함하게 하도록 구성된다. 수집기 서비스는 응답 이벤트들에 의해 식별되는 메시지들에 대한 관여 확률 메트릭들을 수신하도록 구성되고, 관여 확률 메트릭들은 메시지들과의 예측된 관여 레벨들을 나타내고, 수집기 서비스는 관여 확률 메트릭들에 기초하여 하나 이상의 응답 이벤트들을 폐기하도록 구성된다. 수집기 서비스는 응답 이벤트들에 의해 식별되는 메시지들에 대한 메시지 건강 메트릭(message health metric)들을 수신하도록 구성되고, 메시지 건강 메트릭들은 메시징 플랫폼의 하나 이상의 조건들을 위반하는 위험 레벨들을 나타내고, 수집기 서비스는 메시지 건강 메트릭들에 기초하여 하나 이상의 응답 이벤트들을 폐기하도록 구성된다.
[0023] 일 양상에 따르면, 비일시적 컴퓨터 판독가능 매체는 실행 가능 명령어들을 저장하고, 실행 가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 수신하게 하고 ― 메시징 플랫폼은 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션의 사용자 인터페이스에 메시지들을 전달하도록 구성됨 ―, 메시징 플랫폼 상에서 활성 질의에 대한 질의 가입을 수신하게 하고, 질의 가입의 질의어를 포함하는 메시지들의 스트림의 메시지에 응답하여 응답 이벤트가 생성되도록, 질의 가입이 활성인 동안 응답 이벤트들을 생성하게 하고, 응답 이벤트들에 의해 식별된 메시지들이 클라이언트 애플리케이션으로 전달되는 스트리밍 레이트를 제어하기 위해 응답 이벤트들 중 하나 이상을 폐기하게 하고, 그리고 스트리밍 레이트에 따라 클라이언트 애플리케이션으로 메시지들을 네트워크를 통해 전달하게 하도록 구성된다.
[0024] 일부 양상들에 따르면, 비일시적 컴퓨터 판독가능 매체는 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 제공하거나 야기하는 명령어들을 포함할 수 있다. 새로 수신된 응답 이벤트는 이전에 수신된 응답 이벤트들의 수가 일정 시간 기간 동안 임계량을 초과하는 것에 응답하여 폐기된다. 새로 수신된 응답 이벤트는 이전에 게재된 응답 이벤트들의 수가 일정 시간 기간 동안 임계량 이하인 것에 응답하여 응답 이벤트 버스에 게재된다. 동작들은 응답 이벤트들을 응답 이벤트 버스에 게재하고, 게재된 응답 이벤트들을 메모리 캐시에 저장하고, 일정 시간 기간 동안 메모리 캐시에 저장된 응답 이벤트들의 수를 결정하고, 메모리 캐시에 저장된 응답 이벤트들의 수가 일정 시간 기간 동안 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트를 폐기하는 것을 더 포함할 수 있다. 동작들은 응답 이벤트 버스를 통해 응답 이벤트들을 수신하고 ― 각각의 응답 이벤트는 메시지 식별자를 포함함 ―, 각각의 응답 이벤트에 포함된 메시지 식별자 및 질의 가입과 연관된 사용자 식별자에 기초하여 각각의 응답 이벤트에 대해 메시지가 생성되도록 응답 이벤트들에 기초하여 메시지들을 생성하는 것을 포함할 수 있다.
[0025] 일 양상에 따르면, 메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법은 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환된 메시지들의 스트림을 수신하는 단계, 메시징 플랫폼 상에서 활성 질의에 대한 질의 가입을 수신하는 단계, 메시지들의 스트림의 메시지가 질의 가입의 질의어를 포함하는 것에 응답하여 응답 이벤트가 생성되도록 응답 이벤트들을 생성하는 단계, 응답 이벤트들에 의해 식별된 메시지들이 클라이언트 애플리케이션으로 전달되는 스트리밍 레이트를 제어하기 위해 응답 이벤트들 중 하나 이상을 폐기하는 단계 ― 각각의 응답 이벤트는 메시징 식별자를 포함함 ―, 각각의 응답 이벤트 내에 포함된 메시지 식별자 및 가입 질의와 연관된 사용자 식별자에 기초하여 메시지가 생성되도록 응답 이벤트에 기초하여 메시지들을 생성하는 단계, 및 스트리밍 레이트에 따라 메시지들을 네트워크를 통해 클라이언트 애플리케이션으로 전달하는 단계를 포함한다.
[0026] 일부 양상들에 따르면, 방법은 위의/아래의 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 새로 수신된 응답 이벤트는 이전에 수신된 응답 이벤트들의 수가 일정 시간 기간에 걸쳐 임계량을 초과하는 것에 응답하여 폐기된다. 방법은 응답 이벤트들을 응답 이벤트 버스에 게재하는 단계, 게재된 응답 이벤트들을 메모리 캐시에 저장하는 단계, 및 일정 시간 기간에 걸쳐 메모리 캐시에 저장된 응답 이벤트들의 수를 결정하는 단계 및 메모리 캐시에 저장된 응답 이벤트들의 수가 일정 시간 기간 동안 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트를 폐기하는 단계를 포함할 수 있다. 방법은 응답 이벤트들에 의해 식별된 메시지들에 대한 관여 확률 메트릭들을 수신하는 단계 ― 관여 확률 메트릭들은 메시지들과의 예측된 관여 레벨들을 나타냄 ―, 및 관여 확률 메트릭들에 기초하여 하나 이상의 응답 이벤트들을 폐기하는 단계를 포함할 수 있다. 방법은 응답 이벤트들에 의해 식별된 메시지들에 대한 메시지 건강 메트릭들을 수신하는 단계 ― 메시지 건강 메트릭들은 메시징 플랫폼의 하나 이상의 조건들을 위반하는 위험 레벨들을 나타냄 ―, 및 메시지 건강 메트릭들에 기초하여 하나 이상의 응답 이벤트들을 폐기하는 단계를 포함할 수 있다.
[0027] 일 양상에 따르면, 클라이언트 애플리케이션들에 실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법은, 가입 실행기에 의해, 클라이언트 애플리케이션으로부터의 질의 가입 요청의 수신에 응답하여 이벤트 생성기 시스템에 질의 가입을 전송하는 단계, 전송 엔진에 의해, 클라이언트 애플리케이션으로부터의 가입 요청의 수신에 응답하여 클라이언트 애플리케이션과 전송 엔진 사이에 전달 채널을 생성하는 단계, 이벤트 생성기 시스템에서, 질의 가입을 충족시키는 콘텐츠를 갖는 메시지들의 스트림으로부터의 메시지에 응답하여 응답 이벤트를 생성하는 단계, 가입 실행기에 의해, 응답 이벤트에 의해 식별된 메시지의 저자가 사용자 식별자와 연관된 사용자를 제한했는지를 결정하는 단계, 가입 실행기에 의해, 사용자가 저자에 의해 제한된 것으로 결정되는 것에 응답하여, 응답 이벤트에 의해 식별된 메시지를 폐기하는 단계, 및 전송 엔진에 의해, 사용자가 저자에 의해 제한되지 않은 것으로 결정되는 것에 응답하여, 질의 가입이 활성인 시간 기간 동안, 응답 이벤트에 의해 식별된 메시지를 전달 채널을 통해 클라이언트 애플리케이션에 스트리밍하는 단계를 포함한다.
[0028] 일부 양상들에 따르면, 방법은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 질의 가입 요청은 질의어 및 만료 시간을 포함한다. 이벤트 생성기 시스템은 복수의 이벤트 생성기들을 포함하고, 방법은 사용자 식별자에 기초하여 복수의 이벤트 생성기들 중 하나 이상에 질의 가입을 할당하는 단계를 포함한다. 가입 요청은 전송 토픽 및 사용자 식별자를 포함한다. 방법은, 가입 실행기에 의해, 질의 가입 요청의 수신에 응답하여 전송 토픽을 식별하는 단계, 가입 실행기에 의해, 질의 가입 요청의 수신에 응답하여 가입 식별자를 생성하는 단계, 및 네트워크를 통해, 가입 실행기에 의해, 가입 상태 응답을 클라이언트 애플리케이션에 전송하는 단계를 포함할 수 있고, 가입 상태 응답은 전송 토픽 및 가입 식별자를 포함하고, 가입 요청은 전송 토픽 및 가입 식별자를 포함한다. 방법은, 이벤트 생성기 관리기에 의해, 복수의 이벤트 생성기들에 질의 가입을 할당하는 단계, 복수의 이벤트 생성기들 각각에 질의 가입을 저장하는 단계, 및 각각의 이벤트 생성기에 의해, 질의 가입을 충족시키는 콘텐츠를 갖는 메시지들의 스트림으로부터의 메시지에 응답하여 응답 이벤트를 생성하는 단계를 포함할 수 있다.
[0029] 일 양상에 따르면, 클라이언트 애플리케이션들에 실시간 메시지들을 전달하기 위해 질의 가입들을 처리하기 위한 메시징 플랫폼은, 메시징 플랫폼 상에서 교환된 메시지들의 스트림을 수신하고, 질의 가입을 충족시키는 콘텐츠를 갖는 메시지들의 스트림으로부터의 메시지에 응답하여 응답 이벤트를 생성하도록 구성된 이벤트 생성기 시스템, 응답 이벤트에 의해 식별된 메시지의 저자가 질의 가입과 연관된 사용자를 제한했는지를 결정하고, 사용자가 저자에 의해 제한된 것으로 결정된 것에 응답하여, 응답 이벤트에 의해 식별된 메시지를 폐기하도록 구성된 가입 실행기, 및 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 확립하기 위해 클라이언트 애플리케이션으로부터 네트워크를 통해 가입 요청을 수신하도록 구성된 전송 엔진을 포함하고, 전송 엔진은, 사용자가 저자에 의해 제한되지 않은 것으로 결정된 것에 응답하여, 질의 가입이 활성인 시간 기간 동안, 응답 이벤트에 의해 식별된 메시지를 전달 채널을 통해 클라이언트 애플리케이션에 스트리밍하도록 구성된다.
[0030] 일부 양상들에 따르면, 메시징 플랫폼은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 가입 실행기는 클라이언트 애플리케이션으로부터의 질의 가입 요청의 수신에 응답하여 이벤트 생성기 시스템에 질의 가입을 전송하도록 구성된다. 가입 실행기는 클라이언트 애플리케이션으로부터의 질의 가입 요청의 수신에 응답하여 전송 토픽을 식별하도록 구성되고, 가입 실행기는 네트워크를 통해, 가입 상태 응답을 클라이언트 애플리케이션에 전송하도록 구성되고, 가입 상태 응답은 전송 토픽을 포함한다. 가입 실행기는 질의 가입을 고유하게 식별하는 가입 식별자를 생성하고 가입 상태 응답에서 가입 식별자를 전송하도록 구성된다. 가입 요청은 전송 토픽 및 사용자 식별자를 포함한다.
[0031] 가입 실행기는 응답 이벤트들이 이벤트 생성기 시스템에 의해 생성될 때 응답 이벤트들을 획득하기 위해 응답 이벤트 버스에 연결되고, 각각의 응답 이벤트는 메시지 식별자를 포함한다. 가입 실행기는 메시지 식별자에 기초하여 메시지를 생성하도록 구성되고, 가입 실행기는 전달 채널을 통해 클라이언트 애플리케이션으로 전달하기 위해 메시지를 전송 엔진에 제공하도록 구성된다. 가입 실행기는 GraphQL 애플리케이션 프로그래밍 인터페이스(API) 및 GraphQL 실행기를 포함한다. GraphQL 실행기는 각각의 응답 이벤트에 대한 자바스크립트 객체 표기(JSON) 메시지를 생성하기 위해 GraphQL API와 통신하도록 구성된다. GraphQL 실행기는 전달 채널을 통해 클라이언트 애플리케이션으로 전달하기 위해 JSON 메시지를 전송 엔진에 제공하도록 구성된다. 이벤트 생성기 시스템은 이벤트 생성기 관리기 및 복수의 이벤트 생성기들을 포함하고, 이벤트 생성기 관리기는 가입 실행기로부터 질의 가입을 수신하고 질의 가입을 복수의 이벤트 생성기들 중 하나 이상의 이벤트 생성기에 할당하도록 구성된다.
[0032] 일 양상에 따르면, 비일시적 컴퓨터 판독가능 매체는 실행가능 명령어들을 저장하고, 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금, 가입 실행기에 의해, 클라이언트 애플리케이션으로부터의 질의 가입 요청의 수신에 응답하여 이벤트 생성기 시스템에 질의 가입을 전송하게 하고, 전송 엔진에 의해, 클라이언트 애플리케이션으로부터의 가입 요청의 수신에 응답하여 클라이언트 애플리케이션과 전송 엔진 사이에 전달 채널을 생성하게 하고, 이벤트 생성기 시스템에서, 질의 가입을 충족시키는 콘텐츠를 갖는 메시지들의 스트림으로부터의 메시지에 응답하여 응답 이벤트를 생성하게 하고, 가입 실행기에 의해, 응답 이벤트에 의해 식별된 메시지의 저자가 사용자 식별자와 연관된 사용자를 제한했는지를 결정하게 하고, 가입 실행기에 의해, 사용자가 저자에 의해 제한된 것으로 결정되는 것에 응답하여, 응답 이벤트에 의해 식별된 메시지를 폐기하게 하고, 그리고 전송 엔진에 의해, 사용자가 저자에 의해 제한되지 않은 것으로 결정되는 것에 응답하여, 질의 가입이 활성인 시간 기간 동안, 응답 이벤트에 의해 식별된 메시지를 전달 채널을 통해 클라이언트 애플리케이션에 스트리밍하게 하도록 구성된다.
[0033] 일부 양상들에 따르면, 비일시적 컴퓨터 판독가능 매체는 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 제공하는 명령어들을 저장할 수 있다. 질의 가입 요청은 질의어 및 만료 시간을 포함하고, 가입 요청은 전송 토픽을 포함하고, 전달 채널은 메시지들이 전송 토픽에 대응하는 클라이언트 애플리케이션에 스트리밍되도록 전송 토픽과 연관된다. 동작들은, 가입 실행기에 의해, 질의 가입 요청에 포함된 가입 데이터에 기초하여 전송 토픽을 식별하고, 가입 실행기에 의해, 가입 데이터에 기초하여 가입 식별자를 생성하고, 가입 실행기에 의해, 네트워크를 통해, 가입 상태 응답을 클라이언트 애플리케이션에 전송하는 것을 포함할 수 있고, 가입 상태 응답은 전송 토픽 및 가입 식별자를 포함한다. 가입 요청은 전송 토픽 및 가입 식별자를 포함한다. 동작들은 이벤트 생성기 시스템의 하나 이상의 이벤트 생성기에 질의 가입을 할당하고, 각각의 할당된 이벤트 생성기에 질의 가입을 저장하고, 각각의 이벤트 생성기에 의해, 메시지들의 스트림으로부터의 메시지에 대해 매칭되는 질의 가입의 질의어에 응답하여 응답 이벤트를 생성하는 것을 포함할 수 있다.
[0034] 일 양상에 따르면, 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법은, 클라이언트 애플리케이션에 의해, 질의 가입 요청을 네트워크를 통해 메시징 플랫폼의 가입 실행기로 전송하는 단계 ― 질의 가입 요청은 가입 실행기로 하여금 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―, 클라이언트 애플리케이션에 의해, 가입 요청을 네트워크를 통해 메시징 플랫폼의 전송 엔진으로 전송하는 단계 ― 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―, 클라이언트 애플리케이션에 의해, 질의 가입이 활성인 동안 메시지들이 클라이언트 애플리케이션의 사용자 인터페이스 상에 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하는 단계, 및 클라이언트 애플리케이션에 의해, 가입 갱신 요청을 네트워크를 통해 전송 엔진으로 주기적으로 전송하는 단계를 포함하고, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다.
[0035] 일부 양상들에 따르면, 방법은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 질의 가입 요청은 질의어 및 사용자 식별자를 포함한다. 질의 가입 요청은 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함한다. 가입 요청은 전송 토픽을 포함하고, 전송 토픽은 질의 가입과 연관된 하나 이상의 질의어에 대응한다. 방법은, 클라이언트 애플리케이션에 의해, 네트워크를 통해, 가입 실행기로부터 가입 상태 응답을 수신하는 단계 ― 가입 상태 응답은 전송 토픽 및 가입 식별자를 포함함 ―, 및 클라이언트 애플리케이션에 의해, 전송 토픽 및 가입 식별자를 포함하도록 가입 요청을 생성하는 단계를 포함할 수 있다. 질의 가입 요청과 가입 요청은 실질적으로 서로 병렬로 전송된다. 방법은, 클라이언트 애플리케이션에 의해, 전송 엔진으로부터 채널 식별자를 수신하는 단계를 포함할 수 있고, 채널 식별자는 전달 채널을 식별한다. 메시지들이 시간에 걸쳐 타임라인 상에 자동으로 스트리밍되도록 메시지들의 스트림이 클라이언트 애플리케이션의 타임 라인 상에 렌더링된다. 타임라인은 클라이언트 애플리케이션의 사용자 인터페이스 상의 검색 열이고, 방법은 클라이언트 애플리케이션에 의해 검색 열의 생성에 응답하여 질의 가입 요청을 생성하는 단계를 더 포함한다. 타임라인은 클라이언트 애플리케이션의 사용자의 홈 타임라인이며, 따라서 메시지들은 사용자의 홈 타임라인으로 자동으로 스트리밍된다. 메시지들의 스트림은 메시징 플랫폼 상의 대화와 관련된 대화 그래프 내의 메시지들을 포함한다.
[0036] 일 양상에 따르면, 비일시적 컴퓨터 판독가능 매체는 실행가능 명령어들을 저장하고, 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금, 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션에 의해, 네트워크를 통해, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼의 가입 실행기로 질의 가입 요청을 전송하고 ― 질의 가입 요청은 가입 실행기로 하여금 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―, 클라이언트 애플리케이션에 의해, 네트워크를 통해, 가입 실행기로부터 상태 메시지 응답을 수신하고 ― 상태 메시지 응답은 전송 토픽을 포함함 ―, 클라이언트 애플리케이션에 의해, 네트워크를 통해, 메시징 플랫폼의 전송 엔진으로 가입 요청을 전송하고 ― 가입 요청은 전송 토픽을 포함하고, 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―, 클라이언트 애플리케이션에 의해, 질의 가입이 활성인 동안 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 클라이언트 애플리케이션의 사용자 인터페이스 상에서 메시지들이 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하고, 클라이언트 애플리케이션에 의해, 네트워크를 통해, 가입 갱신 요청을 주기적으로 전송 엔진으로 전송하게 하도록 구성되며, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다.
[0037] 일부 양상들에 따르면, 비일시적 컴퓨터 판독가능 매체는 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 제공하는 명령어들을 저장할 수 있다. 질의 가입 요청은 질의어, 사용자 식별자, 및 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함한다. 질의 가입 요청은 GraphQL 가입 질의이다. 동작들은 클라이언트 애플리케이션에 의해, 네트워크를 통해, 전달 채널을 통해 전송 엔진으로부터 상태 메시지를 수신하고, 클라이언트 애플리케이션에 의해, 상태 메시지에 기초하여 질의 가입 요청 및 가입 요청을 재전송하는 것을 포함할 수 있다.
[0038] 일 양상에 따르면, 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템은 메시징 플랫폼 상에서 교환되는 메시지들의 큐를 생성하도륵 구성된, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼, 및 클라이언트 애플리케이션의 사용자 인터페이스 상에 소셜 콘텐츠의 타임라인을 렌더링하도록 구성된, 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션을 포함한다. 클라이언트 애플리케이션은, 네트워크를 통해, 메시징 플랫폼의 가입 실행기로 질의 가입 요청을 전송하고 ― 질의 가입 요청은 가입 실행기로 하여금 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―, 네트워크를 통해, 메시징 플랫폼의 전송 엔진으로 가입 요청을 전송하고 ― 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―, 질의 가입이 활성인 동안 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 클라이언트 애플리케이션의 사용자 인터페이스 상에서 메시지들이 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하고, 네트워크를 통해, 전송 엔진으로 가입 갱신 요청을 주기적으로 전송하도록 구성되고, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다.
[0039] 일부 양상들에 따르면, 시스템은 상기/하기 특징들 중 하나 이상(또는 이들의 임의의 조합)을 포함할 수 있다. 질의 가입 요청은 질의어 및 사용자 식별자를 포함하는 GraphQL 가입 질의이다. 가입 요청은 전송 토픽을 포함하고, 전송 토픽은 질의어에 대응하고, 전송 토픽은 전송 엔진과 호환가능한 포맷을 갖는다. 질의 가입 요청 및 가입 요청은 실질적으로 서로 병렬로 전송된다. 클라이언트 애플리케이션은 질의 가입이 활성인 동안 메시지들의 스트림을 타임라인 상에 자동으로 렌더링하도록 구성된다. 메시지들의 스트림은 대화와 관련된 메시지들을 포함하고, 클라이언트 애플리케이션은 메시지가 메시징 플랫폼에 의해 생성되고 공유될 때 사용자 인터페이스 상에 대화와 관련된 메시지들을 푸시하도록 구성된다.
[0040] 도 1은 일 양상에 따른 메시징 플랫폼 상에서 교환되는 메시지들을 갖는 메시지 스트림으로부터의 콘텐츠와 매칭하는 질의 가입들에 따라 시간에 걸쳐 실시간 메시지들을 클라이언트 애플리케이션들에 스트리밍하기 위한 시스템의 개략도이다.
[0041] 도 2는 일 양상에 따른 질의 가입들의 생성을 위한 전송 엔진, 가입 실행기, 및 클라이언트 애플리케이션을 도시하는 시스템의 일부를 예시한다.
[0042] 도 3은 일 양상에 따른 질의 가입을 구현하고 응답 이벤트들을 생성하기 위한 이벤트 생성기 시스템 및 가입 실행기를 도시하는 시스템의 일부를 예시한다.
[0043] 도 4는 일 양상에 따른 전송 엔진에 전달 이벤트를 전달하기 위한 가입 실행기 및 전송 엔진을 도시하는 시스템의 일부를 예시한다.
[0044] 도 5는 일 양상에 따른 메시지들을 스트리밍하기 위한 전송 엔진 및 클라이언트 애플리케이션을 도시하는 시스템의 일부를 예시한다.
[0045] 도 6은 일 양상에 따른 질의 가입을 갱신하기 위한 이벤트 생성기 시스템, 가입 실행기, 전송 엔진, 및 클라이언트 애플리케이션을 도시하는 시스템의 일부를 예시한다.
[0046] 도 7은 일 양상에 따른 콘텐츠를 스트리밍하기 위한 다수의 타임라인들을 제공하는 클라이언트 애플리케이션의 사용자 인터페이스의 예를 예시한다.
[0047] 도 8은 일 양상에 따른 질의 가입들에 따라 메시지들을 스트리밍하기 위한 메시징 플랫폼의 예시적인 동작들을 도시하는 흐름도를 예시한다.
[0048] 도 9는 일 양상에 따른 질의 가입들에 따라 메시지들을 스트리밍하기 위한 클라이언트 애플리케이션의 예시적인 동작들을 도시하는 흐름도를 예시한다.
[0049] 도 10a는 일 양상에 따른 메시징 플랫폼 상에서 교환되는 메시지들을 갖는 메시지 스트림으로부터의 콘텐츠와 매칭하는 질의 가입들에 따라 시간에 걸쳐 실시간 메시지들을 클라이언트 애플리케이션들에 스트리밍하기 위한 시스템의 개략도를 예시한다.
[0050] 도 10b는 일 양상에 따른 이벤트 생성기 시스템의 예를 예시한다.
[0051] 도 11은 일 양상에 따른 이벤트 생성기 시스템의 수집기 서비스의 예를 예시한다.
[0052] 도 12는 일 양상에 따른 다수의 수집기 서비스 인스턴스들을 갖는 수집기 서비스의 예를 예시한다.
[0053] 도 13은 일 양상에 따른 이벤트 생성기 시스템의 예시적인 동작들을 도시하는 흐름도를 예시한다.
[0054] 도 14는 일 양상에 따른 임계 레벨 아래의 메시지들을 스트리밍하기 위한 메시징 플랫폼의 예시적인 동작들을 도시하는 흐름도를 예시한다.
[0055] 도 1은 일 양상에 따른, 하나 이상의 서버 컴퓨터(102)에 의해 실행가능한 메시징 플랫폼(104), 및 컴퓨팅 디바이스(124)에 의해 실행가능한 클라이언트 애플리케이션(126)을 포함하는 시스템(100)의 개략도이다. 메시징 플랫폼(104)은, 메시지 전달의 속도를 증가시키고, 활성 질의 가입들(141)의 수의 변동을 처리하기 위해 컴퓨터 자원들의 관리를 효과적으로 제어하고/하거나, 질의 가입들(141)을 매칭시키고 질의 가입들(141)을 개시한 사용자들의 관점에서 실시간으로 그러한 메시지들(132)을 전달하는 것의 보안을 증가시키는 방식으로, 메시지 스트림(114)으로부터의 콘텐츠와 매칭하는 질의 가입들(141)에 따라 시간에 걸쳐 실시간 메시지들(132)을 클라이언트 애플리케이션들(126)로 스트리밍하도록 구성된다.
[0056] 메시징 플랫폼(104)은 사용자 디바이스들(그 중 하나가 컴퓨팅 디바이스(124)로서 도시됨) 사이의 실시간 통신을 용이하게 하기 위한 플랫폼이다. 메시징 플랫폼(104)은 개인들, 비즈니스들, 및/또는 엔티티들의 수백만 개의 계정들(예를 들어, 가명 계정들, 신규 계정들 등)을 저장할 수 있다. 각각의 계정의 하나 이상의 사용자들은 메시징 플랫폼(104)을 사용하여 메시지들을 메시징 플랫폼(104)의 내부 및/또는 외부의 다른 계정들에 전송할 수 있다. 메시징 플랫폼(104)은 사용자들이 "실시간으로" 통신할 수 있게 하도록, 즉, 최소의 지연으로 다른 사용자들과 대화하고 동시 세션들 동안 하나 이상의 다른 사용자들과 대화를 수행할 수 있게 하도록 구성될 수 있다. 다시 말해서, 메시징 플랫폼(104)은 사용자가 메시지들(132)을 브로드캐스팅하게 할 수 있고, 사용자들 사이의 라이브 대화를 용이하게 하기 위해 합리적인 시간 프레임 내에 하나 이상의 다른 사용자들에게 메시지들(132)을 디스플레이할 수 있다. 일부 예들에서, 메시지(132)의 수신자들은 메시지(132)를 브로드캐스팅하는 사용자의 계정과 연결 그래프(169)에서 미리 정의된 그래프 관계를 가질 수 있다.
[0057] 클라이언트 애플리케이션(126)은 네트워크(150)를 통해 메시징 플랫폼(104)과 통신하도록 구성된다. 클라이언트 애플리케이션(126)은 사용자들이 메시지들(132)을 포스팅하고 이들과 상호작용하는 소셜 미디어 메시징 애플리케이션일 수 있다. 일부 예들에서, 클라이언트 애플리케이션(126)은 컴퓨팅 디바이스(124)의 운영 체제 상에서 실행되는 네이티브 애플리케이션이거나, 컴퓨팅 디바이스(124)의 브라우저 기반 애플리케이션과 연계하여 서버 컴퓨터(102)(또는 다른 서버) 상에서 실행되는 웹 기반 애플리케이션일 수 있다. 컴퓨팅 디바이스(124)는, 클라이언트 애플리케이션(126)과 메시징 플랫폼(104)이 서로 통신하는 것을 허용하는 방식으로 임의의 유형의 네트워크 연결들 및/또는 애플리케이션 프로그래밍 인터페이스(API)들을 사용하여 네트워크(150)를 통해 메시징 플랫폼(104)에 액세스할 수 있다.
[0058] 메시지들(132)은 새로운 메시지들의 생성 및 메시징 플랫폼(104)으로의 포스팅과 같은 메시지 생성 이벤트들을 지칭할 수 있다. 일부 예들에서, 메시지들(132)은 메시징 플랫폼(104) 상의 이전에 포스팅된 메시지들의 재공유와 같은 재공유 이벤트들을 지칭할 수 있다. 일부 예들에서, 메시지들(132)은 메시징 플랫폼(104) 상의 이전에 포스팅된 메시지들의 즐겨찾기 또는 애호와 같은 관여 이벤트들을 지칭할 수 있다.
[0059] 메시징 플랫폼(104)은 가입 실행기(116), 이벤트 생성기 시스템(106), 및 전송 엔진(122)을 포함한다. 가입 실행기(116)는, 네트워크(150)를 통해, 클라이언트 애플리케이션(126)으로부터 질의 가입 요청(140)을 수신하고, 응답 이벤트들(156)을 생성하기 위해 이벤트 생성기 시스템(106)에 질의 가입(141)을 전송하여, 응답 이벤트(156)가 질의 가입(141)의 기준들을 충족시키는 메시지 스트림(114)으로부터의 메시지에 응답하여 생성되도록 한다. 전송 엔진(122)은, 네트워크(150)를 통해, 클라이언트 애플리케이션(126)으로부터 가입 요청(154)을 수신하여, 전송 엔진(122)과 클라이언트 애플리케이션(126) 사이에 전달 채널(125)을 확립함으로써, 질의 가입(141)이 활성인 시간 기간 동안 생성되는 응답 이벤트들(156)에 응답하여, 질의 가입(141)의 기준들을 충족시키는 메시지들(132)이 전달 채널(125)을 통해 클라이언트 애플리케이션(126)으로 스트리밍되도록 한다.
[0060] 일부 예들에서, 메시지들(132)은 하나 이상의 타임라인들(130)에 스트리밍된다. 일부 예들에서, 메시지들(132)은 타임라인(130) 상에 시간순으로 스트리밍된다. 일부 예들에서, 메시지들(132)은 타임라인(130) 상에 역시간순으로 스트리밍된다. 일부 예들에서, 메시지들(132)은 타임라인(130) 상에 순위화된다. 일부 예들에서, 메시지들(132)은 타임라인(130) 상에 순위화되지 않는다. 일부 예들에서, 타임라인(130)은 검색 기준들과 매칭되는 메시지들(132)을 실시간으로 스트리밍하는 사용자 인터페이스(128) 상의 열(예를 들어, 검색 열)이다. 예를 들어, 사용자는 클라이언트 애플리케이션(126)을 사용하여 활성 질의를 제출하여 검색어 "dog"를 포함하는 메시지들(132)을 획득할 수 있고, 클라이언트 애플리케이션(126)은 활성 질의가 만료될 때까지(예를 들어, 사용자가 질의를 닫는 액션을 수행하거나 활성 질의가 타임아웃될 때까지) 검색어 "dog"를 포함하는 메시지들(132)을 타임라인(130) 상에 스트리밍한다.
[0061] 일부 예들에서, 타임라인(130)은 클라이언트 애플리케이션(126)이 메시징 플랫폼(104)에 저장된 연결 그래프(169)에서 사용자 계정에 링크된 사용자 계정들로부터 메시지들(132)을 실시간으로 스트리밍하는 사용자 계정의 홈 타임라인이다. 일부 예들에서, 타임라인(130)은 클라이언트 애플리케이션(126)이 사용자에게 직접 전송된 메시지들(132)을 스트리밍하는 직접 메시지 타임라인이다. 일부 예들에서, 메시지들(132)의 스트림은 메시징 플랫폼(104) 상의 대화에 관한 대화 그래프(167) 내의 메시지들을 포함한다. 대화 그래프(167)는 대화에 관한 메시지들(132)의 응답 구조를 정의할 수 있다. 일부 예들에서, 대화에 관한 메시지들(132)은 사용자들이 대화 그래프(167) 내의 메시지들(132)에 응답하고 있을 때 사용자 인터페이스(128)에 자동으로 푸시될 수 있다.
[0062] 본 명세서에서 논의된 바와 같이, 질의 가입들(141)의 관리는 2개의 별개의 모듈, 예를 들어, 가입 실행기(116) 및 전송 엔진(122)을 사용함으로써 메시지들(132)의 전달과 분리된다. 예를 들어, 클라이언트 애플리케이션(126)은 실시간 메시지들(132)의 수신을 개시하기 위해 메시징 플랫폼(104)에 2개의 요청을 전송하는데, 예를 들어, 하나는 질의 가입 생성을 위해 가입 실행기(116)로 보내지고, 다른 하나는 메시지들(132)을 수신하기 위한 전달 채널(125)을 확립하기 위해 전송 엔진(122)으로 보내진다. 가입 실행기(116)는 이벤트 생성기 시스템(106)에서 질의 가입(141)을 구현하기 위해 클라이언트 애플리케이션(126)으로부터 질의 가입 요청(140)을 수신하고, 전송 엔진(122)은 이벤트 생성기 시스템(106)에 의해 식별된 메시지들(132)이 클라이언트 애플리케이션(126)으로 스트리밍되는 전달 채널(125)을 확립하기 위해 클라이언트 애플리케이션(126)으로부터 가입 요청(154)을 수신한다.
[0063] 가입 실행기(116)는 질의 요청을 수신하고 자바스크립트 객체 표기(JSON) 응답과 같은 질의 응답을 생성하도록 구성된 질의 언어 프로세서일 수 있다. 일반적으로, 가입 실행기(116)는, 네트워크(150)를 통해, 클라이언트 애플리케이션(126)으로부터 질의 가입 요청들(140)을 수신하고, 질의 가입 요청들(140)에 응답하여 질의 가입들(141)을 생성하여 이벤트 생성기 시스템(106)에 전송한다. 가입 실행기(116)는 응답 이벤트 버스(123)를 가입하여 이벤트 생성기 시스템(106)으로부터 응답 이벤트들(156)을 수신하고, 응답 이벤트들(156)에 기초하여 메시지들(132)을 생성하고(예를 들어, 메시지들(132)을 수화하고, 메시지들(132)에 가시성 규칙들을 적용하고)(이에 따라, 사용자의 관점에서 메시지들(132)을 획득하고), 클라이언트 애플리케이션(126)으로의 전달을 위해 전송 엔진(122)에 제공되는 메시지들(132)을 전달 이벤트 버스(121) 상에 게재한다.
[0064] 일부 예들에서, 가입 실행기(116)는 데이터 질의 애플리케이션 프로그래밍 인터페이스(API)(118) 및 데이터 질의 실행기(120)를 포함한다. 데이터 질의 API(118)는 데이터 질의 실행기(120)에 통신가능하게 연결된다. 일부 예들에서, 데이터 질의 API(118)는 GraphQL API이다. 일부 예들에서, 데이터 질의 실행기(120)는 GraphQL 실행기이다. GraphQL은 질의, 변이(mutation), 및 가입과 같은 3개의 동작 유형들을 특정할 수 있다. 일부 예들에서, 데이터 질의 API(118)는 가입 동작들을 지원하도록 구성되는 라이브러리(예를 들어, GraphQL 라이브러리)를 포함한다. 데이터 질의 API(118)는 질의 가입들(141)의 생성 및 관리에 관련된 정보를 수신하고 전송하기 위해 네트워크 연결(예를 들어, HTTP 연결)을 통해 클라이언트 애플리케이션(126)과 통신한다. 일부 예들에서, 데이터 질의 API(118)는 이벤트 생성기 시스템(106)으로부터 수신되는 응답 이벤트들(156)에 대한 질의들을 실행하기 위해 데이터 질의 실행기(120)에 의해 사용되는 엔드포인트(예를 들어, 쓰리프트 엔드포인트)를 포함한다.
[0065] 데이터 질의 실행기(120)는 응답 이벤트 버스(123)를 통해 이벤트 생성기 시스템(106)으로부터 응답 이벤트들(156)을 모니터링 및 수신하고, 엔드포인트를 통해 데이터 질의 API(118)에 응답 이벤트들(156)을 전달하고, 데이터 질의 API(118)로부터 전체 메시지들(132)을 수신하고, 클라이언트 애플리케이션(126)으로의 전달을 위해 전송 엔진(122)에 제공되도록 전달 이벤트 버스(121)에 메시지들(132)을 갖는 전달 이벤트들(160)을 게재한다. 일부 예들에서, 응답 이벤트 버스(123) 및 전달 이벤트 버스(121)는 가입자들이 이벤트들을 수신하기 위해 버스들에 가입하는(예를 들어, 전송 엔진(122)이 전달 이벤트 버스(121)에 가입하고, 데이터 질의 실행기(120)가 응답 이벤트 버스(123)에 가입하는) 별개의 분산 큐 시스템들이다. 또한, 본 개시내용에서 나중에 더 설명되는 바와 같이, 데이터 질의 실행기(120)는 가입 갱신들을 관리할 수 있다.
[0066] 전송 엔진(122)은 메시지들(132)을 클라이언트 애플리케이션(126)에 스트리밍하기 위한 전달 메커니즘이다. 전송 엔진(122)은 네트워크(150)를 통해 클라이언트 애플리케이션(126)에 통신가능하게 연결된다. 전송 엔진(122)은 네트워크 연결(예를 들어, HTTP 연결)을 통해 클라이언트 애플리케이션(126)과 통신하여, 전송 엔진(122)과 클라이언트 애플리케이션(126) 사이에 확립된 전달 채널(125)의 생성과 관련된 정보를 수신 및 전송한다. 전송 엔진(122)이 전달 이벤트(160)를 수신함에 따라, 전송 엔진(122)은 전달 채널(125)을 통해 전달 이벤트(160)에 포함된 메시지(132)를 스트리밍한다. 또한, 전송 엔진(122)은 클라이언트 애플리케이션(126)으로부터 질의 가입들(141)을 갱신하기 위한 가입 갱신 요청들을 수신하고, 이들은 질의 가입들(141)을 갱신하기 위해 가입 실행기(116)에 제공한 다음 이벤트 생성기 시스템(106)에 제공된다.
[0067] 이벤트 생성기 시스템(106)은 메시지 큐(112)의 메시지 스트림(114)의 메시지들에 대해 질의들을 매칭시킴으로써 검색 질의 결과들의 스트리밍을 지원하도록 구성된다. 이벤트 생성기 시스템(106)은 이벤트 생성기 관리기(108), 하나 이상의 이벤트 생성기들(110), 및 수집기 서비스(170)를 포함할 수 있다. 일부 예들에서, 이벤트 생성기 관리기(108)는 API이다. 이벤트 생성기 관리기(108)는 새로운 질의 가입들(141)을 수신하기 위해 가입 실행기(116)의 데이터 질의 API(118)와 통신하도록 구성된다. 이벤트 생성기 관리기(108)는 질의 가입(141)을 수신하고 이벤트 생성기들(110) 중 하나 이상에 질의 가입(141)을 할당할 수 있다. 예를 들어, 이벤트 생성기 관리기(108)는 질의 가입(141)을 수신하고 질의 가입(141)을 이벤트 생성기(110)(또는 이벤트 생성기들(110)의 그룹)에 할당하여 질의 가입(141)이 이벤트 생성기(110)(또는 그룹 내의 각각의 이벤트 생성기(110))에 저장되도록 할 수 있다.
[0068] 이벤트 생성기(들)(110)는 메시지 큐(112)로부터 메시지 스트림(114)을 수신하고, 질의 가입(141)의 검색 기준들을 충족시키는 메시지들(132)을 식별한다. 일부 예들에서, 메시지 스트림(114)은 메시징 플랫폼(104) 상에서 생성된 모든 메시지(132)의 큰 스트림이다. 일부 예들에서, 메시지 스트림(114)은 초당 10k개의 메시지 초과의 레이트로 전달되는 메시지들을 포함한다. 일부 예들에서, 메시지 스트림(114)은 초당 25k개의 메시지 초과의 레이트로 전달되는 메시지들을 포함한다. 일부 예들에서, 메시지 스트림(114)은 초당 50k개의 메시지 초과의 레이트로 전달되는 메시지들을 포함한다. 일부 예들에서, 메시지 스트림(114)은 메시징 플랫폼(104) 상에서 생성되고 포스팅된 메시지들에 대한 메시지 생성 이벤트들, 메시징 플랫폼(104) 상에서 재공유되는 기존 메시지들에 대한 메시지 재공유 이벤트들, 및/또는 메시징 플랫폼(104) 상에서 즐겨찾기 또는 애호되는 기존 메시지들에 대한 관여 이벤트들을 포함한다.
[0069] 도 2는 일 양상에 따른 질의 가입 생성의 동작들을 더 상세히 도시하는 시스템(100)을 예시한다. 도 1 및 도 2를 참조하면, 클라이언트 애플리케이션(126)은 질의 가입 요청(140)을 생성하고, 네트워크를 통해, 질의 가입 요청(140)을 가입 실행기(116)의 데이터 질의 API(118)에 전송할 수 있다. 일부 예들에서, 사용자는 활성 질의를 제출하기 위해 클라이언트 애플리케이션(126)의 사용자 인터페이스(128)를 사용할 수 있고, 활성 질의의 제출에 응답하여, 클라이언트 애플리케이션(126)은 질의 가입 요청(140)을 생성하고 전송할 수 있다. 일부 예들에서, 질의 가입 요청(140)은 새로운 질의 가입(141)을 개시하고 이벤트 생성기 시스템(106)에서 질의 가입(141)의 구현을 개시하도록 구성된다. 일부 예들에서, 질의 가입 요청(140)은 하이퍼텍스트 전송 프로토콜(HTTP)을 통한 GraphQL 가입 질의이다.
[0070] 질의 가입 요청(140)은 가입 데이터(142)를 포함할 수 있다. 가입 데이터(142)는 하나 이상의 질의어들(144) 및 사용자의 사용자 식별자(146)를 포함한다. 일부 예들에서, 질의어들(144)은 사용자에 의해 제공된 검색어들을 포함한다. 일부 예들에서, 가입 데이터(142)는 변수들 및 하나 이상의 동작 이름들을 포함한다. 일부 예들에서, 가입 데이터(142)는 클라이언트 애플리케이션 식별자, 및 인증된 사용자 식별자를 포함한다. 일부 예들에서, 질의 가입 요청(140)은 질의 가입(141)이 활성인 시간 값을 나타내는 만료 시간(148)을 포함한다. 시간량이 만료 시간(148)을 초과하는 경우, 질의 가입(141)은 (갱신 요청이 수신되지 않는 한) 타임아웃된 것으로 간주될 수 있다. 일부 예들에서, 클라이언트 애플리케이션(126)은 시간량 및/또는 클라이언트 애플리케이션(126)에 의해 전송된 갱신된 가입들의 수에 의존할 수 있는 만료 시간(148)에 대한 값을 결정한다.
[0071] 질의 가입 요청(140)의 수신에 응답하여, 가입 실행기(116)는 가입 데이터(142)의 질의어(들)(144)에 기초하여 전송 토픽(134)을 식별한다. 전송 토픽(134)은 전송 엔진(122)에 의해 검출가능한 서술적 및/또는 수치적 식별자일 수 있다. 일부 예들에서, 가입 실행기(116)는 복수의 전송 토픽들을 정의하는 토픽 라이브러리(135)를 사용하여 전송 토픽(134)을 식별한다. 예를 들어, 가입 실행기(116)는 질의어(들)(144)에 대응하는 토픽 라이브러리(135) 내의 복수의 전송 토픽들 중 하나를 식별할 수 있다. 일부 예들에서, 가입 실행기(116)가 질의어(들)(144)를 사용하여 토픽 라이브러리(135)로부터 전송 토픽(134)을 식별할 수 없는 경우, 가입 실행기(116)는 질의 가입(141)이 실패했음을 나타내는 응답을 생성하고 전송할 수 있다. 일부 예들에서, 데이터 질의 API(118)는 가입 데이터(142)를 사용하여 전송 토픽(134)을 식별한다. 일부 예들에서, 데이터 질의 실행기(120)는 가입 데이터(142)를 사용하여 전송 토픽(134)을 식별한다.
[0072] 질의 가입 요청(140)의 수신에 응답하여, 가입 실행기(116)는 가입 데이터(142)에 기초하여 가입 식별자(136)를 생성할 수 있다. 가입 식별자(136)는 질의 가입(141)을 식별하는 식별자일 수 있다. 일부 예들에서, 데이터 질의 API(118)는 가입 식별자(136)를 생성한다. 일부 예들에서, 데이터 질의 실행기(120)는 가입 식별자(136)를 생성한다. 일부 예들에서, 가입 실행기(116)는 사용자 식별자(146), 질의어(들)(144), 및/또는 변수들, 동작 이름(들), 인증된 사용자 식별자, 및/또는 클라이언트 애플리케이션 식별자와 같은, 가입 데이터(142)에 포함되는 다른 정보에 기초하여 가입 식별자(136)를 생성할 수 있다. 일부 예들에서, 가입 실행기(116)는 가입 식별자(136)를 생성하기 위해 가입 데이터(142)를 직렬화하고 해싱하도록 구성된다.
[0073] 데이터 질의 API(118)는, 네트워크(150)를 통해, 가입 상태 응답(152)을 클라이언트 애플리케이션(126)에 전송하도록 구성된다. 가입 상태 응답(152)은 전송 토픽(134)을 포함한다. 일부 예들에서, 가입 상태 응답(152)은 가입 식별자(136)를 포함한다. 일부 예들에서, 가입 상태 응답(152)은 질의 가입 요청(140)이 성공적인지를 나타내는 상태 메시지를 포함한다.
[0074] 가입 상태 응답(152)의 수신 시에, 클라이언트 애플리케이션(126)은 가입 요청(154)을 생성하여 네트워크(150)를 통해 전송 엔진(122)에 전송할 수 있다. 가입 요청(154)은 전송 토픽(134)을 포함한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 가입 요청(154)을 위해 가입 상태 응답(152)에서 식별된 전송 토픽(134)을 사용한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 가입 실행기(116)와 동일한 방식으로 가입 데이터(142)를 사용하여 전송 토픽(134)을 식별한다. 일부 예들에서, 가입 요청(154)은 가입 식별자(136)를 포함한다. 일부 예들에서, 가입 요청(154)은 사용자 식별자(146)를 포함한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 가입 상태 응답(152)의 수신에 응답하여 가입 요청(154)을 전송한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 질의 가입 요청(140)의 전송과 실질적으로 병렬로 가입 요청(154)을 전송한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 질의 가입 요청(140)을 전송하고, 그 후 질의 가입 요청(140)의 전송으로부터 500ms 미만의 기간 내에 가입 요청(154)을 전송한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 질의 가입 요청(140)을 전송하고, 그 후 질의 가입 요청(140)을 전송한 후 100-200ms의 기간 내에 가입 요청(154)을 전송한다.
[0075] 가입 요청(154)에 응답하여, 전송 엔진(122)은 클라이언트 애플리케이션(126)과의 전달 채널(125)을 확립하여 메시지들(132)을 클라이언트 애플리케이션(126)에 스트리밍한다. 전달 채널(125)은 전달 채널(125)을 통해 전달되는 메시지들(132)이 전송 토픽(134)에 대응하도록 전송 토픽(134)과 연관된다. 일부 예들에서, 전송 엔진(122)은 사용자 식별자(146) 및 질의어(144)(및/또는 기여자 식별자)에 대응하는 전송 토픽(134)에 클라이언트 애플리케이션(126)을 가입시킨다. 전달 채널(125)은 질의 가입(141)이 활성인 동안 개방 및 활성 상태로 유지된다. 일부 예들에서, 전송 엔진(122)은 채널 식별자를 전달 채널(125)에 할당한다. 일부 예들에서, 전송 엔진(122)은, 네트워크(150)를 통해, 채널 식별자를 클라이언트 애플리케이션(126)에 전송한다. 클라이언트 애플리케이션(126)은 (예를 들어, 2분마다) 전달 채널(125)에 주기적으로 재가입할 수 있다. 클라이언트 애플리케이션(126)은 질의가 활성인 것에 응답하여 재가입 요청을 자동으로 전송할 수 있다(예를 들어, 가시적 검색 열이 사용자 인터페이스(128) 상에 디스플레이된다). 질의가 종료되는 경우(예를 들어, 열이 사용자 인터페이스(128)로부터 스크롤 오프되는 경우), 클라이언트 애플리케이션(126)은 전송 토픽(134)으로부터 가입해제하기 위해 전송 엔진(122)에 메시지를 전송할 수 있고, 그에 따라 전달 채널(125)을 폐쇄할 수 있다.
[0076] 도 3은 일 양상에 따른 이벤트 생성기 시스템(106)에서 질의 가입(141)을 구성하고 이벤트 생성기 시스템(106)으로부터 응답 이벤트들(156)을 수신하기 위한 이벤트 생성기 시스템(106) 및 가입 실행기(116)의 예시적인 동작들을 도시하는 시스템(100)을 예시한다. 도 4는 전달 이벤트들(160)을 전송 엔진(122)에 전달하기 위한 가입 실행기(116) 및 전송 엔진(122)의 예시적인 동작들을 도시하는 시스템(100)을 예시한다.
[0077] 질의 가입 요청(140)의 수신에 응답하여, 데이터 질의 API(118)는 질의 가입(141)을 생성하여 이벤트 생성기 관리기(108)에 전송한다. 데이터 질의 API(118)는 이벤트 생성기 관리기(108)에 쓰리프트 요청으로서 질의 가입(141)을 전송할 수 있다. 쓰리프트 요청은 메시징 플랫폼(104)의 다양한 컴포넌트들 사이에서 통신하기 위해 사용되는 원격 절차 호출 시스템일 수 있다. 질의 가입(141)은 가입 데이터(142)(예를 들어, 질의어(들)(144)를 포함할 수 있음) 및 사용자 식별자(146)를 포함한다. 일부 예들에서, 질의 가입(141)은 가입 식별자(136)를 포함한다. 일부 예들에서, 질의 가입(141)은 만료 시간(148)을 포함한다. 일부 예들에서, 이벤트 생성기 관리기(108)에 전송되는 질의 가입(141)은 사용자 식별자(146) 및 다른 가입 관련 데이터를 포함하여, 이벤트 생성기 시스템(106)이 응답 이벤트들(156)에서 이들을 반환하여 응답 이벤트들(156)에 의해 식별되는 메시지들(132)을 수화하고 라우팅하기에 충분한 컨텍스트를 제공할 수 있게 할 수 있다. 이벤트 생성기 관리기(108)는 만료 시간(148)을 사용하여 질의 가입(141)이 타임아웃되었는지를 결정할 수 있다. 예를 들어, 시간이 만료 시간(148)을 초과한 경우, 이벤트 생성기 관리기(108)는 이벤트 생성기(110)에게 질의 가입(141)을 삭제하도록 지시할 수 있고, 그에 따라 다른 질의 가입들(141)에 대한 자원들을 절약할 수 있다.
[0078] 이벤트 생성기 관리기(108)는 이벤트 생성기(110)(또는 이벤트 생성기들(110)의 그룹)에 질의 가입(141)을 할당한다. 일부 예들에서, 이벤트 생성기 관리기(108)는 사용자 식별자(146)에 기초하여 질의 가입(141)을 할당한다. 질의 가입(141)은 이벤트 생성기(110)(또는 그룹 내의 각각의 이벤트 생성기(110))에 저장된다. 이벤트 생성기(110)는 메시지 스트림(114)으로부터의 메시지가 질의 가입(141)의 질의어(144)를 포함하는 것으로 결정되는 것에 응답하여 응답 이벤트(156)가 생성되도록 응답 이벤트들(156)을 생성한다. 이벤트 생성기(110)는 응답 이벤트들(156)을 응답 이벤트 버스(123)에 게재할 수 있다.
[0079] 일부 예들에서, 수집기 서비스(170)는 응답 이벤트들(156)을 수신하고 응답 이벤트들(156)을 응답 이벤트 버스(132)에 게재한다. 일부 예들에서, 본 개시내용에서 나중에 보다 상세히 논의되는 바와 같이, 수집기 서비스(170)는 동일한 메시지(132)에 관련된 응답 이벤트들(156)을 중복 제거(de-duplicate)하고, 스트리밍 레이트가 임계 레벨 미만이도록 하나 이상의 응답 이벤트들(156)을 폐기하고/하거나, 이벤트 생성기 시스템(106)에서 질의 가입들(141)의 건강에 관한 상태 메시지들을 주기적으로 생성할 수 있다. 각각의 응답 이벤트(156)는 질의 가입(141)과 매칭하는 메시지(132)를 고유하게 식별하는 메시지 식별자(158)를 포함한다. 일부 예들에서, 각각의 응답 이벤트(156)는 가입 데이터(142)(예컨대, 질의어(들)(144)) 및 사용자 식별자(146)를 포함한다. 일부 예들에서, 각각의 응답 이벤트(156)는 가입 식별자(136)를 포함한다. 일부 예들에서, 각각의 응답 이벤트(156)는 메시지 식별자(158)만을 포함한다.
[0080] 가입 실행기(116)는 이벤트 생성기 시스템(106)에 의해 게재된 응답 이벤트들(156)을 획득하기 위해 응답 이벤트 버스(123)에 가입한다. 일반적으로, 가입 실행기(116)는 메시지 식별자들(158)에 의해 식별된 메시지들(132)을 생성(예를 들어, 수화)하고 전송 엔진(122)에 전체 메시지들(132)을 제공하기 전에 가시성 규칙들을 적용한다. 일부 예들에서, 수화는 메시지 식별자(158) 및 사용자 식별자(146)로부터의 메시지(132)의 생성을 지칭할 수 있으며, 따라서 생성된 메시지(132)는 클라이언트 애플리케이션(126)과 호환가능한 포맷을 갖고 사용자 식별자(146)에 의해 식별된 사용자의 관점에 대응하는 데이터를 포함한다. 일부 예들에서, 가입 실행기(116)는 메시지 식별자(158) 및 사용자 식별자(146)에 기초하여 자바스크립트 객체 표기(JSON) 메시지(예를 들어, 전체 JSON 메시지)를 생성하도록 구성된다. 가입 실행기(116)가 각각의 응답 이벤트(156)에 대응하는 각각의 메시지(132)를 생성함에 따라, 가입 실행기(116)는 메시지(132)를 포함하는 전달 이벤트(160)를 전달 이벤트 버스(121)에 게재한다.
[0081] 메시지 수화 동안, 가입 실행기(116)는 가입 실행기(116)가 메시지 식별자(158)에 의해 식별된 메시지(132)가 가시성 규칙을 위반한다고 결정하면 응답 이벤트(156)를 폐기할 수 있고, 그에 따라 실시간 메시지들(132)을 클라이언트 애플리케이션(126)에 전달할 수 있으면서 메시징 플랫폼(104)의 보안을 개선할 수 있다. 예를 들어, 응답 이벤트(156)가 사용자 식별자(146)에 의해 식별된 사용자를 제한(예를 들어, 차단 또는 뮤팅)한 사용자에 의해 작성된 메시지(132)를 식별하면, 가입 실행기(116)는 응답 이벤트(156)를 폐기할 수 있다.
[0082] 데이터 질의 실행기(120)는 응답 이벤트 버스(123)에 가입한다. 데이터 질의 실행기(120)는 이벤트 생성기들(110)에 의해 응답 이벤트 버스(123)에 게재된 임의의 응답 이벤트들(156)을 획득하기 위해 응답 이벤트 버스(123)를 모니터링할 수 있다. 데이터 질의 실행기(120)는 응답 이벤트 버스(123)로부터 획득된 각각의 응답 이벤트(156)에 응답하여 메시지(132)를 생성하기 위해 데이터 질의 API(118)와 통신할 수 있다. 일부 예들에서, 데이터 질의 API(118)는 질의 및 이벤트 둘 다를 수신할 수 있고 이벤트를 질의 실행을 위한 기초로서 사용한다.
[0083] 예를 들어, 응답 이벤트(156)에 대해, 데이터 질의 실행기(120)는 메시지 식별자(158) 및 가입 메타데이터(예를 들어, 가입 데이터(142) 및/또는 가입 식별자(136))를 데이터 질의 API(118)에 전달할 수 있다. 일부 예들에서, 데이터 질의 실행기(120)는 데이터 질의 API(118)에 대한 쓰리프트 요청을 실행하여 메시지 식별자(158) 및 가입 메타데이터를 전달한다. 데이터 질의 API(118)는 메시지 식별자(158) 및 가입 메타데이터로부터 데이터를 추출하고 응답 이벤트(156)에 대해 원래 질의 가입(141)을 실행하여 메시지(132)(예를 들어, 전체 JSON 메시지)를 생성한다. 데이터 질의 실행기(120)는 데이터 질의 API(118)로부터 실행 결과들(예를 들어, 메시지(132))을 수신하고 전달 이벤트 버스(121) 상에 전달 이벤트(160)를 게재한다. 도 4에 도시된 바와 같이, 전달 이벤트(160)는 메시지(132)를 포함한다. 일부 예들에서, 전달 이벤트(160)는 전송 토픽(134)을 식별하는 전송 토픽 데이터(162)를 포함한다.
[0084] 전송 엔진(122)은 데이터 질의 실행기(120)에 의해 게재된 전달 이벤트들(160)을 모니터링하고 획득하기 위해 전달 이벤트 버스(121)에 가입한다. 예를 들어, 전달 이벤트(160)가 전달 이벤트 버스(121)에 게재될 때, 전송 엔진(122)은 전달 이벤트(160)를 획득하고, 전달 채널들(125)을 전송 토픽들(134)에 맵핑하는 채널-토픽 맵핑(164)에 기초하여 전달 이벤트(160) 내에 포함된 메시지(132)를 스트리밍할 전달 채널(125)을 결정한다. 예를 들어, 전송 토픽 데이터(162)는 메시지(132)와 연관된 전송 토픽(134)을 식별할 수 있고, 전송 엔진(122)은 채널-토픽 맵핑(164)에 기초하여 메시지(132)를 스트리밍할 적절한 전달 채널(125)을 식별할 수 있다. 전송 엔진(122)은 전달 채널(125)을 통해 클라이언트 애플리케이션(126)에 메시지(132)를 스트리밍하도록 구성된다.
[0085] 도 5는 다수의 전달 채널(125)에 대한 전송 엔진(122)의 예시적인 동작들을 도시하는 시스템(100)을 예시한다. 예를 들어, 클라이언트 애플리케이션(126)이 다수의 질의 가입(141)을 확립한 경우, 전송 엔진(122)은 각각의 활성 질의 가입(141)에 대한 별개의 전달 채널(125)을 생성하고, 이어서 그러한 메시지들(132)을 그의 각각의 전달 채널(125)을 통해 전달한다. 예를 들어, 검색어 "dogs"에 관한 질의 가입(141)에 응답하여, 전송 엔진(122)은, 네트워크(150)를 통해, 가입 실행기(116)로부터 수신된 메시지들(132)을 제1 전달 채널(125-1)(예를 들어, "dog" 전달 채널)을 통해 클라이언트 애플리케이션(126)으로 전송한다. 검색어 "cats"에 관한 활성 질의 가입(141)에 응답하여, 전송 엔진(122)은, 네트워크(150)를 통해, 가입 실행기(116)로부터 수신된 메시지들(132)을 제2 전달 채널(125-2)(예를 들어, "cats" 통신 채널)을 통해 클라이언트 애플리케이션(126)으로 전송한다.
[0086] 클라이언트 애플리케이션(126)이 메시지들(132)을 생성하고 수신하기 위한 2개의 요청들(예를 들어, 질의 가입 요청(140) 및 가입 요청(154))을 메시징 플랫폼(104)에 전송하지만, 일부 예들에서, 클라이언트 애플리케이션(126)은 가입 실행기(116) 또는 전송 엔진(122) 중 하나에 의해 갱신될 수 있다. 일부 예들에서, 클라이언트 애플리케이션(126)은 전송 엔진(122)에 의해 갱신된다. 예를 들어, 전송 토픽(134)에 대한 가입은 가입이 클라이언트 애플리케이션(126)에 의해 갱신되지 않는 한 시간 간격 후에 만료될 수 있다(예를 들어, 클라이언트 애플리케이션(126)은 전송 엔진(122)에 의해 시간 기간마다(예를 들어, 2분마다) 갱신되어야 하거나 질의 가입(141)이 만료된다).
[0087] 도 6은 일 양상에 따른 갱신 동작의 예시적인 동작들을 도시하는 시스템(100)을 예시한다. 일부 예들에서, 가입 실행기(116)(예를 들어, 데이터 질의 실행기(120))는 가입 갱신들을 관리하도록 구성된다. 예를 들어, 클라이언트 애플리케이션(126)은 네트워크(150)를 통해, 가입 갱신 요청(161)을 전송 엔진(122)에 전송하여 전송 토픽(134)에 대한 가입을 갱신할 수 있다. 가입 갱신 요청(161)에 응답하여, 전송 엔진(122)은 전송 토픽 데이터(162)를 데이터 질의 실행기(120)에 제공할 수 있다. 전송 토픽 데이터(162)는 전송 토픽(134)에 관한 정보, 가입 식별자(136), 및/또는 어느 이벤트 생성기(110)가 사용자 식별자(146)에 대한 응답 이벤트들(156)을 생성하도록 할당되는지에 관한 정보를 포함할 수 있다. 전송 토픽 데이터(162)에 응답하여, 데이터 질의 실행기(120)는 갱신 호출(171)을 이벤트 생성기 시스템(106)에 전송할 수 있다.
[0088] 이벤트 생성기 관리기(108)는 질의 가입(141)이 이벤트 생성기들(110)로부터 삭제되지 않도록 갱신 호출(171)을 수신하고 만료 시간(148)을 업데이트할 수 있다. 갱신 호출(171)에 응답하여, 이벤트 생성기 관리기(108)는 응답 이벤트 버스(123)에 상태 메시지(166)를 게재할 수 있고, 이는 데이터 질의 실행기(120)에 의해 수신된다. 데이터 질의 실행기(120)는 전송 엔진(122)이 상태 메시지(166)를 클라이언트 애플리케이션(126)에 전달할 수 있도록 전달 이벤트 버스(121) 상에 상태 메시지(166)를 게재할 수 있다.
[0089] 컴퓨팅 디바이스(124)는 모바일 컴퓨팅 디바이스(예를 들어, 스마트폰, PDA, 태블릿, 또는 랩톱 컴퓨터) 또는 비-모바일 컴퓨팅 디바이스(예를 들어, 데스크톱 컴퓨팅 디바이스)일 수 있다. 컴퓨팅 디바이스(124)는 또한, 예를 들어, 컴퓨팅 디바이스(124)가 셀룰러 네트워크와 통신할 수 있는 모바일 네트워크 인터페이스, 컴퓨팅 디바이스(124)가 Wi-Fi 기지국과 통신할 수 있는 Wi-Fi 네트워크 인터페이스, 컴퓨팅 디바이스(124)가 다른 블루투스 디바이스들과 통신할 수 있는 블루투스 네트워크 인터페이스, 및/또는 컴퓨팅 디바이스(124)가 네트워크(150)에 액세스할 수 있게 하는 이더넷 연결 또는 다른 유선 연결과 같은 다양한 네트워크 인터페이스 회로를 포함한다.
[0090] 서버 컴퓨터(102)는 단일 컴퓨팅 디바이스일 수 있거나, 작업 부하 및 자원들을 공유하도록 통신가능하게 연결된 2개 이상의 분산 컴퓨팅 디바이스의 표현일 수 있다. 서버 컴퓨터(102)는 적어도 하나의 프로세서, 및 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금 본 명세서에서 논의된 동작들을 수행하게 하는 실행가능 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체를 포함할 수 있다.
[0091] 도 7은 일 양상에 따른 도 1의 클라이언트 애플리케이션(126)의 사용자 인터페이스(728)의 예를 예시한다. 도 7의 설명은 또한 도 1 내지 도 6을 참조하여 설명된 컴포넌트들 및 메시지들을 참조한다. 일부 예들에서, 클라이언트 애플리케이션(126)은 다수의 타임라인들을 별개의 열들로서 디스플레이하도록 구성된다. 예를 들어, 사용자는 열들을 추가하거나 제거하여, 타임라인들을 추가하거나 제거할 수 있다. 일부 예들에서, 검색을 특정하는 열의 추가는 질의 가입(141)을 개시한다. 일부 예들에서, 열의 제거는 질의 가입(141)이 만료되게 한다. 일부 예들에서, 사용자는 제1 타임라인(730-1)을 제공하는 제1 열을 추가할 수 있다. 제1 타임라인(730-1)은 질의 가입(141)이 활성으로 유지되는 동안 특정 사용자(예를 들어, 사용자 A)에 의해 생성된 메시지들(732)을 디스플레이할 수 있다. 예를 들어, 제1 열이 디스플레이되는 동안, 사용자 A에 의해 생성된 임의의 메시지들(732)이 제1 타임라인(730-1) 상에 디스플레이된다. 예를 들어, 사용자 A는 특정 시간에 메시지(732)를 메시징 플랫폼(104)에 포스팅할 수 있고, 메시지(732)는 사용자가 사용자 A에 의해 새롭게 생성된 메시지(732)를 실시간으로 또는 거의 실시간으로 볼 수 있도록 메시지(732)가 포스팅된 시간쯤에 제1 타임라인(130-1)으로 푸시될 수 있다. 일부 예들에서, 제1 타임라인(730-1)은 새롭게 생성된 메시지(732)가 제1 타임라인(730-1)의 상단으로 푸시되도록 시간순으로 렌더링된다.
[0092] 일부 예들에서, 사용자는 해시태그 #GraphQL과 매칭하는 메시지들(732)의 제2 타임라인(730-2)을 제공하는 제2 열을 추가할 수 있다. 예를 들어, 검색어 "#GraphQL"을 나타내는 제2 열의 추가는 질의 가입(141)을 개시한다. 제2 타임라인(730-2)은 검색어 "#GraphQL"을 갖는 콘텐츠를 포함하는 메시지들(732)을 디스플레이할 수 있다. 예를 들어, 제2 열이 디스플레이되는 동안, 검색어 "#GraphQL"을 포함하는 메시징 플랫폼(104) 상에서 교환되는 임의의 메시지들(732)은 제2 타임라인(730-2)으로 스트리밍된다. 일부 예들에서, 제2 타임라인(730-2)은 검색어 "#GraphQL"을 포함하는 새로 생성된 메시지(732)가 제2 타임라인(730-2)의 상단으로 푸시되도록 시간순으로 렌더링된다.
[0093] 일부 예에서, 사용자는 검색어 "GraphQL Summit"을 포함하는 메시지들(732)의 제3 타임라인(730-3)을 제공하는 제3 열을 추가할 수 있다. 예를 들어, 검색어 "GraphQL Summit"을 나타내는 제3 열의 추가는 질의 가입(141)을 개시한다. 제3 타임라인(730-3)은 검색어 "GraphQL Summit"과 매칭하는 콘텐츠를 포함하는 메시지들(732)을 디스플레이할 수 있다. 예를 들어, 제3 열이 디스플레이되는 동안, 질의 가입(141)이 활성으로 유지되는 동안 검색어 "GraphQL Summit"과 매칭하는 임의의 메시지들(732)이 제3 타임라인(730-3)으로 스트리밍된다. 일부 예들에서, 제3 타임라인(730-3)은 시간순으로 렌더링되어, 검색어 "GraphQL Summit"을 포함하는 새로 생성된 메시지(732)가 제3 타임라인(730-3)의 상단으로 푸시되게 한다.
[0094] 도 8은 일 양상에 따른 질의 가입들(141)에 따라 실시간 메시지들(132)을 스트리밍하기 위한 메시징 플랫폼(104)의 예시적인 동작들을 도시하는 흐름도(800)를 예시한다. 흐름도(800)는 도 1 내지 도 6의 시스템(100)을 참조하여 설명된다.
[0095] 동작(802)은, 가입 실행기(116)에 의해, 클라이언트 애플리케이션(126)으로부터의 질의 가입 요청(140)의 수신에 응답하여 이벤트 생성기 시스템(106)에 질의 가입(141)을 전송하는 것을 포함한다. 예를 들어, 데이터 질의 API(118)는 클라이언트 애플리케이션(126)으로부터 네트워크(150)를 통해 질의 가입 요청(140)을 수신할 수 있고, 데이터 질의 API(118)는 질의 가입(141)을 생성할 수 있다. 데이터 질의 API(118)는 질의 가입(141)을 이벤트 생성기 관리기(108)에 전송할 수 있다. 일부 예들에서, 질의 가입 요청(140)은 GraphQL 가입 질의이고, 데이터 질의 API(118)는 GraphQL API이고, 데이터 질의 실행기(120)는 GraphQL 실행기이다. 일부 예들에서, 질의 가입 요청(140)은 질의어(144) 및 사용자 식별자(146)를 포함한다. 일부 예들에서, 데이터 질의 API(118)는 질의 가입 요청(140)에 응답하여 전송 토픽(134)을 식별할 수 있다.
[0096] 동작(804)은, 전송 엔진(122)에 의해, 클라이언트 애플리케이션(126)으로부터 네트워크(150)를 통해 수신된 가입 요청(154)의 수신에 응답하여 클라이언트 애플리케이션(126)과 전송 엔진(122) 사이에 전달 채널(125)을 생성하는 것을 포함한다. 예를 들어, 전송 엔진(122)은 클라이언트 애플리케이션(126)으로부터 네트워크(150)를 통해 가입 요청(154)을 수신하고 가입 요청(154)의 수신에 응답하여 전달 채널(125)을 생성할 수 있다.
[0097] 동작(806)은, 이벤트 생성기 시스템(106)에서, 질의 가입(141)을 충족시키는 콘텐츠를 갖는 메시지 스트림(114)으로부터의 메시지에 응답하여 응답 이벤트(156)를 생성하는 것을 포함한다. 예를 들어, 이벤트 생성기 관리기(108)는 질의 가입(141)을 하나 이상의 이벤트 생성기(110)에 할당할 수 있고, 각각의 이벤트 생성기(110)는 메시지 스트림(114)으로부터의 메시지가 질의 가입(141)을 충족시킬 때 응답 이벤트(156)를 생성한다.
[0098] 동작(808)은, 가입 실행기(116)에 의해, 응답 이벤트(156)에 의해 식별된 메시지의 저자가 사용자 식별자(146)와 연관된 사용자를 제한(예를 들어, 차단 또는 뮤팅)했는지를 결정하는 것을 포함하고, 동작(810)은, 가입 실행기(116)에 의해, 사용자가 저자에 의해 제한된 것으로 결정되는 것에 응답하여 응답 이벤트(156)에 의해 식별된 메시지를 폐기하는 것을 포함한다. 예를 들어, 메시지 수화 동안, 가입 실행기(116)는, 가입 실행기(116)가 메시지 식별자(158)에 의해 식별된 메시지(132)가 가시성 규칙을 위반한다고 결정하는 경우 응답 이벤트(156)를 폐기할 수 있고, 이에 따라 실시간 메시지들(132)을 클라이언트 애플리케이션(126)에 전달할 수 있는 동안 메시징 플랫폼(104)의 보안을 개선할 수 있다. 예를 들어, 응답 이벤트(156)가 사용자 식별자(146)에 의해 식별된 사용자를 제한(예를 들어, 차단 또는 뮤팅)한 사용자에 의해 저작된 메시지(132)를 식별하는 경우, 가입 실행기(116)는 응답 이벤트(156)를 폐기할 수 있다.
[0099] 동작(812)은, 전송 엔진(122)에 의해, 사용자가 저자에 의해 제한되지 않은 것으로 결정되는 것에 응답하여 질의 가입(141)이 활성인 시간 기간 동안 전달 채널(125)을 통해 클라이언트 애플리케이션(126)의 사용자 인터페이스(128)로 메시지들(132)을 스트리밍하는 것을 포함한다. 예를 들어, 전송 엔진(122)이 전달 이벤트들(160)을 수신할 때, 전송 엔진(122)은 (가시성 규칙들을 위반하지 않는) 메시지들(132)을 네트워크(150)를 통해 클라이언트 애플리케이션(126)으로 스트리밍한다.
[00100] 도 9는 일 양상에 따른 메시징 플랫폼(104) 상에서 활성 질의를 생성하고 활성 질의와 매칭하는 메시지들의 스트림(132)을 수신하기 위한 클라이언트 애플리케이션(126)의 예시적인 동작들을 도시하는 흐름도(900)를 예시한다. 흐름도(800)는 도 1 내지 도 6의 시스템(100)을 참조하여 설명된다.
[00101] 동작(902)은, 클라이언트 애플리케이션(126)에 의해, 질의 가입 요청(140)을 네트워크(150)를 통해 메시징 플랫폼(104)의 가입 실행기(116)에 전송하는 것을 포함하고, 질의 가입 요청(140)은 가입 실행기(116)로 하여금 메시징 플랫폼(104) 상에서 교환되는 메시지들의 메시지 큐(112) 상에서 실행될 질의 가입(141)을 생성하게 하도록 구성된다.
[00102] 동작(904)은, 클라이언트 애플리케이션(126)에 의해, 네트워크(150)를 통해, 가입 요청(154)을 메시징 플랫폼(104)의 전송 엔진(122)에 전송하는 것을 포함하고, 가입 요청(154)은 전송 엔진(122)으로 하여금 전송 엔진(122)과 클라이언트 애플리케이션(126) 사이에 전달 채널(125)을 생성하게 하도록 구성된다.
[00103] 동작(906)은, 클라이언트 애플리케이션(126)에 의해, 질의 가입(141)이 활성인 동안 메시지들(132)이 시간에 걸쳐 클라이언트 애플리케이션(126)의 사용자 인터페이스(128) 상에 스트리밍되도록, 전달 채널(125)을 통해 질의 가입(141)의 기준들을 충족시키는 메시지들의 스트림(132)을 수신하는 것을 포함한다.
[00104] 동작(908)은, 클라이언트 애플리케이션(126)에 의해, 가입 갱신 요청(161)을 네트워크(150)를 통해 전송 엔진(122)에 주기적으로 전송하는 것을 포함하고, 가입 갱신 요청(161)은 전송 엔진(122)으로 하여금 전달 채널(125)을 갱신하게 하고 가입 실행기(116)로 하여금 질의 가입(141)을 갱신하게 하도록 구성된다.
[00105] 예를 들어, 가입 갱신 요청(161)에 응답하여, 전송 엔진(122)은 전송 토픽 데이터(162)를 데이터 질의 실행기(120)에 제공할 수 있다. 전송 토픽 데이터(162)에 응답하여, 데이터 질의 실행기(120)는 갱신 호출(171)을 이벤트 생성기 시스템(106)에 전송할 수 있다. 이벤트 생성기 관리기(108)는 갱신 호출(171)을 수신하고 만료 시간(148)을 업데이트하여, 질의 가입(141)이 이벤트 생성기들(110)로부터 삭제되지 않게 할 수 있다. 갱신 호출(171)에 응답하여, 이벤트 생성기 관리기(108)는 응답 이벤트 버스(123)에 상태 메시지(166)를 게재할 수 있고, 이는 데이터 질의 실행기(120)에 의해 수신된다. 데이터 질의 실행기(120)는 전달 이벤트 버스(121) 상에 상태 메시지(166)를 게재하여, 전송 엔진(122)이 상태 메시지(166)를 클라이언트 애플리케이션(126)에 전달할 수 있게 할 수 있다. 따라서, 클라이언트 애플리케이션(126)은 전송 엔진(122)만으로 갱신될 수 있고, 후술하는 바와 같이, 메시징 플랫폼(104)의 구조는 질의 가입(141)이 전송 엔진(122) 및 가입 실행기(116)에서 갱신되게 할 수 있고, 그에 따라 질의 가입(141)을 유지하기 위해 클라이언트 애플리케이션(126)과 메시징 플랫폼(104) 사이에서 전송되는 통신의 양을 감소시킬 수 있다.
[00106] 도 10a는 일 양상에 따른 하나 이상의 서버 컴퓨터(1002)에 의해 실행 가능한 메시징 플랫폼(1004) 및 컴퓨팅 디바이스(1024)에 의해 실행 가능한 클라이언트 애플리케이션(1026)을 포함하는 시스템(1000)의 개략도이다. 메시징 플랫폼(1004)은 메시징 플랫폼(1004) 상에서 교환된 메시지들의 큰 메시지 스트림(1014)으로부터의 콘텐츠와 매칭하는 질의 가입들(1041)에 따라 실시간 메시지들(1032)을 네트워크(1050)를 통해 클라이언트 애플리케이션(1026)으로 스트리밍하도록 구성된다. 메시징 플랫폼(1004)은 이벤트 생성기 시스템(1006), 메시지 스트림(114)을 갖는 메시지 큐(1012), 가입 실행기(1016) 및 전송 엔진(1022)을 포함한다. 도 10b는 이벤트 생성기 시스템(1006)을 더 상세히 예시한다. 시스템(1000)은 도 1 내지 도 6의 시스템(100)의 예일 수 있고, 이전 도면들을 참조하여 논의된 특징들 중 임의의 특징을 포함할 수 있다.
[00107] 이벤트 생성기 시스템(1006)은 이벤트 생성기 관리기(1008), 이벤트 생성기 관리기(1008)에 통신 가능하게 연결된 이벤트 생성기들(1010), 및 이벤트 생성기들(1010)에 통신 가능하게 연결된 수집기 서비스(1070)를 포함한다. 이벤트 생성기 관리기(1008)는 질의 가입들(1041)을 획득하고, 질의 가입들(1041)의 기준들에 따라 메시지 스트림(1014)으로부터의 콘텐츠를 매칭시키도록 이벤트 생성기들(1010)을 구성한다.
[00108] 일부 예들에서, 이벤트 생성기 관리기(1008)는 쓰리프트 요청을 통해 질의 가입(1041)을 수신하도록 구성된 API이다. 일부 예들에서, 이벤트 생성기 관리기(1008)는 가입 실행기(1016)로부터 질의 가입(1041)을 수신하도록 구성된다. 질의 가입(1041)은 메시지 스트림(1014)으로부터 메시지들을 식별하는 데 사용되는 기준들을 정의할 수 있다. 일부 예들에서, 질의 가입(1041)은 GraphQL 질의 가입이다. 질의 가입(1041)은 질의 가입(1041)에 관한 정보를 제공하는 가입 데이터를 포함한다. 일부 예들에서, 질의 가입(1041)은 하나 이상의 질의어, 사용자 식별자, 만료 시간, 및/또는 가입 식별자를 포함한다.
[00109] 이벤트 생성기들(1010)은 이벤트 생성기 그룹들(1013)로 배열되어, 메시지 스트림(1014)에 대해 비교적 많은 수의 질의 가입(1041)을 실행한다. 예를 들어, 이벤트 생성기 시스템(1006)은 제1 이벤트 생성기 그룹(1013-1), 제2 이벤트 생성기 그룹(1013-2), 제3 이벤트 생성기 그룹(1013-3) 및 제4 이벤트 생성기 그룹(1013-4)과 같은 복수의 이벤트 생성기 그룹들(1013)을 포함할 수 있다. 4개의 이벤트 생성기 그룹(1013)이 도 10b에 예시되지만, 이벤트 생성기 그룹들(1013)은 임의 수의 이벤트 생성기 그룹(1013)을 포함할 수 있다. 각각의 이벤트 생성기 그룹(1013)은 전체 메시지 스트림(1014)을 수신하도록 구성된다. 즉, 각각의 이벤트 생성기 그룹(1013)은 전체 메시지 스트림(1014)을 독립적으로 모니터링하도록 구성된다. 각각의 이벤트 생성기 그룹(1013)은 복수의 이벤트 생성기들(1010)을 포함한다. 도 10b는 각각의 이벤트 생성기 그룹(1013) 내에 4개의 이벤트 생성기(1010)를 예시하지만, 각각의 이벤트 생성기 그룹(1013)은 이벤트 생성기 그룹들(1013)에 걸쳐 동일하거나 상이한 수일 수 있는 임의 수의 이벤트 생성기(1010)를 포함할 수 있다.
[00110] 각각의 이벤트 생성기 그룹(1013) 내의 각각의 이벤트 생성기(1010)는 메시지 스트림(1014)의 별개의 부분을 수신할 수 있다. 예를 들어, 메시지 스트림(1014)은 특정 이벤트 생성기 그룹(1013) 내의 이벤트 생성기들(1010) 사이에 분할된다(예를 들어, 균등하게 분할되거나 불균등하게 분할된다). 예를 들어, 제1 이벤트 생성기 그룹(1013-1) 내에 4개의 이벤트 생성기(1010)가 존재하는 경우, 제1 이벤트 생성기는 메시지 스트림(1014)의 제1 부분을 수신하고, 제2 이벤트 생성기는 메시지 스트림(1014)의 제2 부분을 수신하고, 제3 이벤트 생성기는 메시지 스트림(1014)의 제3 부분을 수신하고, 제4 이벤트 생성기는 메시지 스트림(1014)의 제4 부분을 수신하며, 제1 내지 제4 부분들은 전체 메시지 스트림(1014)을 커버한다.
[00111] 각각의 이벤트 생성기 그룹(1013)은 질의 가입들(1041)의 일부를 할당받는다. 예를 들어, 100개의 질의 가입(1041)이 존재하는 경우, 25개의 질의 가입(1041)이 제1 이벤트 생성기 그룹(1013-1)에 할당될 수 있고, 25개의 질의 가입(1041)이 제2 이벤트 생성기 그룹(1013-2)에 할당될 수 있고, 25개의 질의 가입(1041)이 제3 이벤트 생성기 그룹(1013-3)에 할당될 수 있고, 25개의 질의 가입(1041)이 제3 이벤트 생성기 그룹(1013-3)에 할당될 수 있다. 그러나, 질의 가입들(1041)의 수는 수천개 또는 수백만개일 수 있다는 점에 유의한다.
[00112] 이벤트 생성기 관리기(1008)는 질의 가입(1041)을 수신하고 질의 가입(1041)을 이벤트 생성기 그룹들(1013) 중 적어도 하나에 할당할 수 있다. 일부 예들에서, 이벤트 생성기 관리기(1008)는 질의 가입(1041)의 사용자 식별자에 기초하여 이벤트 생성기 그룹(1013)에 질의 가입(1041)을 할당한다. 일부 예들에서, 이벤트 생성기 관리기(1008)는 사용자 식별자를 사용하여 모듈로 연산을 실행하고 모듈로 연산의 결과들에 기초하여 질의 가입(1041)을 할당하도록 구성된다. 질의 가입(1041)은 할당된 이벤트 생성기 그룹(1013) 내의 이벤트 생성기들(1010) 각각에 저장된다.
[00113] 일부 예들에서, 이벤트 생성기 관리기(1008)는 2개의 이벤트 생성기 그룹(1013), 예를 들어, 1차 이벤트 생성기 그룹 및 제2 이벤트 생성기 그룹에 질의 가입(1041)을 할당한다. 예를 들어, 이벤트 생성기 관리기(1008)는 제1 이벤트 생성기 그룹(1013-1) 및 제3 이벤트 생성기 그룹(1013-3)에 질의 가입(1041)을 할당할 수 있고, 제1 이벤트 생성기 그룹(1013-1) 및 제3 이벤트 생성기 그룹(1013-3) 내의 이벤트 생성기들(1010) 각각은 메모리에 질의 가입(1041)을 저장한다. 이러한 방식으로, 이벤트 생성기 그룹들(1013) 중 하나가 실패하면, 질의 가입(1041)은 질의 가입(1041)에 할당된 다른 이벤트 생성기 그룹(1013)에 의해 여전히 실행될 수 있다.
[00114] 일부 예들에서, 이벤트 생성기 관리기(1008)는 각각의 이벤트 생성기 그룹(1013)에 대해 할당 및 실행되는 질의 가입들(1041)의 수를 모니터링하도록 구성되고, 이벤트 생성기 그룹들(1013)의 수 및/또는 각각의 이벤트 생성기 그룹(1013) 내의 이벤트 생성기들(1010)의 수를 증가 및/또는 감소시키도록 구성된다. 예를 들어, 특정 이벤트 생성기 그룹(1013) 내의 이벤트 생성기들(1010)의 수가 증가되는 것에 응답하여, 각각의 개별 이벤트 생성기(1010)는 처리할 메시지 스트림(1014)으로부터 더 적은 메시지들을 수신할 수 있고, 결과적으로 추가 검색들을 처리하기 위한 더 많은 계산 용량을 가질 수 있다. 이벤트 생성기 그룹들(1013)의 수가 증가되는 것에 응답하여, 이벤트 생성기(1010)에 할당되는 검색어들의 수가 감소될 수 있다.
[00115] 각각의 이벤트 생성기(1010)는 질의 가입(1041)이 메시지 스트림(1014)의 각각의 부분으로부터의 메시지와 매칭되는 것에 응답하여 응답 이벤트(156)를 생성하도록 구성된다. 이전 도면들과 관련하여 도시된 바와 같이, 각각의 응답 이벤트(156)는 메시지 식별자, 및 질의 가입(1041)에 관한 정보를 제공하는 가입 데이터를 포함한다. 또한, 각각의 이벤트 생성기(1010)는 각각의 이벤트 생성기(1010)에서 질의 가입(1041)의 건강 상태를 나타내는 상태 응답들(1075)을 주기적으로 생성하도록 구성된다. 각각의 상태 응답(1075)은 질의 가입(1041)을 실행하는 것과 연관된 에러가 있는지를 나타낼 수 있다. 예를 들어, 상태 응답(1075)은 특정 이벤트 생성기(1010)에서 질의 가입(1041)을 처리하는 것에 에러가 있음을 나타내는 실패 상태를 나타낼 수 있거나, 상태 응답(1075)은 질의 가입(1041)이 특정 이벤트 생성기(1010)에서 적절히 기능하고 있음을 나타내는 ok 상태를 나타낼 수 있다.
[00116] 전술한 바와 같이, 일부 예들에서, 질의 가입(1041)은 만료 시간과 연관된다. 일부 예들에서, 이벤트 생성기 관리기(1008)는 질의 가입(1041)이 할당된 이벤트 생성기들(1010)에서 활성인 시간의 양을 모니터링하도록 구성되고, 시간이 만료 시간에 의해 특정된 값을 초과하면, 이벤트 생성기 관리기(1008)는 할당된 이벤트 생성기들(1010)에게 메모리로부터 질의 가입(1041)을 삭제하도록 지시함으로써 질의 가입(1041)을 비활성화할 수 있고, 그에 따라 이벤트 생성기 시스템(1006)에서 자원들을 절약할 수 있다. 그러나, 이벤트 생성기 관리기(1008)는 만료 시간이 만료되기 전에 갱신 호출을 수신할 수 있고, 이는 만료 시간을 갱신하고, 그에 따라 질의 가입(1041)을 갱신한다.
[00117] 수집기 서비스(1070)는 이벤트 생성기들(1010)로부터 응답 이벤트들(1056)을 수신하고 응답 이벤트들(1056)을 응답 이벤트 버스(1023)에 게재하도록 구성된다. 일부 예들에서, 수집기 서비스(1070)는 응답 이벤트에 의해 식별되는 메시지가 응답 이벤트 버스(1023)에 이미 게재되었는지를 결정하고, 다음으로 클라이언트 애플리케이션에 전송되는 메시지들의 중복을 회피하기 위해 메시지가 응답 이벤트 버스(1023)에 이미 게재된 것으로 결정되는 것에 응답하여 응답 이벤트(1056)를 폐기할 수 있다. 일부 예들에서, 수집기 서비스(1070)는 시간 기간(예를 들어, 1초) 내의 응답 이벤트들(1056)의 수가 스트리밍 레이트 임계치를 초과했는지를 결정하고, 하나 이상의 응답 이벤트들(1056)을 폐기할 수 있다(예를 들어, 응답 이벤트 버스(123) 상에 하나 이상의 응답 이벤트들(1056)을 게재하지 않음).
[00118] 또한, 수집기 서비스(1070)는 이벤트 생성기들(1010)로부터 상태 응답들(1075)을 수신하고 응답 이벤트 버스(1023) 상에 상태 메시지를 게재함으로써 상태 메시지(1066)(예를 들어, 실패, ok 및/또는 갱신)를 주기적으로 전송하도록 구성된다. 상태 메시지(1066)가 에러를 나타내면, 클라이언트 애플리케이션(1026)은 질의 가입(1041)을 재시작하기 위해 질의 가입 요청 및 가입 요청을 전송하도록 요구될 수 있다. 예를 들어, 수집기 서비스(1070)는 이벤트 생성기들(1010)로부터 상태 응답들(1075)을 수신하고, 상태 응답들(1075)에 기초하여 질의 가입(1041)의 건강 상태를 결정하고, 질의 가입(1041)의 건강 상태를 나타내는 상태 메시지의 전송을 개시할 수 있다.
[00119] 도 11은 일 양상에 따른 수집기 서비스(1170)의 예를 예시한다. 수집기 서비스(1170)는 도 10b의 수집기 서비스(1070)의 예일 수 있고 이전의 도면들을 참조하여 논의된 특징들 중 임의의 것을 포함할 수 있다. 수집기 서비스(1170)는 응답 이벤트들(1056)에 의해 식별된 메시지들(1032)을 중복제거하고/하거나 메시지들(1032)이 클라이언트 애플리케이션(1026)에 스트리밍 레이트 임계치(1173) 미만으로 전달되도록 스트리밍 레이트를 감소시키기 위해 응답 이벤트들(1056)을 응답 이벤트 버스(1023)에 게재하기 전에 메모리 캐시(1180)와 관련하여 동작할 수 있다. 게다가, 수집기 서비스(1170)는 상태 메시지(1066)를 클라이언트 애플리케이션(1026)에 제공하거나 질의 가입(1041)을 재시작하려고 시도하기 위해 질의 가입(1041)의 건강 상태를 결정하기 위해 메모리 캐시(1180)와 관련하여 동작할 수 있다.
[00120] 수집기 서비스(1170)는 클라이언트 애플리케이션(1026)으로 이미 전달된 메시지들(1032)을 식별하는 응답 이벤트들(1056)을 중복 제거하도록 구성된 중복 제거기(de-duplicator)(1172)를 포함할 수 있다. 일부 예들에서, 질의 가입(1041)은 이벤트 생성기 실패를 방지하기 위해 2개의 이벤트 생성기 그룹(1013)(그 각각은 전체 메시지 스트림(1014)을 수신함)에 할당되고, 이는 이벤트 생성기들(1010)이 중복 메시지들(1032)을 식별할 수 있게 한다. 그러나, 중복 제거기(1172)는, 동일한 메시지가 클라이언트 애플리케이션(1026)에 여러 번 제공되지 않도록, 중복들을 식별하도록 구성된다.
[00121] 수집기 서비스(1170)가 응답 이벤트(1056)를 응답 이벤트 버스(1023)에 게재할 때, 수집기 서비스(1170)는 응답 이벤트(1056)를 메모리 캐시(1180)에 저장한다. 새로운 응답 이벤트(1056)의 수신에 응답하여, 중복 제거기(1172)는 메모리 캐시(1180)에 질의함으로써 새로운 응답 이벤트(1056)의 메시지 식별자가 메모리 캐시(1180)에 저장되어 있는지를 결정한다. 메시지 식별자가 메모리 캐시(1180)에 저장되지 않은 것에 응답하여(예를 들어, 그것이 중복이 아님을 나타냄), 수집기 서비스(1170)는 새로운 응답 이벤트(1056)를 응답 이벤트 버스(1023) 상에 게재하고 새로운 응답 이벤트(1056)를 메모리 캐시(1180)에 저장한다. 새로운 응답 이벤트(1056)의 메시지 식별자가 메모리 캐시(1180)에 저장된 것에 응답하여(예를 들어, 그것이 중복임을 나타냄), 중복 제거기(1172)는 새로운 응답 이벤트(1056)를 폐기하도록 구성된다.
[00122] 수집기 서비스(1170)는 메모리 캐시(1180)에서 상태 응답들(1075)을 질의함으로써 질의 가입(1041)에 대한 건강 상태를 결정하도록 구성되는 상태 메시지 핸들러(1174)를 포함할 수 있다. 예를 들어, 수집기 서비스(1170)는 이벤트 생성기들(1010)로부터 상태 응답들(1075)을 주기적으로 수신하고 상태 응답들(1075)을 메모리 캐시(1180)에 저장할 수 있다. 상태 메시지 핸들러(1174)는 특정 질의 가입(1041)에 대해 할당된 이벤트 생성기들(1010)로부터 메모리 캐시(1180)로부터 상태 응답들(1075)을 획득하기 위해 메모리 캐시(1180)에 주기적으로 질의하고, 이후 응답 이벤트 버스(123) 상에 상태 메시지(10066)를 게재함으로써 상태 메시지(1066)를 전송할 수 있다. 일부 예들에서, 상태 응답들(1075) 중 하나 이상이 실패 상태를 나타내면, 상태 메시지(1066)는 실패 상태를 나타낼 수 있고, 이는 클라이언트 애플리케이션(1026)이 질의 가입(1041)을 재생성하도록 요구할 수 있다(예를 들어, 질의 가입 요청 및 가입 요청을 전송하도록 요구될 수 있다). 상태 응답들(1075)의 대부분 또는 전부가 ok 상태를 나타내면, 상태 메시지(1066)는 ok 상태를 나타낼 수 있다.
[00123] 일부 예들에서, 수집기 서비스(1170)는 이벤트 생성기들(1010)에서 질의 가입(1041)을 재시작하도록 구성되는 가입 재시작기(1176)를 포함한다. 상태 응답들(1075)이 이벤트 생성기들(1010) 중 하나 이상에서 질의 가입(1041)에 에러가 있었던 것을 나타내면, 가입 재시작기(1176)는 응답 이벤트들(1056)과 연관되는 가입 데이터에 기초하여 질의 가입(1041)이 수리가능한지를 결정할 수 있고, 수리가능하다면, 가입 재시작기(1176)는 부정적 상태 응답들(1075)을 보고하는 하나 이상의 이벤트 생성기들(110)에 가입 데이터를 전송할 수 있다.
[00124] 일부 예들에서, 수집기 서비스(1170)는 응답 이벤트들(1056)에 의해 식별되는 메시지들(1032)이 클라이언트 애플리케이션(1026)에 전달되는 스트리밍 레이트를 스트리밍 레이트 임계치(1173) 이하로 제어하기 위해 응답 이벤트들(1056) 중 하나 이상을 폐기하도록 구성된 할당량 검사기(1178)를 포함한다. 일부 예들에서, 스트리밍 레이트 임계치(1173)은 초당 3개의 메시지 내지 초당 20개의 메시지의 범위에 있는 값이다. 일부 예들에서, 스트리밍 레이트 임계치(1173)은 초당 10개의 메시지이다. 일부 예들에서, 할당량 검사기(1178)는 이전에 수신된 응답 이벤트들(1056)의 수가 일정 시간 기간에 걸쳐 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트(1056)를 폐기하도록 구성된다(예컨대, 새로운 응답 이벤트(1056)는 1초 내의 11번째 메시지이고, 임계치는 초당 10개의 메시지임). 그러나, 이전에 수신된 응답 이벤트들(1056)의 수가 일정 시간 기간에 걸쳐 임계량 이하인 경우, 수집기 서비스(1170)는 새로운 응답 이벤트(1056)를 응답 이벤트 버스(1023)에 게재할 수 있다.
[00125] 전술한 바와 같이, 수집기 서비스(1170)는 응답 이벤트들(1056)을 응답 이벤트 버스(1023)에 게재하고 게재된 응답 이벤트들(1056)을 메모리 캐시(1180)에 저장할 수 있다. 새로운 응답 이벤트(1056)에 응답하여, 할당량 검사기(1178)는 일정 시간 기간에 걸쳐 메모리 캐시(1180)에 저장된 응답 이벤트들(1056)의 수를 결정하기 위해 메모리 캐시(1180)에 질의하고, 이어서 메모리 캐시(1180)에 저장된 응답 이벤트들(1056)의 수가 일정 시간 기간에 걸쳐 임계량을 초과하는 것에 응답하여 새로운 응답 이벤트(1056)를 폐기할 수 있다.
[00126] 일부 예들에서, 할당량 검사기(1178)는 응답 이벤트들(156)에 의해 식별된 메시지들(1032)에 대한 관여 확률 메트릭들(1177)을 수신하도록 구성되고, 관여 확률 메트릭들(1177)은 메시지들(1032)과의 예측된 관여 레벨들을 나타낸다. 할당량 검사기(1178)는 스트리밍 레이트가 스트리밍 레이트 임계치(1173) 이하이도록 관여 확률 메트릭들(1177)에 기초하여 하나 이상의 응답 이벤트들(1056)을 폐기하도록 구성된다. 예를 들어, 사용자들은 긍정적 결과들로 간주될 수 있는 메시지들(1032)에 대해 즐겨찾기, 재공유, 및/또는 코멘트함으로써 메시지들(1032)에 관여할 수 있다. 일부 예들에서, 메시징 플랫폼(1004)은 사용자에게 전달될 메시지들(1032)과의 긍정적 관여의 레벨(예를 들어, 사용자가 메시지(1032)에 얼마나 관여(예를 들어, 즐겨찾기, 재공유, 및/또는 코멘트)할 것 같은지)을 예측하는 머신 러닝 자원들을 포함할 수 있고, 할당량 검사기(1178)는 그러한 관여 확률 메트릭들(1177)을 수신할 수 있다. 특정한 메시지(1032)에 대한 관여 확률 메트릭(1177)이 임계 레벨 아래에 있다면, 할당량 검사기(1178)는 스트리밍 레이트를 제어하기 위해 그 메시지(1032)를 폐기할 수 있다. 일부 예들에서, 관여 확률 메트릭들(1177)은 예측된 부정적 결과들, 예를 들어, 사용자가 메시지(1032)가 남용이라는 것을 발견할 수 있는 확률을 포함한다. 이 예들에서, 관여 확률 메트릭들(1177)에 기초하여, 할당량 검사기(1178)는 남용인 것으로 간주될 가능성이 더 높은(예를 들어, 남용 콘텐츠를 포함하는) 메시지들(1032)을 폐기할 수 있다.
[00127] 일부 예들에서, 할당량 검사기(1178)는 응답 이벤트들(1056)에 의해 식별된 메시지들(1032)에 대한 메시지 건강 메트릭들(1179)을 수신하도록 구성되고, 메시지 건강 메트릭들(1179)은 메시징 플랫폼(1004)의 하나 이상의 조건을 위반하는 위험 레벨들(예를 들어, 남용적 거동, 적대적 행동, 위협 등)을 나타낸다. 할당량 검사기(1178)는 스트리밍 레이트가 스트리밍 레이트 임계치(1173) 이하가 되도록 메시지 건강 메트릭들(1179)에 기초하여 하나 이상의 응답 이벤트(1056)를 폐기하도록 구성된다.
[00128] 도 12는 일 양상에 따른 수집기 서비스(1270)의 예를 예시한다. 수집기 서비스(1270)는 도 11의 수집기 서비스(1170)의 예일 수 있고 이전의 도면들을 참조하여 설명된 특징들 중 임의의 것을 포함할 수 있다. 수집기 서비스(1270)는 제1 수집기 서비스 인스턴스(1271-1), 제2 수집기 서비스 인스턴스(1271-2), 및 제3 수집기 서비스 인스턴스(1271-3)와 같은 복수의 수집기 서비스 인스턴스들(1271)을 포함할 수 있다. 3개의 수집기 서비스 인스턴스들(1271)이 도 12에 예시되지만, 수집기 서비스(1270)는 임의의 수의 수집기 서비스 인스턴스들(1271)을 포함할 수 있다. 각각의 수집기 서비스 인스턴스(1271)는 응답 이벤트들(1056) 및/또는 상태 응답들(1075)의 별개의 부분을 수신할 수 있다. 예를 들어, 제1 수집기 서비스 인스턴스(1271-1)는 응답 이벤트들(1056)의 제1 부분 및/또는 상태 응답들(1075)을 수신할 수 있고, 제2 수집기 서비스 인스턴스(1271-2)는 응답 이벤트들(1056)의 제2 부분 및/또는 상태 응답들(1075)을 수신할 수 있고, 제3 수집기 서비스 인스턴스(1271-3)는 응답 이벤트들(1056)의 제3 부분 및/또는 상태 응답들(1075)을 수신할 수 있다. 각각의 수집기 서비스 인스턴스(1271)는 도 11의 수집기 서비스(1170)의 별개의 인스턴스일 수 있다. 예를 들어, 각각의 수집기 서비스 인스턴스(1271)는 도 11의 수집기 서비스(1170)의 동작들 중 임의의 것을 수행할 수 있다. 예를 들어, 각각의 수집기 서비스 인스턴스(1271)는 중복 제거기(1172), 상태 메시지 핸들러(1174), 가입 재시작기(1176), 및/또는 할당량 검사기(1178)의 기능들을 포함할 수 있다.
[00129] 일부 예들에서, 수집기 서비스(1270)는 2-계층 스트리밍 레이트 조정 프로세스를 수행하도록 구성된다. 예를 들어, 제1 계층과 관련하여, 각각의 수집기 서비스 인스턴스(1271)는 응답 이벤트들(1056)의 별개의 부분을 수신하고, 각각의 서브세트가 개별 스트리밍 레이트 임계치(1284) 이하인 응답 이벤트들(10056)의 수를 포함하도록 하나 이상의 응답 이벤트들(1056)을 폐기하는 것에 의해 응답 이벤트들(1056)의 서브세트를 획득할 수 있다. 제2 계층과 관련하여, 각각의 수집기 서비스 인스턴스(1271)는 그의 서브세트를 메모리 캐시(1180)에 저장하고, 수집기 서비스 인스턴스들(1271) 중 적어도 하나는 서브세트들을 집계하고, 집계된 서브세트들이 스트리밍 레이트 임계치(1173) 이하인 응답 이벤트들(1056)의 수를 포함하도록 집계된 서브세트들로부터 하나 이상의 응답 이벤트들(1056)을 폐기한다.
[00130] 보다 상세하게는, 제1 계층과 관련하여, 제1 수집기 서비스 인스턴스(1271-1)는 응답 이벤트들(1056)의 제1 부분을 수신하고, 개별 스트리밍 레이트 임계치(1284) 이하인 스트리밍 레이트를 제공하기 위해 하나 이상의 응답 이벤트들(1056)을 폐기하는 것에 의해 그러한 응답 이벤트들(1056)의 제1 서브세트를 획득할 수 있다. 개별 스트리밍 레이트 임계치가 초당 4개의 메시지인 경우, 제1 수집기 서비스 인스턴스(1271-1)는 1초 내에 4개 초과의 임의의 메시지들을 폐기하고 제1 서브세트를 메모리 캐시(1180)에 저장한다. 제2 수집기 서비스 인스턴스(1271-2)는 응답 이벤트들(1056)의 제2 부분을 수신하고, 개별 스트리밍 레이트 임계치(1284) 이하인 스트리밍 레이트를 제공하기 위해 하나 이상의 응답 이벤트들(1056)을 폐기하는 것에 의해 그러한 응답 이벤트들(1056)의 제2 서브세트를 획득할 수 있다. 개별 스트리밍 레이트 임계치가 초당 4개의 메시지인 경우, 제2 수집기 서비스 인스턴스(1271-2)는 1초 내에 4개 초과의 임의의 메시지들을 폐기하고 제2 서브세트를 메모리 캐시(1180)에 저장한다. 유사하게, 제3 수집기 서비스 인스턴스(1271-3)는 응답 이벤트들(1056)의 제3 부분을 수신하고, 개별 스트리밍 레이트 임계치(1284) 이하인 스트리밍 레이트를 제공하기 위해 하나 이상의 응답 이벤트들(1056)을 폐기하는 것에 의해 그러한 응답 이벤트들(1056)의 제3 서브세트를 획득할 수 있다. 개별 스트리밍 레이트 임계치가 초당 4개의 메시지인 경우, 제3 수집기 서비스 인스턴스(1271-3)는 1초 내에 4개 초과의 임의의 메시지들을 폐기하고 제3 서브세트를 메모리 캐시(1180)에 저장한다.
[00131] 이 시점에서, 메시지들의 총수는 12개이고, 스트리밍 레이트 임계치(1173)는 초당 10개의 메시지일 수 있다. 제2 계층과 관련하여, 수집기 서비스 인스턴스들(1271) 중 적어도 하나는 제1, 제2, 및 제3 서브세트들을 집계하고, 집계된 서브세트들이 스트리밍 레이트 임계치(1173) 이하인 응답 이벤트들(1056)의 수를 포함하도록, 집계된 서브세트들로부터 하나 이상의 응답 이벤트들(1056)을 폐기한다. 스트리밍 레이트 임계치(1173)가 초당 10개의 메시지인 경우, 수집기 서비스 인스턴스들(1271) 중 적어도 하나는 2개의 응답 이벤트들(156)을 폐기하고 10개의 응답 이벤트들(1056)을 응답 이벤트 버스(1023)에 게재한다.
[00132] 일부 예들에서, 수집기 서비스(1270)는 2-계층 중복 제거 프로세스를 수행하도록 구성된다. 예를 들어, 제1 계층과 관련하여, 각각의 수집기 서비스 인스턴스(1271)는 응답 이벤트들(156)의 별개의 부분을 수신하고 동일한 메시지(1032)를 식별하는 임의의 응답 이벤트들(1056)을 제거할 수 있다. 각각의 수집기 서비스 인스턴스(1271)는 응답 이벤트들(1056)의 그의 각각의 그룹을 메모리 캐시(1180)에 저장할 수 있다. 수집기 서비스 인스턴스들(1271) 중 적어도 하나는 그룹들을 집계하기 위해 메모리 캐시(1180)에 질의하고 집계된 그룹들로부터 동일한 메시지(1032)를 식별하는 임의의 응답 이벤트들(1056)을 폐기할 수 있다.
[00133] 도 13은 일 양상에 따른 시스템(1000)의 예시적인 동작들을 도시하는 흐름도(1300)를 예시한다. 흐름도가 도 10a 및 도 10b의 시스템(1000)을 참조하여 논의되지만, 도 13의 동작들은 본 명세서에서 논의되는 시스템들 중 임의의 것에 적용가능할 수 있다.
[00134] 동작(1302)은, 이벤트 생성기 관리기(1008)에 의해, 서버 컴퓨터(1002)에 의해 실행가능한 메시징 플랫폼(1004) 상에서 교환되는 메시지들의 메시지 스트림(114)을 포함하는 메시지 큐(1012) 내의 콘텐츠와 매칭시키기 위한 질의 가입(1041)을 수신하는 것을 포함하며, 메시징 플랫폼(1004)은 컴퓨팅 디바이스(1024)에 의해 실행가능한 클라이언트 애플리케이션(1026)의 사용자 인터페이스에 메시지들(1032)을 전달하도록 구성된다.
[00135] 동작(1304)은, 이벤트 생성기 관리기(1008)에 의해, 질의 가입(1041)을 복수의 이벤트 생성기 그룹들(1013) 중의 이벤트 생성기 그룹(1013)에 할당하는 것을 포함하며, 각각의 이벤트 생성기 그룹(1013)은 메시지 큐(1012)로부터 메시지들의 메시지 스트림(1014)을 수신하도록 구성되고, 각각의 이벤트 생성기 그룹(1013)은 복수의 이벤트 생성기들(1010)을 포함하고, 각각의 이벤트 생성기(1010)는 메시지들의 메시지 스트림(1014)의 별개의 부분을 수신하도록 구성된다.
[00136] 동작(1306)은, 개별 이벤트 생성기(1010)에 의해, 질의 가입(1041)의 질의어를 포함하는 메시지들의 메시지 스트림(114)의 각각의 부분으로부터의 메시지에 응답하여 응답 이벤트(1056)를 생성하는 것을 포함한다.
[00137] 동작(1308)은, 수집기 서비스(1070)에 의해, 응답 이벤트(1056)를 응답 이벤트 버스(1023)에 게재하는 것을 포함하고, 응답 이벤트(1056)는 클라이언트 애플리케이션(1026)에 전달될 메시지(1032)에 대한 메시지 식별자를 포함한다.
[00138] 도 14는 일 양상에 따른 도 11의 수집기 서비스(1170) 및/또는 도 12의 수집기 서비스(1270)를 갖는 도 10a 및 도 10b의 시스템(1000)의 예시적인 동작들을 도시하는 흐름도(1400)를 예시한다. 그러나, 도 14의 동작들은 본 명세서에서 논의되는 시스템들 중 임의의 것에 적용가능할 수 있다.
[00139] 동작(1402)은 서버 컴퓨터(1002)에 의해 실행가능한 메시징 플랫폼(1004) 상에서 교환되는 메시지들의 메시지 스트림(1014)을 수신하는 것을 포함하고, 메시징 플랫폼(1004)은 컴퓨팅 디바이스(1024)에 의해 실행가능한 클라이언트 애플리케이션(1026)의 사용자 인터페이스에 메시지들(1032)을 전달하도록 구성된다.
[00140] 동작(1404)은 메시징 플랫폼(1004) 상에서 활성 질의에 대한 질의 가입(1041)을 수신하는 것을 포함한다.
[00141] 동작(1406)은 질의 가입(1041)의 질의어를 포함하는 메시지들의 메시지 스트림(1014)의 메시지에 응답하여 응답 이벤트(1056)가 생성되도록 질의 가입(1041)이 활성인 동안 응답 이벤트들(1056)을 생성하는 것을 포함한다.
[00142] 동작(1408)은 응답 이벤트들(1056)에 의해 식별된 메시지들이 클라이언트 애플리케이션(1026)에 전달되는 스트리밍 레이트를 스트리밍 레이트 임계치(1173) 이하로 제어하기 위해 응답 이벤트들(1056) 중 하나 이상을 폐기하는 것을 포함한다.
[00143] 동작(1410)은, 네트워크(1050)를 통해, 스트리밍 레이트 임계치(1173) 이하인 방식으로 클라이언트 애플리케이션(1026)에 메시지들(1032)을 전달하는 것을 포함한다.
[00144] 실시예들은 또한 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법을 제공하며, 방법은, 클라이언트 애플리케이션에 의해, 질의 가입 요청을 네트워크를 통해 메시징 플랫폼의 가입 실행기로 전송하는 단계 ― 질의 가입 요청은 가입 실행기로 하여금 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―; 클라이언트 애플리케이션에 의해, 가입 요청을 네트워크를 통해 메시징 플랫폼의 전송 엔진으로 전송하는 단계 ― 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―; 클라이언트 애플리케이션에 의해, 질의 가입이 활성인 동안 메시지들이 클라이언트 애플리케이션의 사용자 인터페이스 상에 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하는 단계; 및 클라이언트 애플리케이션에 의해, 가입 갱신 요청을 네트워크를 통해 전송 엔진으로 주기적으로 전송하는 단계를 포함하고, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다.
[00145] 방법은 다음과 같은 특징들 중 하나 이상을 포함할 수 있는데: 질의 가입 요청은 질의어 및 사용자 식별자를 포함하고, 질의 가입 요청은 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함하고, 그리고/또는 가입 요청은 전송 토픽을 포함하고, 전송 토픽은 질의 가입과 연관된 하나 이상의 질의어에 대응한다. 방법은, 클라이언트 애플리케이션에 의해, 네트워크를 통해, 가입 실행기로부터 가입 상태 응답을 수신하는 단계 ― 가입 상태 응답은 전송 토픽 및 가입 식별자를 포함함 ―; 및 클라이언트 애플리케이션에 의해, 전송 토픽 및 가입 식별자를 포함하도록 가입 요청을 생성하는 단계를 포함할 수 있다. 일부 예들에서, 질의 가입 요청 및 가입 요청은 실질적으로 서로 병렬로 전송된다. 방법은, 클라이언트 애플리케이션에 의해, 전송 엔진으로부터 채널 식별자를 수신하는 단계를 포함할 수 있고, 채널 식별자는 전달 채널을 식별한다. 일부 예들에서, 메시지들이 시간에 걸쳐 타임라인 상에 자동으로 스트리밍되도록 메시지들의 스트림이 클라이언트 애플리케이션의 타임라인 상에 렌더링된다. 일부 예들에서, 타임라인은 클라이언트 애플리케이션의 사용자 인터페이스 상의 검색 열이고, 방법은, 클라이언트 애플리케이션에 의해, 검색 열의 생성에 응답하여 질의 가입 요청을 생성하는 단계를 더 포함한다. 일부 예들에서, 타임라인은 클라이언트 애플리케이션의 사용자의 홈 타임라인이며, 따라서 메시지들은 사용자의 홈 타임라인으로 자동으로 스트리밍된다. 일부 예들에서, 메시지들의 스트림은 메시징 플랫폼 상의 대화와 관련된 대화 그래프 내의 메시지들을 포함한다.
[00146] 일부 예들에서, 비일시적 컴퓨터 판독가능 매체는 실행가능 명령어들을 저장하고, 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금, 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션에 의해, 네트워크를 통해, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼의 가입 실행기에 질의 가입 요청을 전송하게 하고 ― 질의 가입 요청은 가입 실행기로 하여금 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―; 클라이언트 애플리케이션에 의해, 네트워크를 통해, 가입 실행기로부터 상태 메시지 응답을 수신하게 하고 ― 상태 메시지 응답은 전송 토픽을 포함함 ―; 클라이언트 애플리케이션에 의해, 네트워크를 통해, 메시징 플랫폼의 전송 엔진에 가입 요청을 전송하게 하고 ― 가입 요청은 전송 토픽을 포함하고, 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성되고, 전달 채널은 전송 토픽에 할당됨 ―; 클라이언트 애플리케이션에 의해, 질의 가입이 활성인 동안 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 클라이언트 애플리케이션의 사용자 인터페이스 상에 메시지들이 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하게 하고; 그리고 클라이언트 애플리케이션에 의해, 네트워크를 통해, 전송 엔진에 가입 갱신 요청을 주기적으로 전송하게 하도록 구성되며, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다.
[00147] 일부 예들에서, 질의 가입 요청은 질의어, 사용자 식별자, 및 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함한다. 일부 예들에서, 질의 가입 요청은 GraphQL 가입 질의이다. 동작들은, 클라이언트 애플리케이션에 의해, 전달 채널을 통해 전송 엔진으로부터 네트워크를 통해 상태 메시지를 수신하고; 클라이언트 애플리케이션에 의해, 상태 메시지에 기초하여 질의 가입 요청 및 가입 요청을 재전송하는 것을 포함할 수 있다.
[00148] 일부 예들에서, 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템으로서, 시스템은 메시징 플랫폼 상에서 교환되는 메시지들의 큐를 생성하도록 구성된, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼; 및 클라이언트 애플리케이션의 사용자 인터페이스 상에 소셜 콘텐츠의 타임라인을 렌더링하도록 구성된, 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션을 포함하고, 클라이언트 애플리케이션은 질의 가입 요청을 네트워크를 통해 메시징 플랫폼의 가입 실행기에 전송하고 ― 질의 가입 요청은 가입 실행기로 하여금 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―; 가입 요청을 네트워크를 통해 메시징 플랫폼의 전송 엔진에 전송하고 ― 가입 요청은 전송 엔진으로 하여금 전송 엔진과 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―; 질의 가입이 활성인 동안 메시지들이 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 클라이언트 애플리케이션의 사용자 인터페이스 상에서 스트리밍되도록 전달 채널을 통해 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하고; 가입 갱신 요청을 네트워크를 통해 전송 엔진에 주기적으로 전송하도록 구성되며, 가입 갱신 요청은 전송 엔진으로 하여금 전달 채널을 갱신하게 하고 가입 실행기로 하여금 질의 가입을 갱신하게 하도록 구성된다. 일부 예들에서, 질의 가입 요청은 질의어 및 사용자 식별자를 포함하는 GraphQL 가입 질의이다. 일부 예들에서, 가입 요청은 전송 토픽을 포함하고, 전송 토픽은 질의어에 대응하고, 전송 토픽은 전송 엔진과 호환가능한 포맷을 갖는다. 일부 예들에서, 질의 가입 요청과 가입 요청은 서로 실질적으로 병렬로 전송된다. 일부 예들에서, 클라이언트 애플리케이션은 질의 가입이 활성인 동안 타임라인 상에 메시지들의 스트림을 자동으로 렌더링하도록 구성된다. 일부 예들에서, 메시지들의 스트림은 대화와 관련된 메시지들을 포함하고, 클라이언트 애플리케이션은 메시지들이 메시징 플랫폼에 의해 생성되고 공유될 때 사용자 인터페이스 상에 대화에 관련된 메시지들을 푸시하도록 구성된다.
[00149] 위의 설명에서, 다수의 상세가 제시된다. 그러나, 본 개시내용의 이익을 갖는 이 분야의 통상의 기술자에게는, 본 개시내용의 구현들이 이러한 특정 상세들 없이도 실시될 수 있다는 것이 명백할 것이다. 일부 경우들에서, 잘 알려진 구조들 및 디바이스들은 설명을 모호하게 하는 것을 회피하기 위해, 상세하게 보다는 블록도 형태로 도시된다.
[00150] 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 심볼 표현들에 관하여 제시된다. 이러한 알고리즘 설명들 및 표현들은 데이터 처리 분야의 통상의 기술자들이 그들의 작업의 본질을 이 분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 알고리즘은 본 명세서에서 그리고 일반적으로, 원하는 결과를 유도하는 단계들의 일관된 시퀀스인 것으로 생각된다. 단계들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 보통, 반드시 그런 것은 아니지만, 이러한 양들은 저장, 전송, 조합, 비교 및 달리 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 때로는, 주로 일반적인 사용의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 지칭하는 것이 편리한 것으로 입증되었다.
[00151] 그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되어야 하고 이러한 양들에 적용되는 편리한 라벨들일 뿐이라는 점을 염두에 두어야 한다. 상기 논의로부터 명백한 바와 같이, 구체적으로 달리 언급되지 않는 한, 설명 전반에 걸쳐, "식별", "결정", "계산", "업데이트", "전송", "수신", "생성", "변경" 등과 같은 용어들을 사용하는 논의들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(예를 들어, 전자적) 양들로서 표현되는 데이터를 조작하여, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션들 및 프로세스들을 지칭한다는 점이 인식된다.
[00152] 본 개시내용의 구현들은 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 요구된 목적들을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 그러한 컴퓨터 프로그램은 플로피 디스크들, 광학 디스크들, CD-ROM들 및 자기 광학 디스크들을 포함하는 임의의 유형의 디스크, 판독 전용 메모리(ROM)들, 랜덤 액세스 메모리(RAM)들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 플래시 메모리, 또는 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체와 같은, 그러나 이들에 제한되지 않는 비일시적 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
[00153] 단어 "예" 또는 "예시적인"은 예, 사례, 또는 예시로서 역할을 하는 것을 의미하도록 본 명세서에서 사용된다. "예" 또는 "예시적인"으로서 본 명세서에서 설명된 임의의 양상 또는 설계는 다른 양상들 또는 설계들에 비해 바람직하거나 유리한 것으로서 반드시 해석되지는 않는다. 오히려, 단어 "예" 또는 "예시적인"의 사용은 구체적인 방식으로 개념들을 제시하도록 의도된다. 본 출원에서 사용되는 바와 같이, 용어 "또는"은 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 특정되거나 문맥으로부터 명확하지 않으면, "X는 A 또는 B를 포함한다"는 것은 자연적인 포괄적 치환들 중의 임의의 것을 의미하도록 의도된다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; X가 A 또는 B의 양자를 포함할 경우, "X는 A 또는 B를 포함한다"는 것은 상기한 사례들 중의 임의의 것 하에서 충족된다. 게다가, 본 출원 및 첨부된 청구항들에서 사용된 바와 같은 관사 "a" 및 "an"은 달리 특정되거나 문맥으로부터 단수 형태와 관련되는 것으로 명확하지 않으면, "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 한다. 또한, 용어 "구현" 또는 "일 실시예" 또는 "구현" 또는 "일 구현"의 사용은 전반적으로 그와 같이 설명되지 않으면, 동일한 실시예 또는 구현을 의미하는 것으로 의도되지 않는다. 또한, 본 명세서에서 사용된 바와 같은 용어 "제1", "제2", "제3", "제4" 등은 상이한 요소들을 구별하기 위한 라벨들로서 의도되고, 그들의 수치적 지정에 따라 서수적 의미를 반드시 갖지는 않을 수 있다.
[00154] 본 명세서에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 시스템들이 본 명세서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 요구되는 방법 단계들을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 다양한 이러한 시스템들에 대해 요구되는 구조는 아래의 설명으로부터 나타날 것이다. 또한, 본 개시내용은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에 설명된 바와 같은 본 개시내용의 교시들을 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
[00155] 위의 설명은 본 개시내용의 여러 구현들의 양호한 이해를 제공하기 위해 특정 시스템들, 컴포넌트들, 방법들 등의 예들과 같은 다수의 특정 상세를 제시한다. 그러나, 이 분야의 기술자에게는 본 개시내용의 적어도 일부 구현들이 그러한 특정 상세 없이도 실시될 수 있다는 것이 명백할 것이다. 다른 예들에서는, 공지된 컴포넌트들 또는 방법들은 상세히 설명되지 않거나, 본 개시내용을 불필요하게 불명확하게 하지 않기 위해 간단한 블록도 포맷으로 제시된다. 따라서, 전술한 특정 상세들은 예들일 뿐이다. 특정 구현들은 이러한 예시적인 상세들과 다를 수 있으며, 여전히 본 개시내용의 범위 내에 있는 것으로 고려된다.

Claims (41)

  1. 실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템으로서,
    서버 컴퓨터에 의해 실행가능한 상기 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐 ― 상기 메시징 플랫폼은 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션의 사용자 인터페이스로 메시지들을 스트리밍하도록 구성됨 ―;
    복수의 이벤트 생성기들;
    질의 가입을 수신하고 상기 질의 가입을 상기 복수의 이벤트 생성기들 중 하나 이상에 할당하도록 구성된 이벤트 생성기 관리기 ― 각각의 이벤트 생성기는 상기 메시지들의 스트림으로부터의 메시지가 상기 질의 가입을 충족시키는 것에 응답하여 응답 이벤트를 생성하도록 구성됨 ―; 및
    상기 복수의 이벤트 생성기들로부터 상기 응답 이벤트들을 수신하고, 상기 클라이언트 애플리케이션으로 전달되게 하기 위해 상기 응답 이벤트들을 응답 이벤트 버스 상에 게재(publish)하도록 구성된 수집기 서비스를 포함하는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  2. 제1항에 있어서,
    상기 수집기 서비스는 상기 복수의 이벤트 생성기들로부터 상태 응답들을 수신하고, 상기 상태 응답들을 메모리 캐시에 저장하도록 구성되고, 상기 수집기 서비스는 상기 메모리 캐시에서 상기 상태 응답들을 질의함으로써 상기 질의 가입의 건강 상태를 주기적으로 결정하도록 구성되고,
    상기 건강 상태가 수리가능한 것으로 결정되는 것에 응답하여, 상기 수집기 서비스는 상기 메모리 캐시로부터 상기 가입 질의에 관련된 가입 데이터를 획득하고, 상기 가입 데이터를 하나 이상의 이벤트 생성기에 제공하여 상기 질의 가입을 재시작하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 이벤트 생성기 관리기는 쓰리프트 호출(thrift call)을 통해 상기 질의 가입을 수신하도록 구성된 애플리케이션 프로그래밍 인터페이스(API)를 포함하고, 상기 API는 상기 질의 가입과 연관된 사용자 식별자에 기초하여 상기 이벤트 생성기들 중 하나 이상에 상기 질의 가입을 할당하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 이벤트 생성기 관리기는 상기 복수의 이벤트 생성기들에서 처리되는 질의 가입들의 수 및 상기 메시지 스트림의 크기를 모니터링하고, 상기 질의 가입들의 수 및 상기 메시지 스트림의 크기에 기초하여 상기 복수의 이벤트 생성기들의 수를 조정하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 상기 이벤트 생성기 관리기는 개별 질의 가입을 제1 이벤트 생성기 그룹 및 제2 이벤트 생성기 그룹에 할당하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    새로운 응답 이벤트의 수신에 응답하여, 상기 수집기 서비스는 메모리 캐시에 질의함으로써 상기 질의 가입에 대한 상기 응답 이벤트들이 스트리밍 레이트 임계치를 초과했는지를 결정하도록 구성되고, 상기 수집기 서비스는 상기 스트리밍 레이트 임계치가 초과된 것에 응답하여 상기 새로운 응답 이벤트를 폐기하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    새로운 응답 이벤트의 수신에 응답하여, 상기 수집기 서비스는 상기 새로운 응답 이벤트의 메시지 식별자가 메모리 캐시에 저장되어 있는지를 결정하도록 구성되고, 상기 수집기 서비스는 상기 메시지 식별자가 상기 메모리 캐시에 저장되어 있지 않은 것에 응답하여 상기 응답 이벤트 버스 상에 상기 새로운 응답 이벤트를 게재하고 상기 새로운 응답 이벤트를 상기 메모리 캐시에 저장하도록 구성되고, 상기 수집기 서비스는 상기 메시지 식별자가 상기 메모리 캐시에 저장되어 있는 것에 응답하여 상기 새로운 응답 이벤트를 폐기하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 질의 가입 요청의 수신에 응답하여 상기 이벤트 생성기 관리기에 상기 질의 가입을 전송하도록 구성된 가입 실행기; 및
    상기 클라이언트 애플리케이션으로부터 상기 네트워크를 통해 수신된 가입 요청의 수신에 응답하여 상기 전송 엔진과 상기 클라이언트 애플리케이션 사이에 전달 채널을 생성하여, 상기 응답 이벤트들에 의해 식별된 메시지들이 상기 질의 가입이 활성인 시간 기간 동안 상기 전달 채널을 통해 상기 클라이언트 애플리케이션으로 스트리밍되게 하도록 구성된 전송 엔진을 더 포함하는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  9. 제8항에 있어서,
    상기 가입 실행기는 상기 응답 이벤트 버스에 가입하고, 상기 가입 실행기는, 상기 응답 이벤트가 상기 응답 이벤트 버스 상에 게재되는 것에 응답하여, 상기 응답 이벤트에 의해 식별된 메시지의 저자가 상기 질의 가입의 사용자 식별자와 연관된 사용자를 제한했는지를 결정하도록 구성되고, 상기 가입 실행기는 상기 사용자가 상기 저자에 의해 제한된 것으로 결정되는 것에 응답하여 상기 응답 이벤트에 의해 식별된 상기 메시지를 폐기하도록 구성되는,
    실시간 메시지들을 전달하기 위해 메시징 플랫폼에서 질의 가입들을 처리하기 위한 시스템.
  10. 실행가능 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 상기 적어도 하나의 프로세서로 하여금:
    이벤트 생성기 관리기에 의해, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐 내의 콘텐츠와 매칭시키기 위한 질의 가입을 수신하게 하고 ― 상기 메시징 플랫폼은 컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션의 사용자 인터페이스에 메시지들을 전달하도록 구성됨 ―;
    상기 이벤트 생성기 관리기에 의해, 상기 질의 가입을 복수의 이벤트 생성기들 중 하나 이상에 할당하게 하고;
    개별 이벤트 생성기에 의해, 상기 질의 가입의 질의어를 포함하는 상기 메시지들의 스트림으로부터의 메시지에 응답하여 응답 이벤트를 생성하게 하고;
    수집기 서비스에 의해, 상기 복수의 이벤트 생성기들로부터 상기 응답 이벤트들을 수신하게 하고;
    상기 수집기 서비스에 의해, 상기 응답 이벤트들을 메모리 캐시에 저장하게 하며; 그리고
    상기 수집기 서비스에 의해, 상기 클라이언트 애플리케이션에 전달되도록 상기 응답 이벤트들을 응답 이벤트 버스 상에 게재하게 하도록 구성되는,
    비일시적 컴퓨터 판독가능 매체.
  11. 제10항에 있어서,
    상기 수집기 서비스에 의해, 상기 이벤트 생성기들로부터 상태 응답들을 수신하고 상기 상태 응답들을 상기 메모리 캐시에 저장하고;
    상기 수집기 서비스에 의해, 상기 메모리 캐시에서 상기 상태 응답들을 질의함으로써 상기 질의 가입의 건강 상태를 주기적으로 결정하고;
    상기 건강 상태가 수리가능한 것으로 결정되는 것에 응답하여,
    상기 메모리 캐시로부터 상기 가입 질의에 관련된 가입 데이터를 획득하고; 그리고
    상기 질의 가입을 재시작하기 위해 상기 가입 데이터를 하나 이상의 이벤트 생성기에게 제공하는 것을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  12. 제10항 또는 제11항에 있어서,
    상기 복수의 이벤트 생성기들은 이벤트 생성기 그룹들로 배열되고, 상기 질의 가입은 상기 질의 가입과 연관된 사용자 식별자를 사용하여 모듈로 연산의 실행에 기초하여 이벤트 생성기 그룹에 할당되는,
    비일시적 컴퓨터 판독가능 매체.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 수집기 서비스에 의해, 일정 시간 기간 내의 응답 이벤트들의 수가 스트리밍 레이트 임계치를 초과했는지를 결정하고; 그리고
    상기 수집기 서비스에 의해, 상기 스트리밍 레이트 임계치가 초과된 것에 응답하여 하나 이상의 응답 이벤트를 폐기하는 것을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 수집기 서비스에 의해, 상기 응답 이벤트에 의해 식별된 메시지가 응답 이벤트 버스에 이미 게재되었는지를 결정하고; 그리고
    상기 메시지가 상기 응답 이벤트 버스에 이미 게재된 것으로 결정되는 것에 응답하여 상기 응답 이벤트를 폐기하는 것을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서,
    가입 실행기에 의해, 상기 클라이언트 애플리케이션으로부터 네트워크를 통해 수신된 질의 가입 요청의 수신에 응답하여 상기 이벤트 생성기 관리기에 상기 질의 가입을 전송하고;
    전송 엔진에 의해, 상기 클라이언트 애플리케이션으로부터 상기 네트워크를 통해 수신된 가입 요청의 수신에 응답하여 상기 전송 엔진과 상기 클라이언트 애플리케이션 사이에 전달 채널을 생성하고;
    상기 가입 실행기에 의해, 상기 응답 이벤트로부터의 메시지 식별자 및 상기 질의 가입과 연관된 사용자 식별자에 기초하여 메시지를 생성하고; 그리고
    상기 전송 엔진에 의해, 상기 질의 가입이 활성인 시간 기간 동안 상기 전달 채널을 통해 상기 메시지를 상기 클라이언트 애플리케이션으로 스트리밍하는 것을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  16. 메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법으로서,
    이벤트 생성기 관리기에 의해, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 상에서 교환되는 메시지들의 스트림을 포함하는 큐 내의 콘텐츠와 매칭시키기 위한 질의 가입을 수신하는 단계;
    상기 이벤트 생성기 관리기에 의해, 상기 질의 가입을 복수의 이벤트 생성기 그룹들 중의 이벤트 생성기 그룹에 할당하는 단계 ― 각각의 이벤트 생성기 그룹은 복수의 이벤트 생성기들을 포함하고, 각각의 이벤트 생성기 그룹은 상기 메시지들의 스트림의 별개의 부분을 수신하도록 구성됨 ―;
    개별 이벤트 생성기에 의해, 상기 질의 가입의 질의어를 포함하는 상기 메시지들의 스트림의 각각의 부분으로부터의 메시지에 응답하여 응답 이벤트를 생성하는 단계; 및
    수집기 서비스에 의해, 상기 응답 이벤트를 응답 이벤트 버스에 게재하는 단계를 포함하는,
    메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법.
  17. 제16항에 있어서,
    상기 수집기 서비스에 의해, 상기 이벤트 생성기들로부터 상태 응답들을 수신하고 상기 상태 응답들을 메모리 캐시에 저장하는 단계;
    상기 수집기 서비스에 의해, 상기 메모리 캐시에서 상기 상태 응답들을 질의함으로써 상기 질의 가입의 건강 상태를 주기적으로 결정하는 단계;
    상기 건강 상태가 수리가능한 것으로 결정되는 것에 응답하여,
    상기 메모리 캐시로부터 상기 가입 질의에 관련된 가입 데이터를 획득하는 단계; 및
    상기 질의 가입을 재시작하기 위해 상기 가입 데이터를 하나 이상의 이벤트 생성기에 제공하는 단계를 더 포함하는,
    메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법.
  18. 제16항 또는 제17항에 있어서,
    상기 질의 가입은 1차 이벤트 생성기 그룹 및 2차 이벤트 생성기 그룹에 할당되는,
    메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 수집기 서비스에 의해, 상기 게재 단계 이전에 일정 시간 기간 내의 응답 이벤트들의 수가 스트리밍 레이트 임계치를 초과했는지를 결정하는 단계; 및
    상기 수집기 서비스에 의해, 상기 스트리밍 레이트 임계치가 초과된 것에 응답하여 상기 응답 이벤트를 폐기하는 단계를 더 포함하는,
    메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 수집기 서비스에 의해, 상기 게재 단계 이전에 상기 응답 이벤트에 의해 식별된 메시지가 상기 응답 이벤트 버스에 이미 게재되었는지를 결정하는 단계; 및
    상기 수집기 서비스에 의해, 상기 메시지가 상기 응답 이벤트 버스에 이미 게재된 것으로 결정되는 것에 응답하여 상기 응답 이벤트를 폐기하는 단계를 더 포함하는,
    메시징 플랫폼에서 질의 가입들을 처리하기 위한 방법.
  21. 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법으로서,
    클라이언트 애플리케이션에 의해, 질의 가입 요청을 네트워크를 통해 상기 메시징 플랫폼의 가입 실행기에 전송하는 단계 ― 상기 질의 가입 요청은 상기 가입 실행기로 하여금 상기 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―;
    상기 클라이언트 애플리케이션에 의해, 가입 요청을 상기 네트워크를 통해 상기 메시징 플랫폼의 전송 엔진에 전송하는 단계 ― 상기 가입 요청은 상기 전송 엔진으로 하여금 상기 전송 엔진과 상기 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―;
    상기 클라이언트 애플리케이션에 의해, 상기 질의 가입이 활성인 동안 상기 클라이언트 애플리케이션의 사용자 인터페이스 상에 메시지들이 스트리밍되도록 상기 전달 채널을 통해 상기 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하는 단계; 및
    상기 클라이언트 애플리케이션에 의해, 가입 갱신 요청을 상기 네트워크를 통해 상기 전송 엔진에 주기적으로 전송하는 단계를 포함하고,
    상기 가입 갱신 요청은 상기 전송 엔진으로 하여금 상기 전달 채널을 갱신하게 하고 상기 가입 실행기로 하여금 상기 질의 가입을 갱신하게 하도록 구성되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  22. 제21항에 있어서,
    상기 질의 가입 요청은 질의어 및 사용자 식별자를 포함하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  23. 제21항 또는 제22항에 있어서,
    상기 질의 가입 요청은 상기 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  24. 제21항 내지 제23항 중 어느 한 항에 있어서,
    상기 가입 요청은 전송 토픽을 포함하고, 상기 전송 토픽은 상기 질의 가입과 연관된 하나 이상의 질의어에 대응하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  25. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 클라이언트 애플리케이션에 의해, 상기 네트워크를 통해 상기 가입 실행기로부터 가입 상태 응답을 수신하는 단계 ― 상기 가입 상태 응답은 전송 토픽 및 가입 식별자를 포함함 ―; 및
    상기 클라이언트 애플리케이션에 의해, 상기 전송 토픽 및 상기 가입 식별자를 포함하도록 상기 가입 요청을 생성하는 단계를 더 포함하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  26. 제21항 내지 제25항 중 어느 한 항에 있어서,
    상기 질의 가입 요청 및 상기 가입 요청은 실질적으로 서로 병렬로 전송되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  27. 제21항 내지 제26항 중 어느 한 항에 있어서,
    상기 클라이언트 애플리케이션에 의해, 상기 전송 엔진으로부터 채널 식별자를 수신하는 단계를 더 포함하고,
    상기 채널 식별자는 상기 전달 채널을 식별하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  28. 제21항 내지 제27항 중 어느 한 항에 있어서,
    상기 메시지들의 스트림은 상기 메시지들이 시간에 걸쳐 상기 타임라인 상에 자동으로 스트리밍되도록 상기 클라이언트 애플리케이션의 타임라인 상에 렌더링되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  29. 제28항에 있어서,
    상기 타임라인은 상기 클라이언트 애플리케이션의 상기 사용자 인터페이스 상의 검색 열이고,
    상기 방법은:
    상기 클라이언트 애플리케이션에 의해, 상기 검색 열의 생성에 응답하여 상기 질의 가입 요청을 생성하는 단계를 더 포함하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  30. 제28항에 있어서,
    상기 타임라인은 상기 클라이언트 애플리케이션의 사용자의 홈 타임라인이어서, 상기 메시지들은 상기 사용자의 상기 홈 타임라인으로 자동으로 스트리밍되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  31. 제21항 내지 제30항 중 어느 한 항에 있어서,
    상기 메시지들의 스트림은 상기 메시징 플랫폼 상의 대화에 관한 대화 그래프 내의 메시지들을 포함하는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하는 방법.
  32. 실행가능 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 실행가능 명령어들은 적어도 하나의 프로세서에 의해 실행될 때 상기 적어도 하나의 프로세서로 하여금:
    컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션에 의해, 질의 가입 요청을 네트워크를 통해, 서버 컴퓨터에 의해 실행가능한 메시징 플랫폼의 가입 실행기에 전송하게 하고 ― 상기 질의 가입 요청은 상기 가입 실행기로 하여금 상기 메시징 플랫폼 상에서 교환되는 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―;
    상기 클라이언트 애플리케이션에 의해, 상기 네트워크를 통해 상기 가입 실행기로부터 상태 메시지 응답을 수신하게 하고 ― 상기 상태 메시지 응답은 전송 토픽을 포함함 ―;
    상기 클라이언트 애플리케이션에 의해, 가입 요청을 상기 네트워크를 통해 상기 메시징 플랫폼의 전송 엔진에 전송하게 하고 ― 상기 가입 요청은 상기 전송 토픽을 포함하고, 상기 가입 요청은 상기 전송 엔진으로 하여금 상기 전송 엔진과 상기 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성되고, 상기 전달 채널은 상기 전송 토픽에 할당됨 ―;
    상기 클라이언트 애플리케이션에 의해, 상기 질의 가입이 활성인 동안 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 상기 클라이언트 애플리케이션의 사용자 인터페이스 상에 메시지들이 스트리밍되도록, 상기 전달 채널을 통해 상기 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하게 하고; 그리고
    상기 클라이언트 애플리케이션에 의해, 가입 갱신 요청을 상기 네트워크를 통해 상기 전송 엔진에 주기적으로 전송하게 하도록 구성되며,
    상기 가입 갱신 요청은 상기 전송 엔진으로 하여금 상기 전달 채널을 갱신하게 하고 상기 가입 실행기로 하여금 상기 질의 가입을 갱신하게 하도록 구성되는,
    비일시적 컴퓨터 판독가능 매체.
  33. 제32항에 있어서,
    상기 질의 가입 요청은 질의어, 사용자 식별자, 및 상기 질의 가입이 활성인 시간 기간을 정의하는 만료 시간을 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  34. 제32항 또는 제33항에 있어서,
    상기 질의 가입 요청은 GraphQL 가입 질의인,
    비일시적 컴퓨터 판독가능 매체.
  35. 제32항 내지 제34항 중 어느 한 항에 있어서,
    상기 클라이언트 애플리케이션에 의해, 상기 네트워크를 통해 상기 전달 채널을 통해 상기 전송 엔진으로부터 상태 메시지를 수신하고; 그리고
    상기 클라이언트 애플리케이션에 의해, 상기 상태 메시지에 기초하여 상기 질의 가입 요청 및 상기 가입 요청을 재전송하는 것을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  36. 메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템으로서,
    서버 컴퓨터에 의해 실행가능한 메시징 플랫폼 ― 상기 메시징 플랫폼은 상기 메시징 플랫폼 상에서 교환되는 메시지들의 큐를 생성하도록 구성됨 ―; 및
    컴퓨팅 디바이스에 의해 실행가능한 클라이언트 애플리케이션을 포함하고,
    상기 클라이언트 애플리케이션은 상기 클라이언트 애플리케이션의 사용자 인터페이스 상에 소셜 콘텐츠의 타임라인을 렌더링하도록 구성되고, 상기 클라이언트 애플리케이션은:
    질의 가입 요청을 네트워크를 통해 상기 메시징 플랫폼의 가입 실행기에 전송하고 ― 상기 질의 가입 요청은 상기 가입 실행기로 하여금 상기 메시지들의 큐 상에서 실행될 질의 가입을 생성하게 하도록 구성됨 ―;
    가입 요청을 상기 네트워크를 통해 상기 메시징 플랫폼의 전송 엔진에 전송하고 ― 상기 가입 요청은 상기 전송 엔진으로 하여금 상기 전송 엔진과 상기 클라이언트 애플리케이션 사이에 전달 채널을 생성하게 하도록 구성됨 ―;
    상기 질의 가입이 활성인 동안 스트리밍 레이트 임계치 이하인 스트리밍 레이트로 상기 클라이언트 애플리케이션의 사용자 인터페이스 상에 메시지들이 스트리밍되도록 상기 전달 채널을 통해 상기 질의 가입의 기준들을 충족시키는 메시지들의 스트림을 수신하고; 그리고
    가입 갱신 요청을 상기 네트워크를 통해 상기 전송 엔진에 주기적으로 전송하도록 구성되며,
    상기 가입 갱신 요청은 상기 전송 엔진으로 하여금 상기 전달 채널을 갱신하게 하고 상기 가입 실행기로 하여금 상기 질의 가입을 갱신하게 하도록 구성되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
  37. 제36항에 있어서,
    상기 질의 가입 요청은 질의어 및 사용자 식별자를 포함하는 GraphQL 가입 질의인,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
  38. 제36항 또는 제37항에 있어서,
    상기 가입 요청은 전송 토픽을 포함하고, 상기 전송 토픽은 질의어에 대응하고, 상기 전송 토픽은 상기 전송 엔진과 호환가능한 포맷을 갖는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
  39. 제36항 내지 제38항 중 어느 한 항에 있어서,
    상기 질의 가입 요청 및 상기 가입 요청은 실질적으로 서로 병렬로 전송되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
  40. 제36항 내지 제39항 중 어느 한 항에 있어서,
    상기 클라이언트 애플리케이션은 상기 질의 가입이 활성인 동안 상기 타임라인 상에 상기 메시지들의 스트림을 자동으로 렌더링하도록 구성되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
  41. 제36항 내지 제40항 중 어느 한 항에 있어서,
    상기 메시지들의 스트림은 대화와 관련된 메시지들을 포함하고, 상기 클라이언트 애플리케이션은, 상기 메시지들이 상기 메시징 플랫폼에 의해 생성되고 공유될 때 상기 사용자 인터페이스 상에서 상기 대화와 관련된 상기 메시지들을 푸시하도록 구성되는,
    메시징 플랫폼으로부터 실시간 메시지들을 스트리밍하기 위해 질의 가입들을 처리하기 위한 시스템.
KR1020227007214A 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼 KR102498752B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227025846A KR102498777B1 (ko) 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962883633P 2019-08-06 2019-08-06
US62/883,633 2019-08-06
US16/669,044 2019-10-30
US16/668,811 2019-10-30
US16/669,044 US11580165B2 (en) 2019-08-06 2019-10-30 Event producer system of a messaging platform for delivering real-time messages
US16/668,811 US11429669B2 (en) 2019-08-06 2019-10-30 Managing query subscription renewals in a messaging platform
PCT/US2020/070315 WO2021026553A1 (en) 2019-08-06 2020-07-28 Messaging platform for delivering real-time messages

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025846A Division KR102498777B1 (ko) 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼

Publications (2)

Publication Number Publication Date
KR20220047796A true KR20220047796A (ko) 2022-04-19
KR102498752B1 KR102498752B1 (ko) 2023-02-10

Family

ID=74498803

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227007214A KR102498752B1 (ko) 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼
KR1020227025846A KR102498777B1 (ko) 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227025846A KR102498777B1 (ko) 2019-08-06 2020-07-28 실시간 메시지들을 전달하기 위한 메시징 플랫폼

Country Status (9)

Country Link
US (5) US11580165B2 (ko)
EP (1) EP3999961A1 (ko)
JP (2) JP2022538365A (ko)
KR (2) KR102498752B1 (ko)
CN (2) CN114270344A (ko)
AU (2) AU2020325362B2 (ko)
BR (1) BR112022001683A2 (ko)
CA (1) CA3150018A1 (ko)
WO (1) WO2021026553A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115037614A (zh) * 2022-06-08 2022-09-09 中国电信股份有限公司 管控规则适配方法、装置,以及,电子设备
CN116389578A (zh) * 2023-06-06 2023-07-04 深圳市华曦达科技股份有限公司 网通设备mqtt多任务调度方法、系统和可读存储介质

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9860153B2 (en) * 2014-12-23 2018-01-02 Intel Corporation Technologies for protocol execution with aggregation and caching
US11580165B2 (en) * 2019-08-06 2023-02-14 Twitter, Inc. Event producer system of a messaging platform for delivering real-time messages
CN112787970B (zh) * 2019-11-01 2024-04-16 华为技术有限公司 用于订阅事件流的方法和装置
US11422855B2 (en) * 2020-04-27 2022-08-23 Bank Of America Corporation Data set subscription tracking and termination system
US11438285B2 (en) * 2020-06-09 2022-09-06 Jpmorgan Chase Bank, N.A. Method and system for interaction servicing with embeddable ribbon display
US11663211B2 (en) * 2020-09-29 2023-05-30 Atlassian Pty Ltd. Data retrieval systems and methods
US11595248B2 (en) * 2020-12-22 2023-02-28 Vmw Are, Inc. Scalable notification delivery for networked computing environments
US11790104B2 (en) * 2021-02-18 2023-10-17 Glean Technologies, Inc. Permissions-aware search with document verification
US11995135B2 (en) * 2021-02-18 2024-05-28 Glean Technologies, Inc. Permissions-aware search with user suggested results
CN113032419B (zh) * 2021-04-21 2022-08-30 上海微盟企业发展有限公司 一种多源数据聚合搜索方法、装置、设备及存储介质
US11989188B2 (en) * 2021-08-25 2024-05-21 Bank Of America Corporation Aggregating access to third party data sources and intelligently managing access through request quotas
CN114785861B (zh) * 2022-06-22 2022-12-13 飞狐信息技术(天津)有限公司 一种服务请求转发系统、方法、计算机设备和存储介质
CN115134320B (zh) * 2022-08-25 2023-01-03 四川汉唐云分布式存储技术有限公司 一种基于消息分发确定时序的交易系统
US11917035B1 (en) * 2022-12-15 2024-02-27 Amazon Technologies, Inc. Egress rate control in an event bus service

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180127495A (ko) * 2016-04-11 2018-11-28 페이스북, 인크. 메시징 에이전트 플랫폼을 위한 기술
KR20190046960A (ko) * 2016-09-09 2019-05-07 후아웨이 테크놀러지 컴퍼니 리미티드 통지 메시지를 연관시키는 방법, 장치 및 이동 단말

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0200418D0 (sv) * 2002-02-13 2002-02-13 Ericsson Telefon Ab L M A method and apparatus for computer load sharing and data distribution
KR100971506B1 (ko) * 2002-03-28 2010-07-21 프리캐시 인크. 발행 구독 네트워크에서 신뢰할 수 있고 효과적인 콘텐츠 기반 라우팅 및 질의와 응답을 위한 방법 및 장치
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
US20070208837A1 (en) * 2006-02-22 2007-09-06 Lifen Tian Device management system for processing client requests
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8880524B2 (en) * 2009-07-17 2014-11-04 Apple Inc. Scalable real time event stream processing
US8291025B2 (en) * 2009-10-23 2012-10-16 International Business Machines Corporation Controlling retention of publication
US8825759B1 (en) 2010-02-08 2014-09-02 Google Inc. Recommending posts to non-subscribing users
DE112010005499T5 (de) * 2010-04-19 2013-03-28 International Business Machines Corp. Steuern der Nachrichtenübermittlung beim Publish/Subscribe-Nachrichtenaustausch
US8726284B2 (en) 2010-06-10 2014-05-13 Microsoft Corporation Managing requests based on request groups
US9250975B2 (en) * 2011-01-26 2016-02-02 International Business Machines Corporation Elastic and scalable publish/subscribe service
US8676995B1 (en) 2011-07-07 2014-03-18 Cisco Technology, Inc. System and method for enabling pairing of a companion device with a mate device for performing a companion service
US9591090B2 (en) 2011-08-22 2017-03-07 Salesforce.Com, Inc. Computer implemented methods and apparatus for sharing data of an information feed of an online social network
US8738715B2 (en) * 2012-01-31 2014-05-27 Global Relay Communications Inc. System and method for processing messages in a messaging service
US8903925B2 (en) * 2012-05-14 2014-12-02 Microsoft Corporation Scheduled messages in a scalable messaging system
US9646028B2 (en) 2012-08-31 2017-05-09 Facebook, Inc. Graph query logic
US10230815B2 (en) 2013-12-11 2019-03-12 Facebook, Inc. Service-abstracting query interface
CN104092767B (zh) * 2014-07-21 2017-06-13 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法
US9948739B2 (en) 2014-08-04 2018-04-17 Cbs Interactive Inc. Techniques to aggregate and broadcast live event data in real-time
CN107431664B (zh) * 2015-01-23 2021-03-12 电子湾有限公司 消息传递系统和方法
US10425341B2 (en) * 2015-01-23 2019-09-24 Ebay Inc. Processing high volume network data
US20160219089A1 (en) 2015-01-23 2016-07-28 Ebay Inc. Systems and methods for messaging and processing high volume data over networks
WO2017066804A1 (en) 2015-10-15 2017-04-20 Push Technology Limited Event driven subscription matching
US11588776B1 (en) * 2015-12-14 2023-02-21 Amazon Technologies, Inc. Publish-subscribe message updates
US11863509B2 (en) 2015-12-18 2024-01-02 Amazon Technologies, Inc. Publish-subscribe message transformation
EP3403198A4 (en) * 2016-01-11 2019-09-04 Oracle America, Inc. INTERROGATION SYSTEM AS A SERVICE PROVIDING QUERY RESULT DATA TO REMOTE CLIENTS
US10437635B2 (en) * 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management
US10409650B2 (en) * 2016-02-24 2019-09-10 Salesforce.Com, Inc. Efficient access scheduling for super scaled stream processing systems
GB2550448A (en) * 2016-05-17 2017-11-22 Google Inc Augmenting message exchange threads
US20180330303A1 (en) 2016-06-16 2018-11-15 Globoforce Limited Systems and Methods for Analyzing Recognition and Feedback Data for Talent and Culture Discovery
US20180039621A1 (en) * 2016-08-05 2018-02-08 Monotype Imaging Inc. Context analysis for message enhancement
US10374986B2 (en) * 2016-08-23 2019-08-06 Satori Worldwide, Llc Scalable, real-time messaging system
US10270726B2 (en) 2017-02-24 2019-04-23 Satori Worldwide, Llc Selective distribution of messages in a scalable, real-time messaging system
US20180302358A1 (en) * 2017-04-13 2018-10-18 Facebook, Inc. Methods and systems for presenting updates in a messaging thread
US10744413B2 (en) * 2017-09-07 2020-08-18 DraftKings, Inc. Systems and methods for dynamically generating event cards from message streams
US11089133B1 (en) * 2017-11-22 2021-08-10 Amazon Technologies, Inc. Synchronizing data with delayed subscriptions
US10826984B2 (en) * 2018-04-24 2020-11-03 Futurewei Technologies, Inc. Event stream processing
US11165780B2 (en) 2018-11-27 2021-11-02 Dell Products L.P. Systems and methods to secure publicly-hosted cloud applications to run only within the context of a trusted client application
US20200311226A1 (en) 2019-03-27 2020-10-01 Mohammed Ali Othman Methods, systems, apparatuses and devices for facilitating secure publishing of a digital content
US20200402170A1 (en) 2019-06-19 2020-12-24 Chicago Mercantile Exchange Inc. Deterministic Message Processing in a Distributed Network
US11113294B1 (en) * 2019-07-16 2021-09-07 Splunk Inc. Recommending query templates during query formation
US11580165B2 (en) * 2019-08-06 2023-02-14 Twitter, Inc. Event producer system of a messaging platform for delivering real-time messages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180127495A (ko) * 2016-04-11 2018-11-28 페이스북, 인크. 메시징 에이전트 플랫폼을 위한 기술
KR20190046960A (ko) * 2016-09-09 2019-05-07 후아웨이 테크놀러지 컴퍼니 리미티드 통지 메시지를 연관시키는 방법, 장치 및 이동 단말

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115037614A (zh) * 2022-06-08 2022-09-09 中国电信股份有限公司 管控规则适配方法、装置,以及,电子设备
CN116389578A (zh) * 2023-06-06 2023-07-04 深圳市华曦达科技股份有限公司 网通设备mqtt多任务调度方法、系统和可读存储介质

Also Published As

Publication number Publication date
JP2022159310A (ja) 2022-10-17
EP3999961A1 (en) 2022-05-25
CN115408604A (zh) 2022-11-29
JP2022538365A (ja) 2022-09-01
AU2022204800B2 (en) 2022-08-25
BR112022001683A2 (pt) 2022-06-07
AU2022204800A1 (en) 2022-07-28
AU2020325362A1 (en) 2022-03-31
WO2021026553A1 (en) 2021-02-11
US20220365979A1 (en) 2022-11-17
US20220358167A1 (en) 2022-11-10
KR102498777B1 (ko) 2023-02-09
KR102498752B1 (ko) 2023-02-10
US11429669B2 (en) 2022-08-30
CA3150018A1 (en) 2021-02-11
US20220365978A1 (en) 2022-11-17
CN114270344A (zh) 2022-04-01
AU2020325362B2 (en) 2022-08-18
US11580165B2 (en) 2023-02-14
KR20220108213A (ko) 2022-08-02
US20210042364A1 (en) 2021-02-11
US20210044549A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
KR102498777B1 (ko) 실시간 메시지들을 전달하기 위한 메시징 플랫폼
US9299111B2 (en) Efficient presence distribution mechanism for a large enterprise
US8904014B2 (en) Content delivery mechanisms for multicast communication
US9397973B1 (en) Systems and methods for transferring message data
US20110106961A1 (en) Synchronization of Clients to Maximize Multicast Opportunities
US9330154B2 (en) Multicast database replication
CN110546923A (zh) 可扩展实时消息传送系统中的消息的选择性分发
CN112118315A (zh) 数据处理系统、方法、装置、电子设备和存储介质
US9185152B2 (en) Bidirectional communication on live multimedia broadcasts
US11283725B2 (en) Event content delivery
WO2017181890A1 (zh) 基于服务器集群的数据处理系统及方法
EP3496432A1 (en) Communication method and device
WO2018156788A1 (en) Data storage systems and methods using a real-time messaging system
CN106411713B (zh) 一种状态通知方法及服务器
CN112804342A (zh) 一种基于用户学习行为的个性化推荐系统和方法
KR20130082735A (ko) 가상화를 이용한 컨텐츠 서비스 제공 방법 및 시스템
JP2013046114A (ja) マルチキャスト離脱制御装置及びシステム及び方法

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant