Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Escalando e Consumingo Queues com NodeJS, Docker e RabbitMQ

Escalando e Consumingo Queues com NodeJS, Docker e RabbitMQ

Talk feita no NodeSchool Campinas sobre arquitetura de mensageria utilizando RabbitMQ, NodeJS e Docker

07080351150c53efa399856330e4fa19?s=128

Matheus Fidelis

December 22, 2017
Tweet

Transcript

  1. ESCALANDO E CONSUMINDO QUEUES &

  2. MATHEUS FIDELIS Desenvolvedor Web DevOps Twitter: @fidelissauro Web: http://nanoshots.com.br Github:

    https://github.com/msfidelis
  3. O QUE SÃO QUEUES 1

  4. O QUE SÃO QUEUES ◦ Lista de itens ◦ FIFO

    (First In, First Out)
  5. PROCESSAMENTO DE QUEUES

  6. PROCESSAMENTO ASSÍNCRONO DE QUEUES

  7. COMO UMA QUEUES AJUDARIAM A ESCALAR MINHA API?

  8. NO QUE ISSO ME AJUDA? ◦ Processamento transparente ◦ Desacoplagem

    de sistemas ◦ Facil integração ◦ Comunicação uniforme ◦ “Deixa comigo e segue teu caminho”
  9. “ HISTORIA DE DESACOPLAMENTO (3,2 s) { NOME: JOÃO PRODUTOS:

    { { item: geladeira, valor: 1200.00 } }, cc : { numero: 123123123, cvv: 123123 validade 01/08/2028 } } {status : 200}
  10. “ HISTORIA DE DESACOPLAMENTO (3,2 s) {status : 200}

  11. “ HISTORIA DE DESACOPLAMENTO (3,5 s) (5,9 s) (4,3 s)

    (3,2 s)
  12. “ HISTORIA DE DESACOPLAMENTO {status : 200}

  13. “ HISTORIA DE DESACOPLAMENT (20 ms) {status : 200}

  14. QUE LINGUA ISSO FALA? 3

  15. QUE LINGUA ISSO FALA? ◦ AMQP ▫ (Mais) Um protocolo

    de comunicação em rede ▫ Cria um canal virtual dentro de uma conexão TCP ▫ TCP é custoso e demorado e limitado. ▫ Canais virtuais dentro do TCP ilimitados. ▫ Muitas threads compartilham a mesma conexão TCP
  16. ARQUITETURA DO AMQP ◦ Publishers e Consumers ◦ Exchanges: Onde

    os Publishers publicam as mensagens ◦ Routes ou Bindings: Padrões que definem a Queue destino da mensagem. ◦ Queue: Armazena as mensagens que vão ser consumidas pelos Consumers.
  17. ARQUITETURA DO AMQP

  18. MENSAGENS PARA O EXCHANGES ◦ Payload: Corpo da mensagem. Pode

    ser um JSON, um XML, uma imagem, um vídeo, uma string e etc ◦ Label: Header que descreve o Payload e pra onde ele vai ser enviado (Queue)
  19. CONSUMERS E QUEUES ◦ Classico Round-Robin ◦ A queue envia

    a mensagem para um consumer. ◦ O consumer pega a mensagem e envia o sucesso do recebimento/execução (ACK). ◦ O servidor apaga a mensagem da fila ◦ Em caso de erro, ou sem ACK, o servidor retorna para distribuição.
  20. RABBITMQ Uma mão na roda na gestão de Queues em

    pequena, média e larga escala.
  21. QUE LINGUA ISSO FALA? ◦ RabbitMQ ▫ É um servidor

    de mensagens ▫ Suporte a AMQP ▫ Escrito em Erlang ▫ Open Source ▫ Minimalista ▫ Possibilidade de Distribuição ▫ API ▫ CLI ▫ Web UI https://www.rabbitmq.com/
  22. CRIANDO UMA CONEXÃO COM O RABBITMQ $ npm install amqplib

    --save http://www.squaremobius.net/amqp.node/channel_api.html
  23. “ CRIANDO UMA CONEXÃO COM O RABBITMQ

  24. “ ENVIANDO UMA MENSAGEM SIMPLES

  25. “ ENVIANDO UMA MENSAGEM SIMPLES

  26. “ ENVIANDO UMA MENSAGEM SIMPLES

  27. “ CONSUMINDO UMA MENSAGEM SIMPLES

  28. “ CONSUMINDO UMA MENSAGEM SIMPLES

  29. “ ENVIANDO VÁRIAS MENSAGENS - SIMULANDO CLIENTES

  30. “ CONSUMINDO VÁRIAS MENSAGENS - SIMULANDO PROCESSAMENTO

  31. ESCALANDO Como os Containers ajudam a escalar nossos consumers conforme

    a demanda
  32. ESCALANDO CONTAINERS DE CONSUMERS ◦ Escalando sob demanda! ▫ Containers

    são rápidos ▫ Fácil replicação ▫ Escalar em quantidade horizontalmente ▫ Integração com ambientes de CI & CD ▫ Failover ▫ Poder ser Docker, LXC, Rocket e etc. ▫ Criar vários cenários
  33. Docker ◦ Empacotador de ambientes ◦ Gerenciador de Containers LXC

    ESCALANDO CONTAINERS DE CONSUMERS Docker-Compose ◦ Orquestrador de Containers Docker ◦ Gerenciamento Simplista https://docs.docker.com/ https://docs.docker.com/compose/
  34. “ DOCKERFILE DE BUILD

  35. “ DOCKER COMPOSE COMO ORQUESTRADOR

  36. FAZENDO DEPLOY DA NOSSA STACK $ docker-compose build $ docker-compose

    up
  37. FAZENDO DEPLOY DA NOSSA STACK $ docker-compose ps

  38. ESCALANDO SOB DEMANDA

  39. ESCALANDO SOB DEMANDA

  40. FAZENDO DEPLOY DA NOSSA STACK

  41. FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS $ docker-compose scale

    consumer=10
  42. FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS $ docker-compose ps

  43. FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS

  44. OPÇÕES MAIS AVANÇADAS DE ORQUESTRAÇÃO Docker Swarm Ferramenta de criação

    e orquestração de Clusters nativa do Docker. Pequena, média e grande escala. Google Kubernetes Ferramenta para gerenciamento de Clusters de Containers Docker ou Rocket. Média, grande e enorme escala. Rocket (Ou RKT) Ferramenta de orquestração de containers e clusters de CoreOS. Média, grande e enorme escala.
  45. EXEMPLOS https://github.com/msfidelis/QueuesComNodeEDocker

  46. Obrigado! PERGUNTAS? Contato: @fidelissauro matheus.fidelis@superlogica.com msfidelis01@gmail.com https://github.com/msfidelis http://nanoshots.com.br