Criando um cliente para consumir dados em tempo real
Design do cliente
- Estabelecer uma conexão HTTPS de streaming com o endpoint de stream filtrado.
- Enviar solicitações POST de forma assíncrona para o endpoint de regras do stream filtrado para adicionar e DELETE regras do stream.
- Lidar com baixos volumes de data – manter a conexão de streaming, detectando Objetos Post e sinais de keep-alive.
- Lidar com altos volumes de data – desacoplar a ingestão do stream do processamento adicional usando processos assíncronos e garantir que os buffers no lado do cliente sejam liberados regularmente.
- Gerenciar o acompanhamento do consumo de volume no lado do cliente.
- Detectar desconexões do stream, avaliar e reconectar ao stream automaticamente.
Conectando a um endpoint de streaming
Consumindo dados
- Campos aparecendo em qualquer ordem
- Campos inesperados ou ausentes
- Posts fora de ordem
- Mensagens duplicadas
- Novos tipos arbitrários de mensagens chegando pelo stream a qualquer momento
Bufferização
Os endpoints de streaming enviarão data para você assim que estiver disponível, o que pode resultar em altos volumes em muitos casos. Se o servidor do X não puder gravar novos data no stream imediatamente (por exemplo, se o seu cliente não estiver lendo rápido o suficiente; veja como lidar com desconexões para mais detalhes), ele armazenará o conteúdo em buffer do lado dele para permitir que seu cliente alcance. No entanto, quando esse buffer estiver cheio, uma desconexão forçada será iniciada para encerrar a conexão, e os Posts em buffer serão descartados e não serão reenviados. Veja abaixo mais detalhes. Uma forma de identificar quando seu App está ficando para trás é comparar o timestamp dos Posts recebidos com o horário atual e acompanhar isso ao longo do tempo. Embora acúmulos no stream nunca possam ser completamente eliminados devido à latência potencial e a instabilidades na internet pública, eles podem ser amplamente reduzidos por meio de uma configuração adequada do seu App. Para minimizar a ocorrência de acúmulos:- Garanta que seu cliente esteja lendo o stream rápido o suficiente. Normalmente, você não deve realizar nenhum processamento pesado enquanto lê o stream. Leia o stream e delegue a atividade a outra thread/process/data store para processar de forma assíncrona.
- Garanta que seu data center tenha largura de banda de entrada suficiente para acomodar grandes volumes sustentados de data, bem como picos significativamente maiores (por exemplo, 5–10x o volume normal). Para o stream filtrado, o volume e a largura de banda correspondente exigidos do seu lado dependem totalmente de quais Posts suas regras estão correspondendo.