Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Filas e mensageria com RabbitMQ

1,424 views

Published on

Aprenda mais sobre o conceito e a utilização de filas e mensagens para a comunicação entre sistemas. Utilizando ferramentas de mensageria, como o RabbitMQ, podemos reduzir complexidade e não se preocupar com o gerenciamento de mensagens e roteamento de informações. Apresentarei, também, alguns exemplos de implementação utilizando PHP para produzir e consumir mensagens de diversas filas.

Published in: Technology

Filas e mensageria com RabbitMQ

  1. 1. Filas e Mensageria com RabbitMQ por Daniel Archer
  2. 2. Daniel Archer ● Sou formado em Análise de Sistemas ● Desenvolvedor PHP há 7 anos ● Participante PHPRS ● Trabalho na KingHost ● Arqueiro nas horas vagas (ah, sério? sim sério) Zend Certified PHP 5.5
  3. 3. Daniel Archer ● Sou formado em Análise de Sistemas ● Desenvolvedor PHP há 7 anos ● Participante PHPRS ● Trabalho na KingHost ● Arqueiro nas horas vagas (ah, sério? sim sério) Zend Certified PHP 5.5
  4. 4. Entendendo como funciona Mensageria
  5. 5. Publisher / Subscriber Subscriber 1 Publisher Queue (Fila) Subscriber 2
  6. 6. Por que usar? Principais benefícios dessa técnica
  7. 7. Motivos Comunicação entre servidores e microsserviços Transmitir Informações de X para Y
  8. 8. Motivos Melhoria na performance, removendo processos pesados da aplicação Processamento Assíncrono Comunicação entre servidores e microsserviços Transmitir Informações de X para Y
  9. 9. Motivos Melhoria na performance, removendo processos pesados da aplicação Processamento Assíncrono Possibilidade de escalar facilmente processos com maior demanda Escalabilidade Comunicação entre servidores e microsserviços Transmitir Informações de X para Y
  10. 10. Opções do MercadoQuais são as atuais opções de Message Brokers disponíveis?
  11. 11. (Java)
  12. 12. (Java) Pub/Sub
  13. 13. (Java) Brokerless
  14. 14. PerformanceSó para termos uma ideia
  15. 15. Comparativo Receiver Sender Latency 25.000 msg/s 25.000 msg/s ~200ms 75.000 msg/s 90.000 msg/s ~300ms 180.000 msg/s 180.000 msg/s 0.3ms 600.000 msg/s 5.000.000 msg/s ~120ms Ref: http://www.bravenewgeek.com/dissecting-message-queues/
  16. 16. Simples, Rápido e Completo
  17. 17. Principais Entidades Faz a ligação entre os Exchanges e as Filas Bindings Palavra chave que será utilizada para roteamento da Mensagem Route Keys Responsáveis por receber as mensagens e enviar para as filas Exchanges Local de armazenamento das mensagens Queues Ref: https://www.cloudamqp.com/blog/2015-09-03-part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html
  18. 18. Na Prática...
  19. 19. Rotina simples de Envio e Recebimento de mensagens em PHP Simple Message
  20. 20. Roteando mensagens para várias filas Exchanges Types
  21. 21. FanOut Exchange Logs (fanout) Fila1 Fila2 Fila3
  22. 22. FanOut Exchange Logs (fanout) Fila1 Fila2 Fila3
  23. 23. FanOut Exchange Logs (fanout) Arquivo LogStash EmailAlert
  24. 24. FanOut Exchange Logs (fanout) Arquivo LogStash EmailAlert Auditoria
  25. 25. Direct Exchange Images (Direct) images.archive archiver1
  26. 26. Direct Exchange Images (Direct) cropper resizer images.crop images.resize images.archive archiver1
  27. 27. Direct Exchange Images (Direct) cropper resizer images.archive images.crop images.resize images.archive archiver1 archiver2
  28. 28. Topic Exchange Logs (Topic) {aplicação} . {dispositivo} . {level}
  29. 29. Topic Exchange Logs (Topic) * . web . * Fila1
  30. 30. Topic Exchange Logs (Topic) Fila3 * . * . debug * . web . * Fila1
  31. 31. Topic Exchange Logs (Topic) Fila3 unipago . # * . * . debug * . web . * Fila1 Fila2
  32. 32. Topic Exchange Logs (Topic) Fila3 Fila4 unipago . # * . * . debug unipago . mobile . * * . web . * Fila1 Fila2
  33. 33. Em disco ou em memoria? Persistence vs Durability
  34. 34. Persistence vs Durability Pode ser durável ou não. Será deletada após restart do servidor Fila (Queue) Pode ser durável ou não. Será deletado após restart do servidor Exchange Pode ser persistente (escrita em disco) Mensagem
  35. 35. A Mensagem deve ser Persistente Estar em uma Fila Durável Ligada a um Exchange Durável Como garantir?
  36. 36. Recapitulando!
  37. 37. Mensageria 1. Fácil comunicação entre sistemas 2. RabbitMq não é o mais rápido, mas é suficiente 3. Filas podem ser dinâmicas ou não 4. Vários consumers, várias linguagens 5. Exchange são roteadores, enviando mensagens para várias filas/exchanges 6. Persistência de Mensagens vs performance 7. Call me Archer!
  38. 38. Obrigado! Perguntas? Após a palestra, estarei no estande da KingHost para tirar dúvidas!

×