Alternativas activemq

Estas são algumas das alternativas:

  1. Amazon Kinesis
  2. Hub de eventos do Azure
  3. Rabbit MQ

Se você está procurando um sistema de transmissão de mensagens simples, também pode usar o pubnub e o Redis Pubsub.

Gazeta

(

link do github

) também é uma opção interessante. É semelhante ao Kafka, mas com alguns paradigmas arquitetônicos que o tornam mais atraente.

Um exemplo é que os corretores não são responsáveis ​​pelo armazenamento de longo prazo, mas, em vez disso, transferem os dados para o armazenamento em nuvem, o que torna o dimensionamento muito mais simples (e barato). Isso também facilita a construção de plataformas que combinam de forma flexível os paradigmas de processamento de streaming SQL, batch e latência de milissegundos.

Ele é escrito em Go e, em sua maior parte, oferece paridade total de recursos com vantagens arquitetônicas significativas.

Então, são estes: RabbitMQ, ZeroMQ, Apache ActiveMQ, OpenMP etc. ZeroMQ é um produto bem projetado que pode ser comparado ao Kafka por sua escalabilidade e tolerância a falhas. Deve-se observar que ZeroMQ é usado no Storm.

Depende do que você deseja usar. ZeroMQ, ActiveMQ, RabbitMQ são sistemas bastante semelhantes.

Você também pode querer dar uma olhada

nats.io

que usa um servidor baseado em Golang em vez do Zookeeper. Ele pode ser contado como um dos mais novos serviços de sistema de mensagens nativo da nuvem para sistemas distribuídos.

Bem, não existe nenhum sistema hoje construído com o mesmo conceito que Kafka usa. E Kafka é muito mais do que um corretor de mensagens. Portanto, considerando que você deseja um corretor de mensagens alternativo, há muitas alternativas, como ActiveMQ, ZeroMQ, RabbitMQ etc.

Além disso, com confluente, o kafka está se tornando uma plataforma de dados completa atendendo a muitas necessidades corporativas, como corretor de mensagens, armazenamento de backup, análise de lote e fluxo, até mesmo substituindo o HDFS em alguns casos em que a análise em tempo real é necessária em big data.

Alternativas para Kafka? Por que uma empresa iria querer uma prova de conceito tão derrotista?

Se isso não fizer uma empresa querer parar de procurar uma alternativa ao Kafka, então nada o fará →

Artigo do LinkedIn de 2014, mas ainda resiste ao teste do tempo

Os únicos sistemas que conheço que podem competir com o Kafka estariam na nuvem, como AWS Kinesis e SQS. O Kafka pode até ser instalado no AWS EC2, se desejado.

Talvez eu seja um preconceito tecnológico e de código aberto. Eu não quero ser.

Apache

Kafka

é uma plataforma de software de processamento de stream de código aberto ou “

Estrutura Pub-Sub de mensagens distribuídas ”.

Existem dois outros tipos de frameworks que você pode usar como alternativas:

  1. Estruturas de fila de mensagens - Active MQ / RabbitMQ / ZeroMQ / RocketMQ
    • Esses são intermediários de mensagens tradicionais anteriores com mais ênfase no enfileiramento do que no streaming.
    • Eles são construídos sobre modelos de mensagens ponto a ponto.
    • Eles são recomendados apenas quando existe um sistema de comunicação fixo ponta a ponta.

    ou

    2. Estruturas de processamento de fluxo distribuído - Apache Samza, Apache Flink, Apache Spark, Apache Storm

    Para um gráfico de comparação completo, clique aqui:

    Estruturas de mensagens de Big Data comparadas

Para backbone de comunicação de microsserviços: RabbitMQ e ActiveMQ.

Além disso, eu mencionaria

Aeron: Nós realmente precisamos de outro sistema de mensagens? - Alta escalabilidade - a

encontre o "Event bus" criado por soluções de clustering, como Consul (ou Serf) ou Vertex. Eles são todos muito diferentes, zeromq é normalmente usado ponto a ponto (nenhum servidor envolvido); Aer é um protocolo de camada de rede 4 e implementação na base, mas talvez você possa colocar um servidor em algum lugar também; os barramentos de eventos também são ponto a ponto; todas as soluções ponto a ponto ou estilo fofoca escalam muito bem, mas a informação não se propaga tão rápido, e não há tantas garantias, não pode ser "exatamente uma vez" transmissão, e nem mesmo "no máximo uma vez" ou " pelo menos uma vez"; ponto a ponto significa que todas as apostas estão canceladas, mas ei, você pode ser elástico e realmente lucrar com a escala. algoritmos como

