BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Escalonamento de Push Notifications a milhões de dispositivos na Netflix - Susheel Aroskar - QCon NY

Escalonamento de Push Notifications a milhões de dispositivos na Netflix - Susheel Aroskar - QCon NY

Susheel Aroskar, da equipe de Engenharia da Netflix, falou recentemente na QCon New York 2018 sobre o Zuul Push, um serviço de notificação por push escalável que envia de forma assíncrona dados como recomendações de filmes personalizados da nuvem para os dispositivos.

A equipe da Netflix usa o Zuul Push para melhorar a experiência do usuário de seus clientes. Um usuário típico do Netflix passa bastante tempo escolhendo um filme se comparado ao número de filmes que ele assiste. Esse framework ajuda a fornecer um melhor engajamento, gerando recomendações personalizadas na nuvem que podem ser mostradas ao usuário. Além disso, se uma nova recomendação melhor for gerada, ela permitirá que o cliente saiba em tempo real.

O Zuul Push é um serviço assíncrono de alto desempenho baseado no Apache Netty, uma estrutura de aplicativo de rede baseada em I/O sem bloqueio (NIO). O Zuul Push pode ser usado para escalar para um grande número de conexões persistentes e suporta protocolos WebSocket e Server-Sent Events (SSE) para notificações por push. A tecnologia lida com mais de 5,5 milhões de clientes conectados no pico.

Aroskar discutiu a arquitetura da solução Zuul Push, que inclui os seguintes componentes:

  • Servidor Zuul Push (Zuul Push Server)
  • Enviar Registro (Push Registry)
  • Enviar Registro para a fila (Push Message Queue)
  • Biblioteca de Envio (Push Library)
  • Processador de Mensagens (Message Processor)

A replicação do registro do cliente possibilita escalonar as conexões persistentes concorrentes e a entrega de notificações push. O push registry, o qual é baseado no Redis e no Cassandra, fornece os recursos necessários para esse tipo de carga, que inclui baixa latência de leitura, expiração de registro, fragmentação e replicação. Os dados são armazenados usando Dynomite, uma implementação genérica do Dynamo para diferentes armazenamentos de chave-valor, que fornece acesso a um Redis de chave-valor e backing-store com recursos adicionais como auto-sharding, quórum de leitura/gravação e replicação entre regiões.

Ele também revisou o design da infraestrutura de roteamento de mensagens de back-end que usa o servidor Kafka para separar os remetentes de mensagens dos receptores. O processamento de mensagens é responsável por enfileirar, rotear e entregar as mensagens. A solução usa a abordagem "Fire and Forget" para a entrega de mensagens e há diferentes filas para diferentes prioridades das mensagens. A engenharia da Netflix também executa várias instâncias do processador de mensagens em paralelo para dimensionar a taxa de transferência do processamento de mensagens.

O Zuul Push suporta políticas de autenticação personalizadas para que você possa autenticar usando cookies, JSON Web Tokens (JWT) ou algum esquema personalizado. Aroskar apresentou os aspectos operacionais do Zuul Push e como eles gerenciam conexões estáveis de longa data. Eles usam o Application Load Balancer (ALB) da Amazon para gerenciar o cluster de push.

A estrutura do Zuul Push é baseada no Zuul, que é o API gateway da Netflix. Todo o tráfego da API HTTP da Netflix passa pelo Zuul. Para saber mais sobre a estrutura de notificações do Zuul Push consultar o site do projeto e o exemplo em Java que mostra como usar WebSockets e SSE para ativar o envio de mensagens push para o Zuul

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT