Este documento orienta você a escolher entre o Pub/Sub e o Google Cloud Managed Service para Apache Kafka. O Pub/Sub e o serviço gerenciado para Apache Kafka são serviços de mensagens gerenciados e escalonáveis horizontalmente capazes de processar cargas de trabalho de alto volume.
Este documento é destinado a desenvolvedores, arquitetos ou tomadores de decisão que estão procurando um serviço gerenciado para processar dados de streaming e cargas de trabalho de mensagens.
Existem várias opções para executar o Apache Kafka, incluindo serviços de parceiros e softwares de código aberto autogerenciados. Este documento não aborda essas opções.
Para uma visão geral dos conceitos do Pub/Sub, consulte Visão geral do serviço do Pub/Sub.
Para uma visão geral dos conceitos do serviço gerenciado para Apache Kafka, consulte Visão geral do serviço gerenciado para Apache Kafka.
Facilidade operacional x portabilidade
A escolha entre o Pub/Sub e o serviço gerenciado para Apache Kafka é uma troca entre simplicidade operacional e portabilidade.
Simplicidade operacional do Pub/Sub
O Pub/Sub é um serviço totalmente gerenciado, sem servidor e distribuído globalmente que usa a infraestrutura Google Cloud . Ele é escalonado automaticamente para lidar com sua carga de trabalho, para que você não precise se preocupar com o gerenciamento da infraestrutura. O Pub/Sub ajusta dinamicamente a capacidade de tópicos e assinaturas individuais. Os editores e assinantes podem dimensionar de forma independente, não apenas em diferentes tópicos e assinaturas, mas também nos mesmos.
O Pub/Sub também transfere dados entre várias regiões. Isso significa que os editores e assinantes podem se conectar à região mais próxima, e o serviço cuida do restante.
O serviço gerenciado para Apache Kafka também pode processar grandes volumes de dados. No entanto, é necessário gerenciar o tamanho do cluster e configurar várias outras propriedades com base nas necessidades de escalonamento dos seus tópicos. O mais importante é considerar o número de partições a serem atribuídas aos seus temas. Muitas partições podem desperdiçar recursos. Partições insuficientes podem sobrecarregar os agentes no cluster do Kafka. Você também precisa considerar o número de réplicas que precisa configurar por partição, dependendo da latência e dos requisitos de fan-out do consumidor.
Como uma implantação do Kafka está vinculada a uma região especificada, se você mover dados entre regiões, esse movimento de dados precisa acontecer fora do serviço. Garantir a integridade contínua do movimento de dados e atender às necessidades dos tópicos no cluster do Kafka aumenta o trabalho operacional.
Portabilidade do serviço gerenciado para Apache Kafka
Embora o escalonamento automático e a distribuição global de dados do Pub/Sub facilitem a operação, as APIs do Apache Kafka são muito mais usadas.
Se você planeja usar sistemas de mensagens independentes em diferentes ambientes locais ou de provedor de nuvem, o serviço gerenciado para Apache Kafka pode oferecer uma experiência mais consistente nos seus aplicativos. Isso ocorre porque você pode padronizar o Kafka e usar a mesma API para se comunicar com o serviço do Kafka em cada ambiente.
Embora seja possível usar o Pub/Sub como um sistema de mensagens central em todos os seus ambientes, é importante lembrar que ele é um serviço distinto com a própria API. Se você precisar interagir com um sistema de mensagens para um ambiente específico, o uso do serviço gerenciado para Apache Kafka pode oferecer uma experiência de desenvolvimento mais unificada.
Qual serviço é ideal para você
Se a experiência consistente em diversos ambientes for fundamental, escolha o serviço gerenciado para Apache Kafka. Se o foco for a configuração mínima para dimensionar cargas de trabalho ou o movimento de dados entre regiões, o Pub/Sub oferece uma vantagem convincente.
Escolha o Pub/Sub se os seguintes fatores descreverem seus requisitos:
Você prioriza a simplicidade operacional no Google Cloud.
Você precisa de uma solução escalonável e sem servidor com gerenciamento de overhead mínimo.
Você tem tamanhos de carga de trabalho imprevisíveis ou variáveis. O Pub/Sub também funciona muito bem quando o throughput da carga de trabalho é estável.
Você precisa de rastreamento de processamento por mensagem para minimizar os efeitos do pipeline devido a mensagens inválidas únicas. O Pub/Sub, com filas de cartas mortas (DLQs, na sigla em inglês) integradas e suporte para processamento de mensagens fora de ordem, permite que seu sistema permaneça operacional mesmo ao encontrar mensagens problemáticas.
Você precisa de agregação de dados entre regiões.
Você precisa de escalonamento independente de editores e assinantes.
Escolha o serviço gerenciado para Apache Kafka se os seguintes fatores descreverem seus requisitos:
A portabilidade entre vários provedores de nuvem ou ambientes locais é essencial.
Você tem cargas de trabalho do Kafka que quer migrar para o Google Cloud. Para mais informações, consulte Escolher com base na configuração do Kafka.
Você tem um volume de tráfego consistente sem muita variação.
Você está disposto a lidar com o gerenciamento de capacidade.
Você precisa ordenar mensagens com alta capacidade de processamento por chave.
Você quer usar o padrão de origem de eventos com um registro de eventos como fonte da verdade.
Escolher com base na configuração atual do Kafka
Se você já usa o Kafka e procura uma solução gerenciada, segura e confiável no Google Cloud, o Managed Service para Apache Kafka é a escolha recomendada.
Se você já estiver executando o Kafka e quiser reescrever seus aplicativos para aproveitar os benefícios de um serviço global altamente dimensionável e com escalonamento automático, o Pub/Sub é uma boa recomendação. Para migrar do Kafka para o Pub/Sub, consulte Migrar do Kafka para o Pub/Sub.
Para novos trabalhos ou usuários que estão começando a transmitir no Google Cloud, o Pub/Sub é recomendado devido à facilidade de uso. Se você quiser mover suas cargas de trabalho do Kafka para a nuvem com poucas mudanças no código, o Managed Service para Apache Kafka é a escolha ideal.
Integração com produtos do Cloud
O serviço gerenciado do Google para Apache Kafka e o Pub/Sub se integram a vários Google Cloud serviços, como Dataflow, BigQuery, Cloud Storage e muito mais.
Se você precisar de uma estratégia multi-nuvem e priorizar a portabilidade em diferentes provedores de nuvem, o Managed Service para Apache Kafka oferece maior flexibilidade. Isso ocorre porque o Kafka se integra a uma gama mais ampla de sistemas fora do Google Cloud em comparação com o Pub/Sub.
Comparação do recurso
Se esses critérios de decisão de alto nível nas seções anteriores não ajudarem, você pode fazer uma escolha com base no suporte a recursos específicos. Para uma comparação detalhada entre os dois produtos, consulte a tabela a seguir.
Recurso | Pub/Sub | Serviço gerenciado para Apache Kafka |
---|---|---|
Facilidade de uso | Mais fácil de configurar e manter | Exige mais esforço operacional |
Modelo de custo | Pagamento por uso | Pagamento por capacidade para computação Pagamento por uso de rede e armazenamento. |
Processamento único | Oferece suporte a entrega única simultânea e semântica de confirmação forte. | Oferece suporte a efeitos colaterais exatamente uma vez ao ler de um tópico e gravar em outro. |
Escalonamento | Escalonamento automático contínuo de KBs para GBs por segundo por tópico, que funciona até mesmo para cargas de trabalho imprevisíveis. | Requer configuração manual |
Pedido de entrega | Oferece ordenação dentro de chaves. Capacidade de 1 MBps por chave de ordenação de granularidade fina |
Oferece ordenação dentro de partições. Ordenação por partição até a capacidade de transferência de uma partição. |
Retenção de dados | 31 dias | Retenção indefinida |
Latência de ponta a ponta | Latência de ponta a ponta normalmente na ordem de 100 milissegundos | Normalmente, cerca de 10 milissegundos para assinantes bem-comportados. |
Compatibilidade do Kafka de código aberto para elevação e deslocamento | Não | Sim |
Identity and Access Management e segurança | Sim | Sim |
Configuração automática de rede | Sim | Sim |
Multicloud: idêntico em todas as nuvens | Não | Sim |
SLA de disponibilidade | Sim | Sim |
SLA do plano de dados | Sim | Não no momento |
Geração de registros e monitoramento | Sim | Sim |
Reequilíbrio de partições entre agentes | Não relevante | Sim |
Capacidade automática | O Pub/Sub ajusta dinamicamente a capacidade com base na taxa de mensagens recebidas e na demanda do assinante. | O serviço gerencia a infraestrutura subjacente, como VMs e armazenamento. Você controla aspectos como o número de partições e o fator de replicação. |
Gerenciamento automático de armazenamento | Sim | Sim |
Upgrades automáticos de software | Sim | Sim |
Suporte ao cliente | Sim | Sim |
Serviço do Kafka Connect | Não relevante | Com serviços de conexão fornecidos pelo usuário |
Suporte a esquemas | Sim | Com o registro de esquema fornecido pelo usuário |
Compatível com ks qIDB, KSQL | Não | Sim |
Suporte para conectores de OSS | Sim, para os conectores Kafka e Flink | Não |
Integração com data lake e data warehouse | Sim | Sim |