Protocolo de Fofoca - Cônsul da HashiCorp a

foi projetado para ser dimensionado para milhões de nós, portanto, em situações com sensores, IoT e geralmente muitos produtores e consumidores, onde os dados podem ser retransmitidos facilmente, pode fazer mais sentido para os "clientes" carregar a transmissão e detecção de associação / tratamento de erros / detecção de falhas entre si e descarregar os clusters de servidores opcionais, que podem estar distantes.

Em primeiro lugar, devo mencionar que, embora o Apache Kafka tenha muitas alternativas, ele continua sendo o software de processamento de fluxo mais popular. Então, as alternativas são

ActiveMQ

,

RabbitMQ

,

Amazon Kinesis

,

Apache Spark

,

Akka

,

Tempestade Apache

,

Apache Flink

,

Redis

,

ZeroMQ

.

Kafka

é uma plataforma de software de processamento de stream de código aberto. Inicialmente desenvolvido como uma fila de mensagens, ele evoluiu de um log de confirmação distribuído para uma plataforma completa de streaming de eventos. Kafka coleta, armazena, analisa e distribui dados em vários nós.

Aqui estão algumas das razões pelas quais escolher o Apache Kafka:

  • Alto rendimento
  • Distribuído
  • Escalável
  • Alta performance
  • Durável
  • Publicar-Assinar
  • Simples de usar
  • Escrito em Scala e Java
  • Roda em JVM
  • Código aberto
  • Agente de mensagens + sistema de streaming
  • Construções de paralelismo perfeito
  • Modelo simples de editor / assinante
  • Robusto
  • Suporte a vários clientes
  • Integração de esquema Avro

Como qualquer tecnologia, o Kafka tem alguns contras:

  • Needs Zookeeper
  • Clientes não Java são cidadãos de segunda classe
  • Dificuldades operacionais

Vou comparar as melhores alternativas ao Apache Kafka, para que você possa decidir quais ferramentas de streaming beneficiariam mais seus negócios.

Kafka vs. RabbitMQ

RabbitMQ é um software de enfileiramento de mensagens. É o mais próximo de se tornar o maior concorrente de Kafka pelos seguintes motivos:

  • Rápido e funciona com métricas / monitoramento adequados
  • Facilidade de configuração
  • Fácil de configurar e começar
  • Durável
  • Protocolos padrão
  • Trabalho intuitivo por meio de Python
  • Escrito em Erlang
  • Completude dos padrões de mensagens
  • Escala para 1 milhão de mensagens por segundo
  • Distribuído
  • Confiável
  • Documentação clara com uma linguagem de script diferente
  • Ótima IU
  • Funciona em plataforma Open Telecom
  • Clusterable
  • Confiável

No entanto, essas são as razões pelas quais os engenheiros de TI preferem o Kafka ao invés do RabbitMQ:

  • Cluster / configuração HA e gerenciamento muito complicados
  • A configuração deve ser feita primeiro, não por seu código
  • Requer tempo de execução Erlang
  • Lento

Kafka vs. ActiveMQ

ActiveMQ é um agente de mensagens. Aqui estão as razões pelas quais você pode preferir ActiveMQ em vez de Kafka, é:

  • Código aberto
  • Fácil de usar
  • Eficiente
  • Compatível com JMS
  • Alta disponibilidade
  • Escalável
  • Persistência
  • Suporte XA (transações distribuídas)
  • Uma rede distribuída de corretores
  • Entrega Docker

Kafka x Amazon Kinesis

Embora todas as alternativas de Kafka sejam coisas diferentes, em geral, todas elas coletam e comunicam dados. Portanto, enquanto o Kafka é uma fila de mensagens, o Kinesis é uma ferramenta de processamento de dados em tempo real.

Os principais recursos do Kafka foram apresentados anteriormente, vamos ver o que o Amazon Kinesis oferece:

  • Processamento em tempo real
  • Fácil de usar
  • Alto rendimento
  • Bibliotecas cliente
  • Processa centenas de terabytes por hora
  • Escalável

