# Walrus - 분산 메시지 스트리밍 엔진

> Clean Markdown view of GeekNews topic #25341. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25341](https://news.hada.io/topic?id=25341)
- GeekNews Markdown: [https://news.hada.io/topic/25341.md](https://news.hada.io/topic/25341.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-12-26T09:31:01+09:00
- Updated: 2025-12-26T09:31:01+09:00
- Original source: [github.com/nubskr](https://github.com/nubskr/walrus)
- Points: 16
- Comments: 0

## Summary

**Walrus**는 Rust로 구현된 **분산 메시지 스트리밍 엔진**으로, Kafka를 대체할 수 있는 고성능 로그 스토리지 기반 구조를 갖추고 있습니다. 세그먼트 단위로 토픽을 분할해 리더 노드를 자동 회전시키며, **Raft 합의 프로토콜**로 메타데이터 일관성과 장애 복구를 보장합니다. io_uring 기반 I/O와 단순한 텍스트 프로토콜을 결합해, 높은 처리량과 낮은 지연을 유지하면서도 운영 복잡도를 줄였습니다.

## Topic Body

- Rust로 작성된 고성능 Kafka 대체용 오픈소스   
- **고성능 로그 스토리지 엔진** 위에 구축된 **분산 메시지 스트리밍 플랫폼**으로, 안정적인 스트리밍과 자동 리더 교체 기능 제공  
- **Raft 합의 프로토콜**을 통해 메타데이터 일관성 유지 및 장애 복구 지원  
- **세그먼트 기반 파티셔닝**으로 부하를 자동 분산하고, 리더십을 라운드로빈 방식으로 회전  
- **핵심 기능**  
  - **세그먼트 단위 샤딩**으로 토픽을 분할하고, 각 세그먼트별 리더 노드가 쓰기 담당  
  - **리스 기반 쓰기 펜싱**으로 단일 리더만 쓰기 가능, 분할 브레인 방지  
  - **자동 롤오버**로 세그먼트 크기 초과 시 메타데이터 변경 제안 및 리더 교체 수행  
  - **Sealed Segment Reads** 기능으로 과거 데이터 복제본에서 직접 읽기 가능  
  - **io_uring 기반 고성능 I/O**로 Linux 환경에서 높은 처리량 확보  
- **클라이언트 프로토콜**  
  - TCP 기반 **길이 프리픽스 텍스트 프로토콜** 사용  
  - `REGISTER`, `PUT`, `GET`, `STATE`, `METRICS` 명령으로 토픽 생성, 메시지 송수신, 상태 조회 지원  
  - 단순한 명령 구조로 **어느 노드에나 연결 가능**, 자동 포워딩 처리  
- **성능 특성**  
  - **쓰기 처리량**: 세그먼트당 단일 라이터 구조로 안정적 성능 유지  
  - **읽기 처리량**: 복제본 수에 비례해 확장  
  - **지연 시간**: 평균 1~2 RTT 수준  
  - **합의 오버헤드 최소화**: 데이터 경로가 아닌 메타데이터에만 Raft 적용  
- **성능 비교**  
  - **Kafka**, **RocksDB** 대비 높은 쓰기 처리량 및 대역폭   
  - fsync 비활성화 시 초당 120만 건 이상, 활성화 시에도 유사 수준의 안정적 성능 유지  
- MIT License

## Comments



_No public comments on this page._
