구현: 네트워크 계층
구현: 네트워크 계층 (Network Layer)
이 페이지는 Kafka 브로커의 네트워크 계층이 어떻게 메시지를 주고받는지 간단히 소개해요. NIO 서버 구조와 sendfile(transferTo) 최적화에 대한 내용이라, 아키텍처가 궁금할 때 가볍게 읽어두면 좋아요.
출처: 문서
본문
네트워크 계층은 상당히 직관적인 NIO 서버이며, 자세히 설명하지는 않겠습니다. sendfile 구현은 TransferableRecords 인터페이스에 writeTo 메서드를 제공함으로써 이루어집니다. 이를 통해 파일 기반 메시지 셋이 프로세스 내 버퍼 방식 쓰기 대신 더 효율적인 transferTo 구현을 사용할 수 있습니다. 스레드 모델은 단일 acceptor 스레드와, 각각 고정된 수의 연결을 처리하는 N개의 프로세서 스레드로 구성됩니다. 이 설계는 다른 곳에서 꽤 철저히 테스트되었으며 구현이 간단하고 빠른 것으로 입증되었습니다. 프로토콜은 다른 언어로 된 클라이언트를 향후에 구현할 수 있도록 상당히 단순하게 유지됩니다.
더 알아보기 (Learn more)
transferTo(sendfile) 방식은 커널 레벨에서 파일을 직접 소켓으로 보내 복사 비용을 줄여줘요.- 단순한 프로토콜 덕분에 다양한 언어의 클라이언트 구현이 가능해지는 거예요.