한 줄 정의
수신된 이진 버퍼를 객체로 파싱·메모리 복사하는 과정 없이 버퍼 바이트의 주소를 직접 참조하여 데이터를 읽어들이는 기법.
핵심 요지
- 파싱 오버헤드 제거: 메모리 할당(Allocation) 및 바이트 복사가 전혀 일어나지 않아 역직렬화 시간이 사실상 0ms에 수렴.
- FlatBuffers 구조: 수신 코드가 전송받은 버퍼를 직접 통과해 읽을 수 있도록 동적 메모리 구조를 이진 포맷으로 사전에 배치.
- 초저지연 시스템 필수재: 금융 틱 데이터, 게임 백엔드, 실시간 스트리밍 등 지연 시간에 매우 민감한 시스템에서 극적인 성능 발휘.
상세
- 작동 방식:
- 기존 방식: 바이너리/텍스트 페이로드 개별 파서 호출 힙 메모리에 인스턴스 생성/복사
- Zero Copy 방식: 바이너리 버퍼 수신 해당 버퍼 Offset 참조 주소로 즉시 접근 (
ByteBuffer.getRootAsMonster)
예시
- FlatBuffers를 통한 5,000건 데이터 역직렬화 시, JSON이 98ms 걸릴 때 ~2ms 및 사실상 0ms에 가까운 지연 측정.
충돌
- 빌드 및 스키마 의존성:
.fbs기반 코드 생성기가 필수적이며 데이터 레이아웃에 직접 접근하므로 포맷 변경 시 하위 호환성 관리가 까다로움.