메인 콘텐츠로 건너뛰기

소개

스트리밍 데이터를 활용할 때는 연결 시간을 최대화하고 매칭되는 모든 데이터를 빠짐없이 수신하는 것이 핵심 목표입니다. 이를 위해 중복 연결을 활용하고, 연결 해제를 자동으로 감지해 신속히 재연결하며, 누락된 데이터를 복구할 계획을 마련하는 것이 중요합니다. 이 통합 가이드에서는 복구 및 중복 관련 기능인 중복 연결, 백필(backfill), 복구에 대해 설명합니다.   중복 연결 중복 연결은 필터링된 스트림에 동시에 두 개 이상의 연결을 설정할 수 있게 해줍니다. 이렇게 하면 두 개의 별도 컨슈머가 동일한 스트림에 연결해 두 연결을 통해 동일한 데이터를 수신함으로써 중복성을 확보할 수 있습니다. 따라서 하나의 스트림이 끊기거나 애플리케이션의 기본 서버에 장애가 발생하는 등의 상황에서도 앱이 즉시 전환할 수 있는 핫 페일오버를 갖게 됩니다. 현재 필터링된 스트림은 Enterprise 액세스를 보유한 Project만 최대 두 개의 중복 연결을 허용합니다. 중복 스트림을 사용하려면 기본 연결에 사용한 것과 동일한 URL로 접속하면 됩니다. 스트림 데이터는 두 연결 모두를 통해 전송됩니다.

연결 끊김 후 누락된 데이터 복구: 백필(Backfill)

연결 끊김을 감지한 후에는 시스템이 스트림에 자동으로 재연결할 수 있어야 합니다. 가능하면 끊김이 지속된 시간을 기록해, 적절한 복구 기능으로 데이터를 백필할 수 있어야 합니다.  Enterprise 액세스가 포함된 Project를 사용 중이며 연결 끊김이 5분 이하였음을 확인했다면, backfill 매개변수인 backfill_minutes를 사용할 수 있습니다. 이 매개변수를 GET /tweets/search/stream 요청에 전달하면, 지난 1~5분 내 규칙과 일치하는 게시물을 수신합니다. 일반적으로 이러한 과거 게시물을 새로 일치한 게시물보다 먼저 전달하며, 중복 제거는 수행하지 않습니다. 예를 들어 90초 동안 연결이 끊겼는데 2분 분량의 백필 데이터를 요청했다면, 30초 분량의 중복 게시물을 받게 되며 시스템은 이를 허용(내결함성)해야 합니다. 다음은 backfill 매개변수를 사용한 요청 예시입니다: curl 'https://api.x.com/2/tweets/search/stream?backfill_minutes=5' -H "Authorization: Bearer $ACCESS_TOKEN" Enterprise 액세스가 없거나 연결 끊김 시간이 5분을 초과했다면, recent search 엔드포인트 또는 복구 기능을 사용해 누락된 데이터를 요청할 수 있습니다. 다만, 검색 게시물 엔드포인트에는 sample:, bio:, bio_name:, bio_location: 연산자가 포함되지 않으며, 키워드 및 #hashtag 연산자에서 악센트와 발음 구별 기호 사용 시 일치 방식에 차이가 있습니다. 이로 인해 필터링된 스트림 엔드포인트로 수신되었을 게시물을 모두 완전히 복구하지 못할 수 있습니다.  연결 끊김 후 누락된 데이터 복구: Recovery Enterprise 액세스가 포함된 Project를 사용 중이며 5분 백필 윈도우 내 재연결이 불가능한 경우, Recovery 기능으로 지난 24시간 내 누락된 데이터를 복구할 수 있습니다. 스트리밍 복구 기능은 백필 윈도우를 24시간으로 확장해 줍니다. Recovery를 사용하면 누락된 구간을 ‘재생’할 수 있습니다. ‘start_time’ 및 ‘end_time’ 요청 매개변수로 연결 요청을 보내면 복구 스트림이 시작됩니다. 연결되면 Recovery가 지정된 기간을 재스트리밍한 뒤 연결을 종료합니다.   동시에 2개의 복구 요청(즉, “두 개의 복구 작업”)을 수행할 수 있습니다. Recovery는 시작 및 종료 시간이 정의된다는 점을 제외하면 기술적으로 백필과 동일하게 동작합니다. 하나의 복구 기간은 단일 시간 범위를 의미합니다.
NameTypeDescription
start_timedate (ISO 8601)YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).

복구를 시작할 UTC 기준 시작 시각.
end_timedate (ISO 8601)YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).

복구를 종료할 UTC 기준 종료 시각.
Example request URL: https://api.x.com/2/tweets/search/stream?start_time=2022-07-12T15:10:00Z&end_time=2022-07-12T15:20:00Z