본문 바로가기
728x90

츄Log100

Nagle's Alghorithm (네이글 알고리즘) Nagle의 알고리즘은 TCP/IP 데이터 전송에 사용하는 알고리즘입니다. Nagle의 알고리즘은 네트워크를 통해 전송해야 하는 패킷 수를 줄여 TCP/IP 네트워크의 효율성을 향상시키는 수단입니다. 이 알고리즘의 핵심은 '가능하면 데이터를 나누어 보내지 말고 한꺼번에 보내라'는 원칙을 기반으로 합니다. small-packet problem (소형 패킷 문제)이 있습니다. 키 누른 것이 바로 전송되는(Telnet세션 같은) 애플리케이션은 크기가 1바이트에 불과한 작은 청크를 반복적으로 내보내는데요, 이 때 TCP 패킷에는 40바이트의 헤더가 있으므로, 1바이트의 청크에는 41바이트의 패킷이 생성됩니다. 그러므로 이런 반복적인 소형 패킷의 전송에 엄청난 오버헤드를 발생시키게 됩니다. 이런 문제를 방지하기 .. 2023. 11. 27.
Zero Copy Transfer (제로 카피 전송) 안녕하세요! 오늘은 Zero Copy Transfer에 대해 알아보겠습니다. 제로카피 전송이란? 데이터를 복사하거나 전송하는 과정에서 중간 버퍼를 사용하지 않고 데이터를 직접 전송하는 방법으로 데이터 이동을 최적화하고 시스템 성능을 향상시키기 위한 방법입니다. 먼저 전통적인 방법과 개선된 방법, 보다 개선된 방법까지 총 3단계를 거쳐 어떻게 달성하게 되었는지 확인해보겠습니다. 단계 1. 전통적인 방법 보통 우리는 파일을 읽고 전송한다면 아래와 같은 코드를 작성할 것입니다. File.read(fileDesc, buf, len); Socket.send(socket, buf, len); 이것은 내부적으로 아래와 같은 과정을 거치게 됩니다. 이 전통적인 과정에서는 총 두 개의 불필요한 작업이 있습니다. (파일을.. 2023. 11. 24.
Netty - 1. 개요 안녕하세요! 오래 전부터 관심이 있던 Netty 공부를 시작하게 되었습니다. 하나씩 차근차근 공부해봅시다! Netty 공식홈페이지에 대문짝만하게 써진 글이 있습니다. Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크로, 유지보수 가능한 고성능 프로토콜 서버&클라이언트를 빠르게 개발할 수 있다. 여기에 Netty의 핵심 키워드가 모두 들어간 것 같습니다. 비동기 : Netty는 리액터 패턴을 통해 비동기 호출을 위한 API를 .. 2023. 11. 24.
분산 컴퓨팅의 오류 (Fallacies of distributed computing) 안녕하세요! 소프트웨어101 책을 보다가 ‘분산컴퓨팅의 오류’ 라는 아티클을 접하게 되었습니다. 당연하지만 새삼 놓치기 쉬운 부분이라고 생각하여 정리해봅니다. 위키피디아 : Fallacies of distributed computing — Wikipedia 오류1. 네트워크는 믿을 수 있다. 과거에 비해 네트워크가 좋아졌다고 하지만 여전히 네트워크는 믿을 수 없습니다. 네트워크는 신뢰하기 어렵기 때문에 타임아웃, 서킷브레이커 같은 개념들이 있는 것입니다. ‘마이크로서비스 아키텍쳐’같이 네트워크에 의존할 수록 시스템의 신뢰도는 잠재적으로 떨어질 가능성이 있습니다. 오류2. 레이턴시는 0이 아니다. t_remote는 t_local보다 클 수밖에 없고 모든 분산 아키텍처에서 레이턴시는 0이 아닙니다. (보통 .. 2023. 11. 6.
728x90