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

Matheus Fidelis

December 22, 2017
Tweet

More Decks by Matheus Fidelis

Other Decks in Programming

Transcript

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

    de sistemas ◦ Facil integração ◦ Comunicação uniforme ◦ “Deixa comigo e segue teu caminho”
  2. “ 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}
  3. 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
  4. 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.
  5. 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)
  6. 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.
  7. RABBITMQ Uma mão na roda na gestão de Queues em

    pequena, média e larga escala.
  8. 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/
  9. CRIANDO UMA CONEXÃO COM O RABBITMQ $ npm install amqplib

    --save http://www.squaremobius.net/amqp.node/channel_api.html
  10. 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
  11. 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/
  12. 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.