No final do dia, todas as alternativas ao Kafka oferecem praticamente a mesma coisa. No entanto, cada vez mais engenheiros de TI veem o Kafka como a solução mais adequada para streaming de dados a cada dia.

A partir de 2019, existem mais ferramentas de streaming de dados de que precisamos. Como escolher com sensatez? Como não perder dinheiro com a eficiência das ferramentas? Podemos responder a todas essas perguntas em um rápido telefonema com nossa equipe. Trate-se com

duas horas gratuitas de consultoria DevOps aqui

!

Como Kafka é diferente de outros pubsubs

1) Exatamente uma vez semântica

2) Entrega garantida

3) Entrega solicitada

4) Persistir

Kafka precisará da combinação do conjunto de habilidades Java para otimização de desempenho / JVM.

A beleza do Kafka é oferecer o sistema Pub Sub Messaging e Data Streaming / Data Piping, entrega garantida.

Dependendo do caso de uso do seu aplicativo, você pode ter opções diferentes: Portanto, se você estiver procurando por uma alternativa pub sub - Active MQ, o Rabbit MQ é uma tecnologia competitiva baseada em java.

Se você precisa de alternativa para streaming - Apache Spark e Apache Samza são uma boa escolha.

Produto Message Queue, como

NATS - Sistema de Mensagens de Código Aberto

suporte Entrega pelo menos uma vez e pelo menos uma vez

Nats não reivindica entrega ordenada.

Nats não oferece persistência de dados fora da caixa.

Você precisa de configuração adicional e integração entre Nats Streaming e bancos de dados.

ZeroMQ afirma ser muito rápido, mas complexo de codificar.

Além disso, a equipe ZeroMQ quer fazer o trabalho complexo para você, o que significa que eles não tornam o documento rico o suficiente para fazer você mesmo.

ZeroMQ não pode garantir pelo menos uma entrega ou exatamente uma entrega.

Se você só precisa começar a usar o Messaging, pode usar o Redis - com o cliente disponível em quase todos os idiomas e uma curva de aprendizado rápida.

atualização: Apache RocketMQ é uma alternativa ao Kafka e reduz muitos problemas com o Kafka

Principal diferença entre Kafka e RocketMQ

  1. O comprimento do corpo da mensagem em Kafka é 1 MB, RocketMQ suporta 250 KB
  2. As mensagens Kafka podem ser armazenadas por até 30 dias, RocketMQ suporta 3 dias.
  3. Kafka possui um rico ecossistema com muitas interfaces e adaptadores. RocketMQ tem um conjunto limitado de adaptadores
  4. Kafka é bem documentado em comparação com RocketMQ
  5. Kafka requer Zookeeper, RocketMQ não

Nota: Kafka requer o uso do Zookeeper enquanto o Apache RocktMQ não requer o Zookeeper. No entanto, se você gerencia vários clusters, pode precisar de algo como Hoshicorp Consul ou alguma outra alternativa para gerenciar os hosts dentro do cluster, dependendo do design de sua infraestrutura.

Embora existam muitos outros tópicos aqui listando apenas 20 alternativas, para este tópico, eu queria fazer uma comparação aproximada, lado a lado, de três dos mais conhecidos: Apache Pulsar, Apache Kafka e filas de mensagens como ActiveMQ.

Apache Pulsar é um sistema de mensagens pub-sub distribuído de código aberto, desenvolvido para oferecer suporte a multilocação. (Tem sido argumentado para melhorar em relação a Kafka neste último aspecto). Ele está começando a encontrar uso como uma solução de mensagens de servidor para servidor. A Pulsar oferece um modelo de consumo único e triplo: exclusivo (apenas um consumidor consome dados de um tópico); compartilhado (vários consumidores por tópico); e failover (mais de um consumidor, mas a qualquer momento apenas um consumirá dados). Além da multilocação, a Pulsar oferece, fora da caixa, suporte para replicação geográfica de tópicos.

O Pulsar armazena tópicos como um fluxo infinito de mensagens, mas, em vez de um log contínuo como o Apache Kafka, os tópicos são implementados como uma sequência de segmentos e, para tolerância a falhas, segmentos (em vez de tópicos inteiros) são replicados. A soma total de dados em um cluster Pulsar, portanto, não é diferente de dados fragmentados em um disco; um sistema de corretores gerencia bookies (instâncias do Apache Bookkeeper) para acessar os dados e fornecer persistência.

