이 질문은 수십 개의 UDP 소켓에서 많은 양의 데이터를 읽고 처리하기위한 Java 응용 프로그램 설계와 관련이 있습니다. 그러나 다른 언어 및 환경과 관련이 있다고 생각합니다.OS 소켓 버퍼를 메시지 대기열로 사용해야합니까?
위에서 설명한 것과 같은 네트워크 응용 프로그램은 가능한 한 빨리 소켓 버퍼에서 데이터를 읽는 데 필요한 전용 스레드가 있으며 응용 프로그램 내부에서 다시 큐잉하고 별도의 스레드에서 처리합니다.
처리 스레드가 다음 데이터를 수신 할 준비가 될 때까지 소켓 버퍼에 데이터를 남겨 두는 데 문제가 있습니까? 데이터를 빠르게 읽고 응용 프로그램 내부에 큐잉 할 수있는 이점이 있습니까?
처리 논리가 충분히 빠르지 않으면 버퍼가 가득 찰 것입니다. 그러나 처리 논리가 너무 느려 인바운드 데이터를 처리 할 수없는 경우 데이터가 대기중인 위치가 중요하지 않은 것처럼 보입니다. 갑자기 인바운드 데이터가 급증 할 경우 소켓 버퍼는 처리하기에 충분히 커야합니다.