ARC(Adaptive Request Concurrency)란 ?
- Adaptive Request Concurrency (ARC)는 Vector의 네트워킹 기능 중 하나로, 정적인 속도 제한을 없애고, 다운스트림 서비스의 응답을 기반으로 HTTP 동시성 제한을 자동으로 최적화합니다.
- 기존의 정적인 속도 제한 방식은 네트워크 상태나 서비스의 응답 시간에 관계없이 일정한 요청 속도를 유지합니다. 반면, ARC는 실시간으로 네트워크 상황을 평가하고, 가능한 최적의 요청 속도를 결정합니다. 이 같은 Vector의 기능은 TCP 혼잡 제어 알고리즘을 기반으로 한 피드백 루프 메커니즘을 통해 구현합니다.
- ARC를 사용함으로써 전체 관측 가능 인프라(observability infrastructure)에서 성능과 신뢰성이 향상됩니다. 즉, 다운스트림 서비스의 과부하를 방지하고, 네트워크 자원의 효율적 사용을 가능하게 함으로써, 더 빠르고 안정적인 데이터 처리와 전송 수행할 수 있습니다.
TCP 혼잡 제어 알고리즘(TCP Congestion Algorithm)
<aside>
💡 TCP 혼잡 제어 알고리즘을 이해하기 위해선 TCP에 대한 이해가 선행되어야 합니다.
</aside>
- **TCP(Transmission Control Protocol, 전송 제어 프로토콜)**는 인터넷에서 데이터를 안정적으로 전송하는 데 널리 사용되는 프로토콜입니다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있습니다.
- TCP를 통해 통신할 때 네트워크에서 부하로 인해 발생하는 패킷 손실을 줄이기 위해 사용하는 것이 TCP 혼잡 제어 알고리즘입니다. 이를 사용함으로써 네트워크 오버로드를 방지하고, 클라이언트에게 안정적인 네트워크 환경을 제공 합니다. 이는 궁극적으로 네트워크의 효율적인 사용과 데이터 전송의 신뢰성을 보장하기 위함입니다.
- TCP 혼잡 제어를 위한 주요 알고리즘은 다음과 같습니다.
- 슬로우 스타트 (Slow Start): 연결 초기에 윈도우 크기를 작게 시작하여 점차적으로 늘려가는 방식입니다. 데이터 전송의 성공 여부에 따라 윈도우 크기를 지수적으로 증가시킵니다.
- 혼잡 회피 (Congestion Avoidance): 네트워크 혼잡이 감지되면 윈도우 크기의 증가 속도를 줄여 혼잡을 회피합니다. 일반적으로 선형적인 증가 방식을 사용합니다.
- 빠른 회복 (Fast Recovery): 패킷 손실이 감지되면 윈도우 크기를 줄이고 빠르게 회복하는 메커니즘입니다.
- 빠른 재전송 (Fast Retransmit): 패킷 손실이 감지되면 해당 패킷을 즉시 재전송합니다.