← 목록으로

PicoMQ - S3 기반 실시간 데이터 스트림 서버

요약
  • PicoMQ는 S3 호환 객체 스토리지와 SQL을 활용해 복잡한 브로커 디스크 없이 수백만 개의 실시간 데이터 스트림을 처리할 수 있는 Rust 기반의 스트림 서버입니다.
  • HTTP API와 SSE, Kafka 호환 프로토콜을 지원하며, 노드 장애 시 수초 내에 복구 가능한 가벼운 구조로 설계되었습니다.
  • 채팅, 기기 이벤트, 작업 이력과 에이전트 대화를 순서대로 저장하고 실시간으로 전달하는 스트림 서버
    • 읽던 위치부터 이어받거나 과거 기록을 다시 읽을 수 있어 실시간 구독과 이벤트 이력 보관에 활용
  • 모든 레코드와 쓰기 복구 로그인 WAL을 S3 호환 객체 스토리지에 저장하며, 서버 노드에는 교체 가능한 캐시만 유지
  • 클러스터 메타데이터와 스트림 소유권은 Postgres로 관리하고, 단일 노드는 SQLite로 실행 가능
    • 별도의 브로커 디스크나 자체 합의 프로토콜 없이 SQL과 객체 스토리지로 구성
  • 노드 장애 시 데이터를 다른 노드로 재분배할 필요 없이 몇 초간의 라우팅 전환으로 복구하는 구조
  • 사용자 세션, 주문, 기기, 작업마다 작은 스트림을 따로 만드는 방식을 지향하며, 수백만 개의 스트림을 운영할 수 있도록 설계
  • PUT으로 생성, POST로 추가, GET으로 읽는 HTTP API를 제공하며, 롱 폴링과 SSE로 실시간 구독 지원
  • 자체 Pico 프로토콜, Durable Streams 개방형 프로토콜과 Kafka Wire Protocol을 같은 엔진에서 제공해 Kafka 클라이언트로도 접근 가능
  • 스트림 소유권을 노드 사이에서 옮길 때 쓰기 유실을 방지하며, 세대 번호(epoch) 로 이전 소유 노드의 뒤늦은 쓰기를 차단
  • pico 단일 바이너리에 서버, 클라이언트, 관리 CLI, 벤치마크 도구와 관리자 대시보드 포함
  • Docker Compose로 클러스터를 실행하거나, SQLite와 로컬 파일 저장소만으로 시험 가능
  • 객체 스토리지 왕복 때문에 쓰기 지연은 보통 수십 밀리초이며, 인증은 기본적으로 꺼져 있어 외부 공개 시 별도 설정 필요
  • Rust 기반, Apache-2.0 라이선스
그냥 목록으로
원문 보기 ↗