- Protocolo de streaming durável baseado em HTTP para transmitir dados de forma confiável para navegadores web, dispositivos móveis e clientes nativos
- Suporta uma forma simples e comprovada de criar e consumir streams com ordenação garantida e possibilidade de replay
- Retomada baseada em offset, permitindo continuar do ponto de interrupção mesmo após queda de conexão
- Pode ser usado em vários cenários em tempo real, como streaming de conversas com IA, sincronização de banco de dados, edição colaborativa, event sourcing e execução de workflows
- Resolve os problemas de instabilidade de conexão existentes em WebSocket e SSE
- Design seguro para refresh, permitindo retomar da mesma posição mesmo após trocar de aba ou colocar o app em segundo plano
- Compartilhamento de stream via URL, permitindo que vários usuários acompanhem o mesmo stream ao mesmo tempo
- Estrutura compatível com CDN e voltada à redução de custos, capaz de atender milhões de conexões simultâneas a partir de uma única origem
- Suporte a sincronização entre múltiplos dispositivos e múltiplas abas
- Características do protocolo
- Universal: pode ser usado em qualquer ambiente onde HTTP funcione
- Simple: baseado em HTTP padrão, sem necessidade de protocolo customizado separado
- Resumable: suporta leitura e retomada baseadas em offset
- Real-time: permite tailing em tempo real com modos Long-poll e SSE
- Economical: garante escalabilidade eficiente por meio de cache em CDN
- Composable: permite construir camadas de abstração superiores, como o mecanismo de sincronização em tempo real de Postgres da Electric
- Características de desempenho
- Latência abaixo de 15 ms, suporte a milhões de assinantes simultâneos e escalabilidade horizontal
- Estrutura de URL baseada em offset para maximizar o uso de cache de CDN
- Relação com sistemas de streaming de backend
- Complementa sistemas de mensageria entre servidores como Kafka, RabbitMQ e Kinesis
- Durable Streams é responsável pela camada de transporte para clientes
- O servidor realiza autenticação e transformação de dados, e o Durable Streams faz o fan-out disso via HTTP
- Diferenças em relação a SSE e WebSocket
- SSE/WebSocket fornecem apenas conexão simples; Durable Streams fornece uma estrutura baseada em log durável
- Combina as vantagens de um log padronizado, como retomada por offset, replay de histórico e suporte a múltiplos leitores
- Flexibilidade de implementação
- Qualquer linguagem pode ser usada para criar o servidor, desde que implemente a API HTTP, o armazenamento durável e o gerenciamento de offsets
- Fornece servidor de referência em Node.js e ferramentas de teste de conformidade e benchmark
- Principais casos de uso
- Sincronização em tempo real de banco de dados: streaming de alterações do Postgres para web e mobile
- Sistemas de event sourcing: restauração de estado com base em logs de eventos duráveis
- Streaming de conversas com IA: permite retomar streams de tokens de LLM sem interrupção
- Protocolo sob licença Apache 2.0, validado pela equipe do Electric SQL em produção ao longo de 1,5 ano
Ainda não há comentários.