Git Product home page Git Product logo

messaging-cloud's Introduction

messaging-cloud

Article about comparison solutions messaging in cluod

Introdução

Formas de comunicação entre aplicações

As nossas aplicações não vivem isoladas. Por isso necessitamos de interfaces de comunicação entre elas. E para realizar essa comunicação, nós temos alguns desafios:

  • Redes não são confiáveis
  • Redes são lentas
  • Quais quer duas aplicação são diferentes
  • Mudanças são inevitáveis

E para esses desafios, existem esses principais metodos de solução:

  • File Transfer

FileTransfer

  • Shared Database

Shared Database

  • RPC - The communication occurs real-time and synchronously

RPC

  • Messaging - The communication is asynchronous

Messaging

O que é mensageria

Mensageria é a tecnologia que habilita a comunicação high-speed, asynchronous, program-to-program com entrega confiável. (Enterprise Integration Patterns - Addison Wesley)

messaging-concept

Síncrono vs Assíncrono

synchronous-asynchronous

Falhas do processamento

DeadLetterChannelSolution

Benefícios da mensageria

  • Remote Communication (desacoplamento de aplicações)
  • Platform/Language Integration
  • Asynchronous Communication
  • Variable Timing
  • Throttling
  • Reliable Communication
  • Disconnected Operation
  • Mediation
  • Thread Management (no Deadlock)

Desafios da comunicação assíncrona

  • Complex programming model

  • Synchronous scenarios

  • Performance

  • Limited platform support

  • Vendor lock-in (Protocols - JMS)

  • Sequence issues (order)

  • Idempotent action

  • Unique read

  • Unique write

Formas de entregar mensagens

  • Filas

message-queue-small

  • Tópicos

topic

  • Streams (stream é uma sequência ordenada, reproduzível e tolerante a falhas de registros de dados imutáveis, em que um registro de dados é definido como um par de valores-chave)

Stream

  • Exchanges

Exchanges

Soluções

Local

Rabbit MQ

RabbitMQ é um software open source de mensageria. Fornece uma forma comunicação assíncrona de dados entre processos, aplicações ou servidores. É um dos brokers de mensagens mais utilizados e implementa o protocolo AMQP — Advanced Message Queueing Protocol.

rabbit

Principais Features RMQ
  • Ordem: Não garante ordem
  • Contexto: Broker de uso geral
  • Modo de consumo: Push
  • Tempo de vida da mensagem: Até ser consumido e ter tido o acknowledgment
  • Garantia de entrega: Não garante atomicidade em transações de uma unica fila

Kafka

Criado pelo Linkedin e posteriormente doada para a Apache Foundation, o Apache Kafka é uma plataforma de streaming distribuída.

E uma plataforma de streaming distribuída consiste em:

  • Publique e assine fluxos de registros, semelhantes a uma fila de mensagens ou sistema de mensagens corporativo;
  • Armazene fluxos de registros de maneira durável e tolerante a falhas;
  • Processe fluxos de registros conforme eles ocorrem;

Kafka é geralmente usado para duas grandes classes de aplicativos:

  • Construção de pipelines de dados de streaming em tempo real que obtêm dados entre sistemas ou aplicativos de maneira confiável.
  • Construção de aplicativos de streaming em tempo real que transformam ou reagem aos fluxos de dados.
Principais Features Kafka
  • Ordem: Garante a ordem dentro da partição
  • Contexto: Broker de alto volume de mensagens e plataforma de stream
  • Modo de consumo: Pull
  • Tempo de vida da mensagem: Policy de retenção
  • Garantia de entrega: Não garante atomicidade

AWS

SNS

Amazon Simple Notification Service é um serviço de envio de mensagens de publicação/assinatura totalmente gerenciado, altamente disponível, seguro e durável que permite o desacoplamento de microsserviços, sistemas distribuídos e aplicativos sem servidor.

sns

Principais Features SNS
  • Ordem: Não garante ordem
  • Contexto: mecanismo fácil para incorporar um sistema de notificação robusto com aplicativos
  • Modo de consumo: Push
  • Tempo de vida da mensagem: TTL padrão de quatro semanas
  • Garantia de entrega: Sim, desde que o endpoint inscrito esteja acessível.

SQS

Amazon Simple Queue Service (SQS) é um serviço de filas de mensagens gerenciado que permite o desacoplamento e a escalabilidade de microsserviços, sistemas distribuídos e aplicativos sem servidor.

sqs

Principais Features SQS
  • Ordem: Sim com parametro FIFO
  • Contexto: Processamento distribuido
  • Modo de consumo: Pull
  • Tempo de vida da mensagem: configuravel 1 min - 14 dias, default 4 dias
  • Garantia de entrega: Sim

kiensis

Amazon Kinesis é a solução para coletar e processar grandes streamings de registros em tempo real. É o kafka da AWS com mais recursos.

  • Kinesis Video Streams - Capture, processe e armazene streams de vídeo
  • Kinesis Data Streams - Capture, processe e armazene fluxos de dados
  • Kinesis Data Firehose - Carregue streams de dados em datastores da AWS
  • Kinesis Data Analytics - Analise streams de dados com SQL ou Java

kinesis

Principais Features Kinesis
  • Ordem: Sim
  • Contexto: Alto Processamento distribuido onde parte da analise e processamento é realizado nele
  • Modo de consumo: Pull
  • Tempo de vida da mensagem: Configuravel
  • Garantia de entrega: Sim

GCP

Pub/Sub

O Pub/Sub é um serviço de mensagens assíncronas que separa serviços que produzem eventos de serviços que processam eventos.

pub-sub

Principais Features Pub/Sub
  • Ordem: Não garante ordem
  • Contexto: middleware orientado a mensagens ou ingestão e entrega de eventos para pipelines de análise de streaming.
  • Modo de consumo: Push
  • Tempo de vida da mensagem: Até ser consumida
  • Garantia de entrega: Sim

Dataflow

O Dataflow é um serviço gerenciado para executar uma ampla variedade de padrões de processamento de dados. A documentação neste site mostra como implantar os pipelines de processamento de dados de streaming e em lote usando o Dataflow, incluindo instruções de uso dos recursos de serviço.

dataflow

Principais Features Dataflow
  • Contexto: Pipeline de dados - Processamento de dados.
  • Modo de consumo: Push - ele vai entregar o dado
  • Tempo de vida da mensagem: Até ser consumida
  • Garantia de entrega: Sim

Services

Demo kafka

demo

References

messaging-cloud's People

Contributors

afonsoaugusto avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.