Escolar Documentos
Profissional Documentos
Cultura Documentos
EM TEMPO REAL
Universidade Paulista
Jundiaí - SP RESUMO
ABSTRACT
1
2
1. INTRODUÇÃO
Aplicações web com interação em tempo real são cada vez mais comuns, seja
para fins de comunicação entre usuários, seja para fins de monitoramento de dados
em tempo real (Murley et al., 2021). Uma grande quantidade de aplicações é
desenvolvida com interatividade e experiência do usuário em mente, e a comunicação
em tempo real é um dos recursos que mais contribuem para isso. Redes sociais são
um exemplo de aplicações que utilizam recursos em tempo real, elas comumente
implementam recursos em tempo real para notificações de novas mensagens, curtidas
ou comentários. Essas interações enriquecem a experiência do usuário, não
necessitando de recarregamento ou ações manuais para que as novas informações
sejam exibidas. Tendo isso em mente, o objetivo desse trabalho é apresentar uma
aplicação alternativa para elaboração de aplicações web com recursos em tempo real,
simplificando a implementação de tais recursos no lado do cliente e do servidor. Além
da aplicação, serão apresentados os resultados de testes de desempenho e
escalabilidade, comparando a aplicação desenvolvida com modelos de arquitetura
padrões para esse tipo de problema.
2. DESENVOLVIMENTO
Este trabalho origina-se das necessidades das aplicações web atuais, em que
cada vez são adicionadas mais funcionalidades no lado do cliente para que a
experiência do usuário seja a melhor possível. Com isso, a complexidade das
aplicações aumenta, e a necessidade de uma comunicação em tempo real entre
cliente e servidor se torna cada vez mais comum (Pereira, 2019). A comunicação em
tempo real entre cliente e servidor é um problema que pode ser resolvido de diversas
formas, e cada uma delas possui suas vantagens e desvantagens.
Segundo Hussein Nasser (cf. Scaling Websockets with Redis..., 2020), nesse
tipo de arquitetura, utiliza-se um serviço de mensageria para notificar servidores de
atualização de estado, para que ele possa distribuir isso para outras máquinas
conectadas em um cluster. Essa é uma das estratégias que serviços que se utilizam
de atualizações em tempo real implementam.
Nesse modelo, para que o cliente receba atualizações de um tópico, ele precisa
se inscrever no tópico desejado. Após a inscrição, o cliente passa a receber
atualizações do tópico, e pode se inscrever em outros tópicos, podendo receber
atualizações de vários tópicos ao mesmo tempo.
2.5. IMPLEMENTAÇÃO
Modelo de
Publish/Subscribe Publish/Subscribe Publish/Subscribe
mensageria
Protocolo de
Zookeeper N/A Raft
consenso
Linguagem de
Java/Scala C Go
programação
Protocolo de
TCP TCP HTTP
comunicação
Garante a entrega
Sim Não Não
da mensagem
Garante a ordem
Sim Não Não
das mensagens
Foram realizados outros testes com essa mesma estrutura, efetuando a escrita
das mensagens em um thread de execução separada, para o aumento da
A partir dos relatórios gerados pelo profiling da aplicação foi possível analisar e
otimizar pontos que prejudicavam a performance. O ponto principal de otimização foi
com relação a chamadas do sistema operacional (syscalls), observando a
performance de cada chamada e otimizando o código para reduzir o número de
chamadas.
A comparação pode ser melhor visualizada através dos gráficos contidos nas
figuras 7, 8 e 9.
Nesse teste, o servidor em NodeJS simula uma aplicação real, com logging e
escritas para um banco de dados SQLite. Assim como no teste anterior, cada bateria
consiste em um teste de carga com intervalo de 10 segundos para cada aplicação, no
qual a ideia foi medir a quantidade de requisições por segundo, a latência de
distribuição de mensagens e a quantidade de mensagens por segundo enviada, com
a quantidade de clientes conectados sendo 50, 100, 500 e 1000 respectivamente. Os
resultados dos testes de integração são apresentados nas tabelas 5, 6 e 7.
Tabela 5 – Node standalone
Latência (1k
Clientes Requisições Taxa (msg/s)
msg/s)
50 984 1s 990
1000 67 17s 60
A comparação pode ser melhor visualizada através dos gráficos contidos nas
figuras 10, 11 e 12.
Figura 10 - Comparação de performance em requisições por segundo
4. CONCLUSÃO
REFERÊNCIAS
MURLEY, Paul et al. WebSocket adoption and the landscape of the real-time
web. In: Proceedings of the Web Conference 2021. 2021. p. 1192-1203.
Disponível em:
https://faculty.cc.gatech.edu/~mbailey/publications/www21_websocket.pdf.
Acesso em 02 maio 2023.