Gleam.br Wiki

GBR: ADR-027: Streaming Visual via Server-Sent Events (SSE Broadcaster) | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-027: Streaming Visual via Server-Sent Events (SSE Broadcaster)

  • *Status:* Aceito
  • *Data:* 2026-05-01

*Contexto:*

Para a renderização de gráficos a 60FPS no frontend de administração (gbr_ui_admin), o modelo tradicional de requisições contínuas (HTTP Long Polling) ao banco de dados Time-Series (QuestDB) causaria sobrecarga de leitura e degradação de performance do cluster.

*Decisão:*

  1. *Padrão SSE (Unidirecional):* Adoção de Server-Sent Events em detrimento de WebSockets para a UI, visto que a telemetria fluirá estritamente do Servidor para o Cliente (Read-only).
  2. *Ator de Fan-Out em Tempo Real:* O módulo sse_broadcaster foi interligado diretamente no "Moedor de Carne" (Splitter). Sempre que o QuestDB recebe um insert via protocolo ILP, a mesma métrica é enviada assincronamente ao Ator SSE, que itera sobre o Dicionário de Frontends conectados e empurra o payload JSON para a memória do navegador.

*Consequências:*

  • *Positivas:* Latência reduzida de disco a zero para a visualização da UI; o banco de dados processa exclusivamente a gravação (Write-Heavy) e o atendimento a consultas analíticas profundas, não lidando com o fluxo transiente em tempo real.
  • *Negativas/Riscos:* Acúmulo potencial de memória se conexões SSE mortas ("Half-open connections") não forem adequadamente removidas da estrutura do Ator (mitigado pelo comando de limpeza Unsubscribe integrado ao handler de encerramento do HTTP).