- HTTPベースの耐久性ストリーミングプロトコルで、Webブラウザ・モバイル・ネイティブクライアントにデータを安定して配信
- 順序保証・再生可能ストリームを生成・消費できるシンプルで実証済みの方式をサポート
- オフセットベースの再開機能により、接続が切れても中断地点から受信を継続可能
- AI会話ストリーミング、データベース同期、共同編集、イベントソーシング、ワークフロー実行など多様なリアルタイムシナリオで活用可能
- 既存のWebSocket・SSEが抱える接続不安定性の問題を解決
- Refresh-safe設計により、タブ切り替え・アプリのバックグラウンド遷移後も同じ位置から再開
- URLベースのストリーム共有により、複数のユーザーが同一ストリームを同時に視聴可能
- コスト削減型のCDNフレンドリーな構造により、数百万の同時接続を単一オリジンで処理可能
- マルチデバイス・マルチタブ同期をサポート
- プロトコルの特徴
- Universal: HTTPが動作するあらゆる環境で利用可能
- Simple: 標準HTTPベースで、追加のカスタムプロトコルは不要
- Resumable: オフセットベースの読み取り・再開をサポート
- Real-time: Long-poll・SSEモードでリアルタイムtailingが可能
- Economical: CDNキャッシュによって効率的なスケーラビリティを確保
- Composable: 上位抽象化レイヤー(例: ElectricのリアルタイムPostgres同期エンジン)を構築可能
- 性能特性
- 15ms以下のレイテンシ、数百万の同時購読者を処理、水平スケーラビリティを確保
- オフセットベースのURL構造により、CDNキャッシュ活用を最大化
- バックエンドストリーミングシステムとの関係
- Kafka・RabbitMQ・Kinesisなどのサーバー間メッセージングシステムを補完
- Durable Streamsはクライアント転送レイヤーを担当
- サーバーは認証・データ変換を実行し、Durable StreamsがそれをHTTPベースでfan-out
- SSE・WebSocketとの違い
- SSE/WebSocketは単純な接続を提供するだけだが、Durable Streamsは耐久性ログベースの構造を提供
- オフセット再開・履歴再生・マルチリーダー対応など、標準化されたログの利点を組み合わせている
- 実装の柔軟性
- HTTP APIと耐久性ストレージ、オフセット管理だけを実装すれば、どの言語でもサーバーを作成可能
- Node.jsリファレンスサーバーおよび適合性テスト・ベンチマークツールを提供
- 主な活用事例
- データベースのリアルタイム同期: Postgresの変更をWeb・モバイルへストリーミング
- イベントソーシングシステム: 耐久性イベントログベースで状態を復元
- AI会話ストリーミング: LLMトークンストリームを途切れずに再開可能
- Apache 2.0ライセンスで、Electric SQLチームが1.5年間にわたり実運用で検証したプロトコル
まだコメントはありません。