Aula 8 - Comunicação entre Componentes com SQS e SNS

674 views

Published on

Um pouco sobre SQS e SNS para comunicação entre componentes na AWS, e alguns exemplos simples de utilização.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
674
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Aula 8 - Comunicação entre Componentes com SQS e SNS

  1. 1. Introdução a Sistemas DistribuídosHandsON ­ Exemplo de utilização de SQS e SNSEduardo de Lucena Falcão
  2. 2. Queues are Everywhere
  3. 3. Notifications are Everywhere
  4. 4. Componentes AWS para Troca deMensagens
  5. 5. Quebrando nosso Sistema emComponentes● Se encaixa bem em sistemas que tenham componentesno estilo produtor-consumidor.– Pode ser um ou vários componentes produtores, e umou vários componentes consumidores.
  6. 6. Evite a Sobrecarga● Eventualmente, seu serviço ficará sobrecarregado.– Podemos tratar a sobrecarga sem escalar nossosservidores, caso seja pertinente.
  7. 7. Evite Sobrecarga com Filas SQS● Modifique seu produtor para enviar mensagens para asfilas SQS;● Evite falhas: processe apenas o que conseguir naquelemomento; posteriormente, em momentos de baixademanda, processe o restante das mensagens.
  8. 8. Use Filas SQS
  9. 9. Use Filas SQS● As filas SQS armazenam suas mensagens de maneira duradoura até que vocêas processe. Quando as mensagens são lidas elas não são automaticamenteremovidas, mas são configuradas como invisível, para que nenhum outrocomponente a processe repetidamente.– A invisibilidade é definida por um visibility timeout que por padrão tem valor30 segundos.● Uma vez processadas as mensagens, você deve removê-la explicitamente dafila SQS. Caso contrário, a mensagem tornar-se-á disponível novamente na filapara que outros componentes a processem.
  10. 10. SQS dá Suporte a Alta Vazão deMensagens
  11. 11. SQS dá Suporte a Alta Vazão deMensagens● É possível ter vários “produtores” escrevendo na fila em um mesmo momento.O SQS irá fazer de tudo para manter a ordem delas, mas a natureza distribuídatorna impossível garanti-la 100%.– Se for extremamente necessário, adicione um identificador à suamensagem.– A ordem aproximada é suficiente na maioria dos casos.● É possível ter vários “consumidores”. A leitura de uma mensagem pelosconsumidores é atômica.– Estratégias de para evitar dead lock são utilizadas pela SQS para prevenirmúltiplos consumidores de ler uma mesma mensagem.
  12. 12. SQS como um Buffer● E se o serviço “cair” temporariamente, ou tiver de serreiniciado?– Não tem problema. A fila pode absorver essasmensagens, funcionando como um Buffer.
  13. 13. SQS como um Buffer● Quanto o sistema voltar a seu funcionamento pleno, asprocessará rapidamente.
  14. 14. SQS – Principais Características● Provê alta durabilidade;● Mantém as mensagens até asdeletarmos explicitamente;● Se não consumidas asmensagens são armazenadas por4 dias (padrão), mas podem serarmazenadas por até 14 dias;● É possível utilizar alertas doAmazon CloudWatch paramonitorar quantidade demensagens, taxa de mensagensem um dado tempo, etc.
  15. 15. SQS - Preço Geral● 100.000 mensagens de graçapor mês para todos;● $1,00 a cada 1.000.000 derequisições;
  16. 16. Componentes AWS para Troca deMensagens
  17. 17. Introdução ao SNS● Se encaixa bem em sistemas que tenham componentesno estilo produtor-consumidor.– A ideia é que um produtor envie mensagens idênticasa vários serviços.
  18. 18. Evite a Sobrecarga● Eventualmente, o produtor que produzir conteúdopopular para vários serviços ficará sobrecarregadoquando precisar entregar essas mensagens a eles.
  19. 19. Evite a Sobrecarga com TópicosSNS● Tópicos SNS desacoplam os produtores dos serviços queconsomem suas mensagens.● Tópicos SNS permitem você enviar mensagens idênticas a váriosserviços em paralelo.– Produtores publicam as mensagens nos tópicos SNS uma únicavez, e o SNS é encarregado de distribuir uma cópia idênticadesta mensagem para os serviços inscritos naquele tópico.
  20. 20. Transparência na Entrega dasMensagens● Podemos entregar as mensagens por diferentesprotocolos, não precisamos no preocupar em como elasserão entregues.
  21. 21. SNS – Principais Características● Quantidade de inscritos ilimitadas: enviemensagens para quantos subscribersdesejar;● Suporte transparente a váriosprotocolos: Amazon SQS, HTTP, e-mail,SMS;● Políticas de envio customizáveissegundo sua aplicação (tentativas, taxade mensagens em dado tempo);● É possível utilizar alertas do AmazonCloudWatch para monitorar quantidadede mensagens, taxa de mensagens emum dado tempo, etc.
  22. 22. SNS - Preço Geral● Preço para adicionar mensagens aoTópicos SNS:– 100.000 mensagens de graça por mêspara todos;– $0,60 a cada 1.000.000 de mensagensadicionadas ao SNS;● Preço de entrega das mensagens aosinscritos no Tópico SNS:
  23. 23. Comparação
  24. 24. Exemplo I - SQS● Processamento de imagens
  25. 25. Exemplo II - SQS● Processamento de PDFs com prioridade (Marvia)– Arquitetura Inicial
  26. 26. Exemplo II - SQS● Processamento de PDFs com prioridade (Marvia)– Arquitetura Final com SQS: QoS - Quality of Service
  27. 27. Exemplo II - SNS● Monitoramento do status do processamento do PDF (Marvia)● Uma das partes básicas que está faltando no Marvia é anotificação ao cliente de quando o seu PDF estará pronto.Vamos olhar novamente o gráfico do slide anterior. É possívelperceber que todo o ciclo, desde o pedido do cliente para acriação do PDF, passando pelas SQS até o processamento domesmo pelas instâncias ocorre bem. Mas não existe um meio docliente saber o momento exato de que seu PDF está pronto. Ummeio seria criar tópicos SNS para cada clientes, e assim que oPDF estiver pronto, enviamos uma notificação para o mesmo viae-mail ou outro protocolo.
  28. 28. Exemplo III – SNS + SQS●Padrão de arquitetura “fanout”●Ao usar este padrão podemosconstruir sistemas que tiremvantagem de processamentoparalelo assíncrono.● Por exemplo, seria possívelpublicar uma mensagem a umtópico SNS cada vez quetivermos um novo upload deimagem. Processosindependentes receberão demaneira automática essamensagem e executarão suasatividades de forma paralela.
  29. 29. Exemplo Prático
  30. 30. 25/05/2013 30Referências● Amazon Web Services. http://aws.amazon.com/pt/(Acesso: abril/2013).● Baseado em “AWS Messaging: Amazon SQS and SNS”.Acessado em 06/2013. Url:http://java.dzone.com/articles/aws-messaging-amazon-sqs-and● Vliet, J., and Paganelli, F.; Programming Amazon EC2.OReilly.
  31. 31. 25/05/2013 31Dúvidashttps://sites.google.com/site/introsistemasdistribuidos/Eduardo de Lucena Falcãoeduardolfalcao@gmail.com@dudufalcao

×