O documento discute como o framework AKKA pode ser usado para resolver problemas de desempenho em uma consulta de pacotes de viagem. A solução proposta é usar AKKA para executar consultas de destinos de viagem em paralelo, armazenando resultados em cache para respostas mais rápidas. Isso reduziu o tempo de resposta de 50 segundos para 18 segundos para 30 destinos.
2. Agenda
Problema a ser solucionado;
Solução;
AKKA;
Arquitetura;
Dados Interessantes.
Globalcode – Open4education
3. Problema a ser solucionado
Vou para
Porto Seguro!
Nenhum pacote
encontrado nessa
data.
Usuário www.cvc.com.br 23/12/2012
Globalcode – Open4education
4. Problema a ser solucionado
Desisto, não vou mais viajar !
Globalcode – Open4education
5. Solução para o Problema
Fazer uma consulta mais inteligente
Fazer uma busca por cidade e não mais por destino
turistico
Fazer com que essa busca procure datas de sugestões
evitando assim não trazer nenhum resultado para o
cliente
Globalcode – Open4education
6. Problemas
Tempo de resposta para uma consulta de um
destino base 50 segundos.
Consultando por cidade teremos em média 30
destinos diferentes
Globalcode – Open4education
7. Problemas
Tempo final 50 x 30 = 1500 (25 min)
Globalcode – Open4education
8. Solução
A solução para executar essa consulta em um
tempo viavel
Tunning nas querys
Paralelismo
Globalcode – Open4education
10. Problemas dessa solução
Threads
Controle de locks
Alta Complexidade
Alto Risco
Solução seria encontrar um framework que
abstraia essa complexidade e esse risco.
Globalcode – Open4education
11. AKKA 2.0
Framework 100% escala
Utiliza o conceito de atores da programação
funcional
Vários algoritimos de distribuição de mensagens
disponíveis
Abstrai a complexidade de utilização de threads e
problemas de concorrência
Pode ser utilizado em um ambiente 100% JAVA
Globalcode – Open4education
13. Arquitetura Cache
Site
MongoDB
Cache
Consulta
Dados
Dispara a Consulta
Não Encontrado
Globalcode – Open4education
14. Arquitetura DB
Destinos Datas
Site
Consulta DB
Consulta
30’s
MongoDB Cache
MongoDB
Globalcode – Open4education
15. Arquitetura
Procurando o pacote que mais se
adequa ao seu orçamento Servidor
Destinos Datas
Consulta DB
Consulta
Globalcode – Open4education
16. Arquitetura
Proximo Cliente que buscar para a mesma cidade
Trará o resultado em aproximadamente 200 ms
Com uma quantidade grande de opções de pacotes
Globalcode – Open4education
20. Dados Interessantes
Antes nossa consulta demorava em média 50
segundos para um destino
Atualmente essa consulta demora 18 segundos
para 30 destinos
Fizemos um teste de carga e conseguimos
executar 2000 usuários simultaneos com uma
variação de destino e data e a média de execução
foi de 28 segundos.
O uso da CPU ficou em 70% e as threads que o
akka abriu chegou a um pico de 800 threads
Globalcode – Open4education