연결 해제란 무엇인가요?
스트리밍 API에 연결한다는 것은 매우 오래 지속되는 HTTPS 요청을 하고 응답을 점진적으로 파싱하는 것을 의미합니다. 스트리밍 endpoint에 연결할 때는 HTTPS 요청을 만들고 실용적인 한 결과 스트림을 소비해야 합니다. X 서버는 다음의 경우를 제외하고 연결을 무기한 열어 둡니다:- 서버 측 오류
- 과도한 클라이언트 측 지연
- 네트워크 문제
- 정기 서버 유지 관리
- 중복 로그인
연결이 끊어지는 이유
연결 해제의 가능한 이유:일반적인 연결 해제 오류
Operational disconnect
Too many connections
연결 해제 감지
스트리밍 endpoint는 20초 keep-alive 하트비트(개행 문자)를 제공합니다. 이 신호를 사용해 연결 해제를 감지하세요:- 코드는 새 콘텐츠와 하트비트 도착이 중단될 때를 감지해야 합니다
- 20초 동안 데이터가 수신되지 않으면 재연결 로직을 트리거하세요
- 일부 HTTP 클라이언트는 읽기 시간 초과를 지정할 수 있습니다 — 이를 20초로 설정하세요
재연결 전략
설정된 연결이 끊어지면 즉시 재연결을 시도하세요. 재연결이 실패하면 오류 유형에 따라 백오프 전략을 사용하세요:TCP/IP 네트워크 오류
선형 백오프. 이러한 문제는 일반적으로 일시적입니다.- 시도할 때마다 지연 시간을 250ms씩 증가
- 최대 지연 시간: 16초
HTTP 오류
재연결이 적절한 HTTP 오류의 경우 지수 백오프.- 5초 대기로 시작
- 시도할 때마다 두 배로 증가
- 최대 지연 시간: 320초
Rate limit 오류 (HTTP 429)
더 긴 초기 대기 시간을 가진 지수 백오프.- 1분 대기로 시작
- 시도할 때마다 두 배로 증가
- 수신되는 각 429는 rate limit이 만료될 때까지 대기 시간을 늘림
Rate limit 및 사용량
스트리밍 연결 응답은 한도를 이해하는 데 도움이 되는 세 개의 헤더를 반환합니다:
전달된 Post 수를 추적하려면 클라이언트 측에서 미터링 로직을 구현하여 소비를 측정하고 필요한 경우 일시 중지할 수 있도록 하세요.
재연결 모범 사례
FIFO 큐 아키텍처 사용
스트림 클라이언트는 들어오는 Post를 선입선출(FIFO) 큐나 유사한 메모리 구조에 삽입해야 합니다. 별도의 프로세스/스레드가 해당 큐에서 Post를 소비하여 파싱하고 저장해야 합니다. 이 설계는 Post 볼륨이 극적으로 변할 때 효율적으로 확장됩니다.백오프 전략 테스트
잘못된 인증 자격 증명을 사용해 백오프 구현을 테스트하고 재연결 시도를 검토하세요. 좋은 구현은 429 응답을 받지 않습니다.여러 번의 재연결에 대한 알림 발행
클라이언트가 재연결 간 시간의 상한선에 도달하면, 연결 문제를 분류할 수 있도록 알림을 보내세요.DNS 변경 처리
클라이언트 프로세스가 DNS Time To Live(TTL)를 준수하는지 확인하세요. 일부 스택은 프로세스 지속 시간 동안 해결된 주소를 캐시하고 TTL 내의 DNS 변경사항을 반영하지 않습니다. 공격적인 캐싱은 X가 IP 주소 간에 부하를 이동할 때 서비스 중단으로 이어집니다.User-Agent 헤더 설정
User-Agent HTTP 헤더에 클라이언트의 버전을 포함하세요. 이는 X 측의 문제를 진단하는 데 매우 중요합니다. 환경이 User-Agent 설정을 허용하지 않으면 대신 x-user-agent 헤더를 사용하세요.
다음 단계
복구 및 이중화
연결 해제 후 누락된 데이터 복구
스트리밍 데이터 소비
견고한 스트리밍 클라이언트 구축
고용량 처리
고처리량 스트림 처리