O Apache Kafka pode ser visto como uma etapa evolutiva anterior, mas mais madura e estável, e também é um sistema de mensagens pub-sub distribuído, mas com algumas diferenças importantes, nomeadamente na simplicidade: os dados são distribuídos por tópicos - que mapeiam para completar apenas anexar logs e apenas tópicos inteiros - ao contrário de segmentos - podem ser particionados. O Apache Kafka é efetivamente um modelo produtor-consumidor simples.

Novos eventos são anexados aos tópicos pelo produtor; os consumidores de um determinado tópico decidem de qual deslocamento (número no log) irão consumir. ACLs estão disponíveis no Kafka e no Pulsar, mas para mim, pelo menos, parecem críticos no Kafka devido ao único modelo simples produtor-consumidor de Kafka; Por exemplo, no Kafka, você não pode configurar tópicos explicitamente para um único consumidor ou para vários consumidores. Ainda assim, este modelo simples produtor-consumidor é bem simples, e o roteamento de mensagens assíncronas no Kafka não precisa ser complicado.

Pulsar e Kafka - mas atualmente mais o último - são conhecidos por alto rendimento e baixa latência.

As filas de mensagens, por outro lado, surgiram antes dos dias do pub-sub e oferecem outras alternativas para o roteamento de mensagens: ActiveMQ e RabbitMQ são ambos corretores de mensagens de código aberto, ambos com ênfase no enfileiramento (em oposição ao streaming). Para mim, isso parece uma etapa evolucionária ainda anterior ao Kafka, com o ActiveMQ oferecendo replicação via Apache ZooKeeper e “redes de corretores”; um sistema de mensagens store-and-forward significa que as mensagens são passadas de corretor para corretor até chegarem ao seu destino. No entanto, as regras de roteamento carregadas antecipadamente podem tornar o roteamento de mensagens bastante complicado em filas de mensagens.

Então, como eles se comparam em outras áreas? Aqui estão alguns destaques que encontrei:

  • O Apache Kafka pode muito bem ser a primeira e mais madura tecnologia otimizada para comunicação assíncrona; as regras de roteamento baseadas no consumidor, sem enfeites adicionais, tornam o mais simples.
  • Apache Kafka tem uma taxa de transferência maior do que ActiveMQ e RabbitMQ. Mesmo que o Pulsar também tenha alto rendimento, parece haver muito menos relatórios no campo comprovando isso (neste momento).
  • Muitas pessoas em campo e em encontros observaram que “partições” e “rede” eram coisas que os enviavam para o Apache Kafka das filas de mensagens. Configurá-los nas filas de mensagens pode ser tão complicado quanto simples no Kafka.
  • O Pulsar suporta streaming e enfileiramento; Kafka suporta streaming; ActiveMQ usa um mecanismo de armazenamento e encaminhamento, passando mensagens de corretor para corretor até que cheguem ao seu destino.
  • O Pulsar é multitenant por design; O Kafka oferece suporte para locação única e multilocação, mas isso pode ser complicado quando os usuários têm diferentes SLAs de disponibilidade, durabilidade e latência.
  • O Pulsar exclui mensagens somente depois que são consumidas, mas também oferece um tempo de retenção configurável. Kafka exclui mensagens com base em um TTL; deletando até mesmo mensagens não consumidas.

Ainda afirmamos que, neste ponto, pelo menos, o Apache Kafka tem o melhor compromisso entre simplicidade de uso, maturidade, popularidade e estabilidade, além de conter os recursos mais importantes que as pessoas precisam para comunicação assíncrona, por exemplo, entre microsserviços em um MSA.

Com base, pelo menos, no que outros estão dizendo, embora o Apache Pulsar pareça promissor, argumentamos que alguns dos problemas de escala "ligados ao ZooKeeper" que o Apache Kafka tem podem ser mitigados indo com um

solução hospedada

. Uma solução hospedada também pode ajudar na configuração, problemas de escala (incluindo multilocação e ACLs), atualizações e manutenção.

E ainda existem versões gratuitas e de código aberto de recursos como

KSQL

e

registro de esquema

para que um usuário de código aberto não precise ficar preso a ferramentas proprietárias ao escolher uma solução hospedada.