Kafka: uma ótima opção para corretores de mensagens em microsserviços
Publicados: 2022-11-19Kafka é uma plataforma de streaming distribuída. Geralmente é usado para agregação de log, processamento de fluxo em tempo real e fornecimento de eventos. Recentemente, o Kafka vem ganhando popularidade como um intermediário de mensagens para microsserviços. Kafka não é uma fila de mensagens tradicional como ActiveMQ ou RabbitMQ. Não possui um servidor central que armazene todas as mensagens. Em vez disso, ele usa um modelo de publicação-assinatura. As mensagens são armazenadas em tópicos e cada tópico pode ter várias partições. Kafka é altamente disponível e escalável. Ele pode lidar com bilhões de mensagens por dia. Kafka também é muito rápido. Ele pode processar mensagens em tempo real. O Kafka é uma ótima opção para criar um agente de mensagens para microsserviços. É altamente disponível, escalável e rápido.
O Kafka, que é um sistema de mensagens em tempo real, torna isso possível. Fluxos de dados são protegidos contra interferência e podem ser distribuídos ou tolerantes a falhas. O Kafka Data Integration Bus é um protocolo de troca de dados que permite que uma ampla gama de produtores e consumidores compartilhem dados. Os recursos do Kafka são semelhantes aos do MongoDB e RDS, que servem como buffer de dados no final do seu aplicativo.
KSQL, uma linguagem de script baseada em SQL, é usada para analisar e processar dados de streaming em tempo real no Apache Kafka . O KSQL inclui uma Estrutura Interativa para Processamento de Fluxo, que se destina a permitir que você execute atividades de Processamento de Fluxo, como agregação de dados, filtragem, junção, sessão, janelamento e assim por diante.
É mais do que apenas um excelente mediador de mensagens, conforme demonstrado pelo Apache Kafka. A implementação da estrutura possui vários recursos de banco de dados que a tornam adequada para uso em um banco de dados. Como resultado, ele agora serve como registro de evento de negócios em vez de depender de bancos de dados relacionais.
O aplicativo Kafka economiza tempo e energia ao transmitir dados do MongoDB de maneira simples e eficiente. O MongoDB é necessário para que as empresas publiquem grandes quantidades de dados para outros assinantes, bem como gerenciem vários fluxos de dados. O serviço Kafka MongoDB Connection permite que os desenvolvedores criem vários fluxos assíncronos com o MongoDB, que é uma ferramenta popular do setor.
Em um banco de dados, o Apache Kafka serve como modelo. Centenas de empresas o utilizam para fornecer garantias ACID e realizar tarefas de missão crítica. Na maioria dos casos, no entanto, Kafka não é tão competitivo quanto outros bancos de dados.
Que tipo de banco de dados é o Kafka?
Kafka é um tipo de banco de dados usado para armazenar e recuperar mensagens. É um sistema distribuído projetado para ser escalável e tolerante a falhas.
É uma plataforma de processamento de fluxo de código aberto escrita em Scala e Java que faz parte do projeto Kafka da Apache Software Foundation. Um fluxo em ciência da computação é uma coleção de elementos de informação que são disponibilizados ao longo do tempo. Os fluxos podem ser definidos como itens em uma correia transportadora sendo processados um por vez. Os fluxos, em sua forma mais básica, podem ser uma série de eventos aparentemente não relacionados. Os conceitos de fornecimento de eventos diferem dos conceitos de armazenamento de dados e análise de dados aos quais os desenvolvedores estão acostumados. Como uso o Kafka como banco de dados? A Blue é a empresa que diz sim ao negócio.
De acordo com o Team Red, os programadores estão cometendo um grande erro quando mudam de bancos de dados convencionais para Kafka. De acordo com Martin Kleppmann, a mensagem do Team Red de que Kafka é para todos é paternalista. O problema que o Team Red tem com Kafka e streams é que eles têm um problema com os desenvolvedores jogando fora RDMSs. Quando um log permanente de eventos é apresentado, ele sempre terá seu contexto histórico, facilitando sua auditoria. A administração de banco de dados tem inúmeras vantagens, mas também é um dos aspectos mais difíceis. O banco de dados tradicional opera de duas maneiras completamente diferentes: combina leituras e gravações. É fundamental para os programadores manter e sincronizar os dados duplicados em várias tabelas.
A escala muda o padrão conforme você avança. Os fluxos são distinguidos por uma distinção clara entre as preocupações dos leitores e dos escritores. Não há relação entre a rapidez com que o Kafka grava em um arquivo e a rapidez com que o Elastic Search pode enviar atualizações para ele. Como resultado, os usuários do Kafka processam logs para gerar várias visualizações materializadas. Fazer com que as visualizações materializadas funcionem como um mecanismo de cache conveniente exige alguns custos iniciais. Visualizações materializadas, além de armazenar seus próprios dados e dimensionamento, são componentes importantes da infraestrutura. Para 99% das empresas, os DBMSs são a melhor base.
Seu aplicativo pode estar nesta categoria e você pode ter direito a uma nova arquitetura com base em seu histórico. Muitos recursos críticos serão perdidos se você substituir bancos de dados por logs. Os recursos incluem restrições de chave estrangeira, transações atômicas (tudo ou nada) e técnicas de isolamento processual que ajudam com problemas de simultaneidade. Arjun assume que a integridade do seu aplicativo é mantida em todos os momentos. Os recursos básicos que a maioria das pessoas dá como certo tornam-se responsabilidades extras conforme você trabalha nos fluxos. É fundamental separar a intenção da declaração escrita. Uma configuração comum é usar o Kafka junto com um sistema Change Data Capture.
De acordo com o Team Red, os recursos de integridade de dados dos bancos de dados são críticos para alcançar o controle de dados. As transações devem ser isoladas dos bancos de dados convencionais para que sejam consideradas. Como resultado, uma única peça escrita pode ser cara. Se seu aplicativo estiver lutando para lidar com o volume de gravações caras, você pode ser forçado a migrar para um banco de dados mais convencional. O Team Red não menciona que usar um banco de dados na frente do Kafka reduz seus melhores recursos.
As vantagens desse design são significativas em relação aos sistemas de mensagens tradicionais. A primeira vantagem do Kafka é que ele pode lidar com um grande número de solicitações. Além disso, como os dados só são gravados no disco quando necessário, o Kafka pode lidar com grandes quantidades de dados.
O SQL Server é uma ferramenta de banco de dados que se enquadra na categoria de ferramentas. Este dispositivo portátil é versátil e confiável, mas às vezes pode ser difícil de usar. Kafka e Azure são plataformas extremamente capazes, mas Kafka é ampliado enquanto o Azure é reduzido.
O SQL Server é uma excelente ferramenta para empresas que exigem grandes quantidades de armazenamento de dados, mas pode não ser a melhor opção para quem precisa de escalabilidade rápida ou alto rendimento. Para empresas que precisam processar grandes quantidades de dados sem comprometer o desempenho, o Kafka é uma escolha melhor do que o SQL Server.
Kafka: um sistema de armazenamento distribuído para telemetria de séries temporais
Um sistema de armazenamento distribuído Kafka, que emprega um modelo baseado em tópico, armazena dados. Os dados podem ser armazenados em um modelo baseado em tópico de um banco de dados Kafka em vez de em um banco de dados relacional. Ele se comporta de maneira semelhante a uma fila em um Kafka Topic , embora não da mesma maneira que uma fila. Ele pode armazenar um grande número de séries temporais na estrutura Kafka, em vez de um banco de dados de séries temporais.
Qual é a diferença entre Kafka e Mongodb?
É um serviço de log de confirmação distribuído, particionado e replicado baseado em um sistema distribuído. Apesar de seu design exclusivo, é um componente importante de um sistema de mensagens. O MongoDB, por outro lado, é descrito como “O banco de dados para ideias gigantes”.
Como o Kafka não oferece suporte a filas prontas para uso, você deve invadi-lo em uma versão do sistema para o consumidor. Se for necessário um banco de dados relacional, outra ferramenta pode ser mais útil. MongoDB é uma escolha excelente por vários motivos, incluindo sua facilidade de uso e flexibilidade. O suporte ao usuário do Apache está disponível. A Confluent tem um Kafka (se estiver disposto a pagar) que foi criado no Linkedin ao mesmo tempo que o projeto Kafka. Ter um fornecedor que executa backups automáticos e dimensiona o cluster automaticamente é extremamente conveniente. Se você não tiver um administrador de sistema ou DBA que conheça o MongoDB, é uma boa ideia usar um terceiro especializado em hospedagem do MongoDB.
Kafka, em sua forma mais básica, destina-se a nos permitir enfileirar mensagens. O mecanismo de armazenamento do Cassandra garante gravação em tempo constante para seus dados, independentemente do tamanho. O MongoDB fornece uma implementação personalizada de mapeamento/redução, bem como suporte nativo do Hadoop para análises, enquanto o Cassandra não. Não faz diferença se é hospedado por você ou outro provedor porque o custo geralmente é razoável.
Kafka vs. Sistemas de banco de dados tradicionais
É importante observar que existem várias diferenças entre o Kafka e um sistema de banco de dados tradicional.
Como o Kafka é uma plataforma de streaming, ele pode lidar com uma alta taxa de ingestão de dados sem exigir processamento prévio significativo.
Os dados são consumidos por leituras finais em vez de leituras de disco ao executar o Kafka.
O uso de cache de página reduz a necessidade de visitas de banco de dados de ida e volta para Kafka.
Para enviar dados downstream para clientes downstream, Kafka emprega mensagens pub/sub.
O que é banco de dados Kafka
Kafka é um banco de dados frequentemente usado para armazenar dados de streaming. É um sistema distribuído projetado para ser escalável e tolerante a falhas. O Kafka costuma ser usado para criar pipelines de dados em tempo real e aplicativos de streaming. Ele pode lidar com alta taxa de transferência e baixa latência.
Um corretor de mensagens como o Kafka cresceu em popularidade nos últimos anos. De acordo com os proponentes, Kafka é uma mudança de paradigma no gerenciamento de dados. É fundamental lembrar que usar o Kafka como seu armazenamento de dados primário não fornece isolamento. Todos os problemas encontrados pelos sistemas de banco de dados serão resolvidos no futuro. Os hackers podem roubar dados explorando falhas em arquiteturas autônomas. Se dois usuários tentarem comprar o mesmo item ao mesmo tempo, ambos terão sucesso e ficaremos sem estoque para ambos. Essas arquiteturas, que usam recursos de viagem no tempo ao executar aparelhos a gás, dependem de arquiteturas orientadas a eventos.
Gerenciar grandes volumes de dados é um excelente uso do Kafka. As transações ainda devem ser isoladas usando um DBMS tradicional. Use bancos de dados OLTP para controle de admissão, CDC para geração de eventos e modele cópias downstream à medida que as exibições aparecem para transformar seu banco de dados do avesso.
O Kafka também pode ser usado para armazenar grandes quantidades de dados e processá-los diariamente. A capacidade de processar big data em modo de lote ou streaming é uma vantagem sobre outros métodos. O processo Kafka pode ser usado para recuperar arquivos de log de vários servidores e armazená-los em um banco de dados ou índice de pesquisa, por exemplo. Também está disponível uma API de streaming que pode ser usada para processar dados em tempo real.
Kafka Vs SQL
Em geral, Kafka e MySQL são classificados em dois tipos: Message Queues e Database Applications. A maioria dos desenvolvedores considera o Kafka uma solução de alto rendimento, distribuída e de escalabilidade, enquanto o MySQL é visto como o mais popular devido à sua simplicidade, desempenho e facilidade de uso.
O sistema de mensagens Pub-Sub no Kafka é um sistema distribuído, tolerante a falhas e de alto rendimento que pode lidar com grandes volumes de dados. O MySQL é o banco de dados de código aberto mais popular do mundo, destinado ao uso em sistemas de produção de missão crítica e carga pesada. Os desenvolvimentos consideram o Kafka mais poderoso que o MySQL devido ao seu alto rendimento, arquitetura distribuída e escalabilidade; enquanto SQL, Free e Easy são as principais razões pelas quais os usuários do MySQL preferem. Eu recomendo o PostgreSQL se você quiser obter alguma experiência prática com sistemas de gerenciamento de banco de dados (DBMSs). Na Vital Beats, usamos principalmente o Postgres porque ele nos permite alcançar o equilíbrio desejado entre gerenciamento de dados eficaz e backup, enquanto ainda oferece suporte à linha de comando. Se você planeja hospedar seu banco de dados no local ou na nuvem, o primeiro ponto de contato são os bancos de dados PaaS (plataforma como serviço). Como o MongoDB grava dados no mesmo nível de um documento, a consistência é difícil sem transações.
Os armazenamentos de documentos, como os encontrados no Amazon DynamoDB e no AWS RedShift, são muito diferentes dos pares chave-valor (ou armazenamentos de colunas) encontrados no MongoDB. É mais rápido e fácil consultar usando o banco de dados #Nosql porque o tempo de desenvolvimento é reduzido. Como funcionário iniciante no setor imobiliário, gostaria de selecionar um banco de dados que será altamente produtivo ao longo do tempo. Se você executar o Aurora Postgres na AWS com implantação de uma única região, é uma das melhores plataformas que recomendo. Se você usar o PostgreSQL em três ambientes de nuvem, terá uma melhor replicação multirregional. Se você configurá-los corretamente, qualquer um desses três bancos de dados terá um desempenho eficiente, escalável e confiável a longo prazo. A Uber mudou do Postgres para o MySql por vários motivos, incluindo a necessidade de um sistema de transmissão de dados mais ágil e confiável.
O diretor de tecnologia da OPS Platform afirmou que o Postgres era a escolha mais eficaz a longo prazo para seu produto devido à sua velocidade e facilidade de uso. Quando comparado ao MySQL 7.x, as transações são tratadas mais rapidamente no MySQL 8.0. Um banco de dados é mais seguro? É possível alterar a chave de criptografia aleatoriamente? MySQL e MongoDB são os dois bancos de dados de código aberto mais populares. Além da facilidade com que os dados podem ser armazenados, o MongoDB pode ser usado para armazenar grandes quantidades de dados recebidos por meio da rede de distribuição de conteúdo (CDN). A principal vantagem do Postgres sobre outros bancos de dados objeto-relacionais é sua ênfase na extensibilidade e conformidade com os padrões.
Podem ser criados índices regulares de árvore B e hash, bem como índices de expressão e parciais (aqueles que afetam apenas uma parte da tabela). A distinção mais básica entre Redis e Kafka é o uso de estruturas de mensagens corporativas. Estou procurando uma tecnologia nativa da nuvem quando estou escolhendo uma. Além da descoberta de serviços, o NATS pode ser usado para substituir o balanceamento de carga, multiclusters globais e outras operações. A única coisa que o Redis não faz é servir como um corretor de mensagens puro (no momento da escrita). Como resultado, é mais um armazenamento geral de chave-valor na memória. Apesar de ter uma extensa biblioteca de músicas, minhas músicas costumam ter mais de duas horas de duração.
O problema de armazenar arquivos de áudio em uma linha de banco de dados por várias horas é que eles não são facilmente pesquisáveis. Se preferir, considere armazenar arquivos de áudio em um serviço de armazenamento em nuvem, como Backblaze b2 ou AWS S3. Existe uma solução que usa o MQTT Broker no IoT World? Está alojado num dos centros de dados. No momento, estamos processando-o para fins relacionados a alertas e alarmes. Nosso principal objetivo é utilizar produtos mais leves que reduzam a complexidade operacional e os custos de manutenção. Seria ideal se pudéssemos integrar o Apache Kafka com essas chamadas adicionais de API de terceiros.
O aplicativo RabbitMQ é uma excelente opção para novas tentativas e filas. Se você não precisa que cada mensagem seja processada por mais de um usuário, você pode usar o RabbitMQ. Não faz sentido usar Kafka para entregar o sistema com confirmações. O gerenciador de estado de evento Kafka, como um gerenciador de estado de evento persistente, permite transformar e consultar várias fontes de dados usando uma API de fluxo. A estrutura RabbitMQ é ideal para um editor ou assinante (ou consumidor) individual, e acredito que uma troca de fanout pode ser configurada para permitir vários consumidores. O projeto Pushnami demonstra como migrar dados ao vivo de um banco de dados para outro. Como cada front-end (Angular), back-end (Node.js) e front-end (MongoDB) é nativo, a troca de dados foi muito mais fácil.
Para evitar a camada de tradução, pulei a parte relacional para hierárquica. É fundamental manter um tamanho finito em objetos MongoDB e usar índices corretos. Já na década de 1960, alguns dos primeiros registros médicos eletrônicos (EMRs) usavam o MUMPS, um banco de dados orientado a documentos. O MongoDB, que armazena até 40% de todos os registros hospitalares, é considerado um banco de dados médico robusto. No entanto, existem alguns métodos muito inteligentes para realizar consultas geográficas não suportadas nativamente, que são extremamente lentas a longo prazo. O Amazon Kinesis processa centenas de milhares de arquivos de dados por segundo de centenas de milhares de fontes. O RabbitMQ simplifica o envio e o recebimento de mensagens de qualquer aplicativo. O Apache ActiveMQ é rápido, oferece suporte a uma ampla gama de clientes multilíngues e é uma linguagem de script robusta. Os dados do Hadoop são processados usando um mecanismo de processamento rápido e de propósito geral chamado Spark.
Kafka x Mongodb
O Mongodb é um poderoso banco de dados orientado a documentos que possui muitos recursos que o tornam uma boa escolha para uma variedade de aplicativos. Kafka é uma plataforma de streaming de alto desempenho que pode ser usada para criar pipelines de dados em tempo real e aplicativos de streaming.
As transferências do MongoDB como uma origem para outras origens do MongoDB ou outras origens do MongoDB podem ser perfeitas com o aplicativo Kafka para MongoDB. Com a ajuda do MongoDB Kafka Connector, você aprenderá como transferir dados com eficiência. Com esse recurso, você pode criar um pipeline ETL totalmente novo para sua organização. O Confluent oferece uma variedade de conectores que atuam como fonte e coletor, permitindo que os usuários transfiram dados entre os dois. Os conectores Debezium MongoDB são um desses mecanismos de conectividade que permitem que os usuários do Kafka MongoDB se conectem ao banco de dados MongoDB. Antes de iniciar o Confluent Kafka, você deve primeiro garantir que ele esteja em execução no seu sistema. Usando funcionalidades como KStream, KSQL ou qualquer outra ferramenta como Spark Streaming, você pode analisar dados no Kafka.
A entrada de dados no warehouse requer scripts manuais, bem como código personalizado. A plataforma de pipeline de dados sem código da Hevo permite que você crie sistemas de pipeline de dados simples sem codificação. A plataforma transparente de preços da Hevo permite que você veja todos os detalhes de seus gastos com ELT em tempo real. O período de teste dura 14 dias e inclui suporte 24×7. A criptografia de ponta a ponta é feita usando as certificações de segurança mais rigorosas. O Hevo pode ser usado para transferir com segurança seus dados Kafka e MongoDB para 150 fontes de dados diferentes (incluindo 40 fontes gratuitas).
O que é Kafka e Mongodb?
O conector MongoDB Kafka é um conector verificado pelo Confluent que mantém os dados dos tópicos Kafka como um coletor de dados no MongoDB e publica alterações nesses tópicos como uma fonte de dados.
Os prós e contras de usar o Kafka como banco de dados
Qual banco de dados é bom para o Kafka? Em princípio, Kafka pode ser usado para criar um banco de dados. O resultado será um exame de todos os principais problemas que atormentam os sistemas de gerenciamento de banco de dados há décadas. Um sistema de gerenciamento de banco de dados (DBMS) é um tipo de software que organiza e consulta dados. Eles são necessários para aplicações de grande escala e para armazenar dados que devem ser acessados por vários usuários. Um SGBD é classificado em dois tipos: relacional e não relacional. O modelo relacional é um método padrão de representação de informações em um SGBD relacional. Eles são populares porque são simples de usar e podem ser usados para armazenar dados organizados em tabelas. Um SGBD que não usa modelos relacionais não é tão poderoso quanto um que usa outros modelos. Os dados também são armazenados em outros formatos além das tabelas para organizá-los com mais eficiência, como fluxos de dados. O modelo Kafka é usado para criar um banco de dados, que pode ser usado para diversos propósitos. O processamento de fluxo está no centro do Kafka, um novo modelo de representação de dados. Os sistemas de gerenciamento de dados (DMSs) são um componente crucial do gerenciamento de dados. No entanto, usar o Kafka como banco de dados pode ser difícil às vezes. Alguns dos problemas mais comuns encontrados pelos DBMSs são desempenho, escalabilidade e confiabilidade. George Fraser, CEO da Fivetran, e Arjun Narayan, CEO da Materialize, co-escreveram o post.
Banco de Dados de Persistência Kafka
Os bancos de dados de persistência Kafka fornecem uma maneira de armazenar dados em um cluster kafka de maneira altamente disponível e escalável. Por padrão, o kafka usará um banco de dados na memória para armazenar dados, mas isso não é adequado para implantações de produção. Um banco de dados de persistência kafka pode ser usado para fornecer uma opção de armazenamento mais confiável para dados kafka.
O LinkedIn criou o Apache kaffef de código aberto em 2011. Essa plataforma permite que dados em tempo real sejam alimentados com latência e taxa de transferência extremamente baixas. Na maioria dos casos, os dados podem ser importados e exportados via Kafka Connect de sistemas externos. Novas soluções podem ajudar com problemas como desempenho de armazenamento ineficiente e subutilização de unidades. Apesar dos desafios da arquitetura, o flash local é uma excelente escolha para sistemas Kafka. Como cada tópico no Kakfa só pode ser acessado em uma unidade, haverá um aumento na subutilização. A sincronização também pode ser difícil, resultando em problemas de custo e eficiência.
Quando um SSD falha, os dados dele devem ser totalmente reconstruídos. Esse procedimento demorado reduz o desempenho do cluster. O Kafka é mais adequado para o armazenamento baseado em NVMe/TCP porque nivela a compensação entre confiabilidade e desempenho.
Kafka é um sistema de mensagens fantástico, mas não é uma solução perfeita para armazenar dados
Kafka é um excelente sistema de mensagens que pode ser usado para armazenar dados. Uma das opções de retenção do Kafka é um tempo de retenção de -1, que se refere a uma retenção vitalícia. No entanto, a confiabilidade do Kafka fica muito aquém da de um banco de dados tradicional. É importante observar que o Kafka armazena dados em disco, soma de verificação e replicados para tolerância a falhas, portanto, acumular mais dados armazenados não diminui a velocidade. Kafka pode ser usado para enviar e receber mensagens, mas não é a melhor escolha para armazenar dados.
O que é Kafka
O Kafka é um sistema de mensagens de publicação-assinatura rápido, escalável, durável e tolerante a falhas. Kafka é usado na produção por empresas como LinkedIn, Twitter, Netflix e Airbnb.
Kafka tem um design simples e direto. É um sistema distribuído que roda em um cluster de máquinas e pode ser escalado horizontalmente. O Kafka foi projetado para lidar com alta taxa de transferência e baixa latência.
O Kafka é usado para criar pipelines e aplicativos de dados de streaming em tempo real. Ele pode ser usado para processar e agregar dados em tempo real. O Kafka também pode ser usado para processamento de eventos, log e auditoria.
O LinkedIn lançou o Kafka em 2011 para lidar com feeds de dados em tempo real. Kafka está sendo usado por mais de 80% das empresas da Fortune 100 hoje. Uma API do Kafka Streams é uma biblioteca leve e poderosa projetada para permitir o processamento em tempo real. Além dos bancos de dados distribuídos populares, o Kafka inclui uma abstração de um log de confirmação distribuído. Ao contrário das filas de mensagens, o Kafka é um sistema distribuído altamente adaptável e tolerante a falhas com alta escalabilidade. Por exemplo, pode ser usado para gerenciar a correspondência entre passageiros e motoristas no Uber ou fornecer análises em tempo real na British Gas. Muitos microsserviços dependem do Kafka. O serviço nativo da nuvem, completo e totalmente gerenciado do Confluent é superior ao do Kafka. O Confluent simplifica a criação de uma categoria totalmente nova de aplicativos modernos orientados a eventos, combinando dados históricos e em tempo real em uma fonte unificada de verdade.
Com a ajuda do Kinesis, você pode lidar com uma ampla variedade de fluxos de dados, tornando-o uma plataforma de processamento de fluxo poderosa e versátil. É uma plataforma popular devido à sua velocidade, simplicidade e compatibilidade com uma ampla gama de dispositivos. Devido à sua confiabilidade, é uma das plataformas de streaming mais populares. Ele pode lidar com um grande volume de dados sem problemas devido à sua durabilidade. Além disso, por ser uma plataforma conhecida, amplamente utilizada e suportada, é simples encontrar um parceiro ou integrador para ajudá-lo a começar a usá-la. Se você está procurando uma plataforma de streaming poderosa e confiável, o Kinesis é uma excelente escolha.
Kafka: o sistema de mensagens que está substituindo os bancos de dados
Fluxos de dados em tempo real podem ser feitos para se adaptar ao ambiente de dados em mudança usando Kafka, um sistema de mensagens para construir pipeline e aplicativos de dados de streaming em tempo real. Big data é processado por meio de fluxos de eventos em tempo real por meio do uso de Kafka, que é escrito em Scala e Java. Uma conexão Kafka pode ser estendida de um ponto a outro e também pode ser usada para enviar dados entre fontes. A plataforma de transmissão de eventos destina-se a fornecer transmissão ao vivo de eventos. É injusto comparar bancos de dados com soluções de mensagens como Kafka. Devido aos recursos do Kafka, os bancos de dados não são mais necessários.
Kafka não é um banco de dados
Kafka não é um banco de dados, mas é frequentemente usado em conjunto com um. É um intermediário de mensagens que pode ser usado para enviar mensagens entre diferentes componentes de um sistema. Geralmente é usado para desacoplar diferentes partes de um sistema para que possam ser dimensionadas independentemente.
É possível substituir o Apache Kafka por um banco de dados, mas não faça isso por conveniência. O episódio do Top Gear em que os protagonistas ganharam $ 10.000 cada para comprar um supercarro italiano usado com motor central me lembrou de um antigo episódio do Top Gear em que os protagonistas receberam $ 10.000 cada. Em 2011, o LinkedIn lançou Kafka, e este episódio foi ao ar no mesmo ano. Ele permite que você faça o mínimo de mensagens persistentes sem investir em uma plataforma de mensagens com todos os recursos. A premissa fundamental é que existe uma regra básica. Crie uma tabela (ou bucket, coleção, índice, o que for) para cada evento que foi registrado durante o processo produtor. Pesquise o banco de dados regularmente a partir de uma instância do consumidor, atualizando o estado do consumidor conforme ele é processado.
Para que o modelo funcione corretamente, produtores e consumidores devem poder trabalhar simultaneamente. Considere usar o livro de Kafka como um guia e armazenar registros indefinidamente, em vez de simplesmente lê-los. Grupos de consumidores separados, por outro lado, podem ser implementados duplicando os registros na inserção e, em seguida, excluindo os registros após o consumo. O Kafka emprega compensações persistentes para permitir sua distribuição de dados definida pelo usuário e oferecer suporte a vários consumidores separados. Para descontinuar essa funcionalidade, você deve desenvolver um serviço desde o início. Não é difícil implementar o conceito de expurgo baseado no tempo, mas é necessário acolher a lógica dos necrófagos. No Kafka, há controles refinados sobre todos os atores (consumidores, produtores e administradores).
Ele pode processar milhões de registros por segundo em servidores de commodities e em nuvem sem problemas. O Kafka é otimizado para altos níveis de rendimento tanto no produtor quanto no consumidor final, em um sentido não funcional. Usando Kafka, é um log distribuído, apenas anexado, incomparável neste campo. Ao contrário dos agentes de mensagens tradicionais que removem as mensagens no estágio de consumo, o Kafka não limpa as mensagens depois que elas são consumidas. A taxa de transferência e a latência de um banco de dados quase certamente precisarão ser melhoradas significativamente por meio do uso de hardware especializado e ajuste de desempenho altamente focado. Dispensar um corretor pode ser atraente à primeira vista. Quando você usa uma plataforma de eventos de streaming como o Kafka, você capitaliza o enorme esforço de engenharia que foi feito em sua construção.
Para garantir que qualquer solução que você escolher implantar hoje possa ser mantida, você deve ter certeza de que ela pode ser mantida em um alto padrão. A maioria das funções em um armazenamento de eventos só pode ser implementada por meio do uso de um banco de dados. Não existe uma loja de eventos de tamanho único; qualquer armazenamento de evento não trivial, na maioria dos casos, é quase certamente uma implementação sob medida apoiada por um ou mais bancos de dados disponíveis no mercado. Você pode usar bancos de dados no campo de organização de dados para recuperação eficiente, mas deve evitar usá-los para distribuir dados (quase) em tempo real.