Este documento oferece orientações para escolher entre o Pub/Sub e o Google Cloud Managed Service para Apache Kafka. O Pub/Sub e o Managed Service for Apache Kafka são serviços de mensagens geridos e escaláveis horizontalmente capazes de processar cargas de trabalho de grande volume.
Este documento destina-se a programadores, arquitetos ou decisores que procuram um serviço gerido 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 software de código aberto autogerido. Este documento não aborda essas opções.
Para uma vista geral dos conceitos do Pub/Sub, consulte o artigo Vista geral do serviço Pub/Sub.
Para uma vista geral dos conceitos do Managed Service for Apache Kafka, consulte o artigo Vista geral do Managed Service for Apache Kafka.
Facilidade de utilização versus portabilidade
A escolha entre o Pub/Sub e o Managed Service for Apache Kafka é uma troca entre a simplicidade operacional e a portabilidade.
Simplicidade operacional do Pub/Sub
O Pub/Sub é um serviço totalmente gerido, sem servidor e distribuído globalmente que usa a infraestrutura Google Cloud . É dimensionado automaticamente para processar a sua carga de trabalho, pelo que não tem de se preocupar com a gestão da infraestrutura. O Pub/Sub ajusta dinamicamente a capacidade para tópicos e subscrições individuais. Os publicadores e os subscritores podem ser dimensionados de forma independente, não só em diferentes tópicos e subscrições, mas também nos mesmos.
O Pub/Sub também move dados facilmente em várias regiões. Isto significa que os publicadores e os subscritores podem ligar-se à região mais próxima, e o serviço trata do resto.
O Managed Service for Apache Kafka também pode processar grandes volumes de dados. No entanto, tem de gerir o tamanho do cluster e configurar várias outras propriedades com base nas necessidades de escalabilidade dos seus tópicos. Mais importante ainda, tem de considerar o número de partições a atribuir aos seus tópicos. Demasiadas partições podem desperdiçar recursos. Um número demasiado baixo de partições pode sobrecarregar os agentes no seu cluster Kafka. Também tem de considerar o número de réplicas que tem de configurar por partição, consoante os requisitos de latência e de distribuição dos consumidores.
Uma vez que uma implementação do Kafka está associada a uma região especificada, se mover dados entre regiões, essa movimentação de dados tem de ocorrer fora do serviço. Garantir a continuidade do estado de funcionamento da movimentação de dados e satisfazer as necessidades dos tópicos no seu cluster do Kafka aumenta o seu trabalho operacional.
Portabilidade do Managed Service for Apache Kafka
Embora o escalamento 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 amplamente adotadas.
Se planeia usar sistemas de mensagens independentes em diferentes ambientes nas instalações ou de fornecedores de nuvem, o Managed Service for Apache Kafka pode oferecer-lhe uma experiência mais consistente nas suas aplicações. Isto acontece porque pode padronizar o Kafka e usar a mesma API para comunicar com o serviço Kafka em cada ambiente.
Embora possa usar o Pub/Sub como um sistema de mensagens central em todos os seus ambientes, é importante lembrar que é um serviço distinto com a sua própria API. Se precisar de interagir com um sistema de mensagens para um ambiente específico, a utilização do Managed Service for Apache Kafka pode oferecer uma experiência de desenvolvimento mais unificada.
Que serviço é adequado para si
Se uma experiência consistente em diversos ambientes for fundamental, escolha o Managed Service para Apache Kafka. Se o seu 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 significativa.
Escolha o Pub/Sub se os seguintes fatores descreverem os seus requisitos:
Prioriza a simplicidade operacional no Google Cloud.
Precisa de uma solução escalável e sem servidor com gestão de despesas gerais mínima.
Tem tamanhos de carga de trabalho imprevisíveis ou variáveis. O Pub/Sub também funciona muito bem quando o débito da carga de trabalho é estável.
Precisa de acompanhamento do processamento por mensagem para minimizar os efeitos do pipeline devido a mensagens únicas inválidas. O Pub/Sub, com as respetivas filas de mensagens rejeitadas (DLQs) incorporadas e o suporte para o processamento de mensagens fora de ordem, permite que o seu sistema permaneça operacional mesmo quando encontra mensagens problemáticas.
Precisa de agregação de dados entre regiões.
Precisa de uma expansão independente de publicadores e subscritores.
Escolha o Managed Service for Apache Kafka se os seguintes fatores descreverem os seus requisitos:
A portabilidade em vários fornecedores de nuvem ou ambientes nas instalações é fundamental.
Tem cargas de trabalho do Kafka existentes que quer migrar para o Google Cloud. Para mais informações, consulte o artigo Escolha com base na configuração do Kafka existente.
Tem um volume de tráfego consistente sem muita variação.
Pode gerir a capacidade.
Precisa de ordenação de mensagens com um débito elevado por chave.
Quer usar o padrão de origem de eventos com um registo de eventos como fonte de verdade.
Escolha com base na configuração do Kafka existente
Se já estiver a usar o Kafka e procurar uma solução gerida, segura e fiável no Google Cloud, o Managed Service for Apache Kafka é a escolha recomendada.
Se já estiver a executar o Kafka e quiser reescrever as suas aplicações para usufruir das vantagens de um serviço global altamente escalável e com escalamento automático, o Pub/Sub é uma boa recomendação. Para migrar do Kafka para o Pub/Sub, consulte o artigo Migrar do Kafka para o Pub/Sub.
Para novas cargas de trabalho ou utilizadores que estão a começar a usar o streaming no Google Cloud, o Pub/Sub é recomendado devido à sua facilidade de utilização. Se quiser mover as suas cargas de trabalho do Kafka existentes para a nuvem com o mínimo de alterações ao código, o Managed Service for Apache Kafka é a escolha ideal.
Integração com produtos Cloud
O Google Managed Service para Apache Kafka e o Pub/Sub integram-se com vários Google Cloud serviços, como o Dataflow, o BigQuery, o Cloud Storage e muito mais.
Se precisar de uma estratégia multicloud e priorizar a portabilidade entre diferentes fornecedores de nuvem, o Managed Service for Apache Kafka oferece maior flexibilidade. Isto deve-se ao facto de o Kafka se integrar com uma gama mais ampla de sistemas fora do Google Cloud em comparação com o Pub/Sub.
Comparação de funcionalidades
Se estes critérios de decisão de nível superior nas secções anteriores não ajudarem, pode fazer uma escolha com base no suporte de funcionalidades específicas. Para uma comparação detalhada entre os dois produtos, consulte a tabela seguinte.
Funcionalidade | Pub/Sub | Serviço gerido para Apache Kafka |
---|---|---|
Facilidade de utilização | Mais fácil de configurar e manter | Requer mais esforço operacional |
Modelo de custo | Pagamento por utilização | Pagamento por capacidade de computação Pagamento por utilização para rede e armazenamento. |
Processamento exatamente uma vez | Suporta a entrega simultânea única e uma semântica de confirmação forte. | Suporta efeitos secundários exatamente uma vez ao ler de um tópico e escrever noutro. |
Dimensionar | Escala automática integrada de KBs para GBs por segundo por tópico que funciona mesmo para cargas de trabalho imprevisíveis. | Requer configuração manual |
Entrega pedida | Oferece a possibilidade de fazer encomendas com chaves. Débito de 1 MBps por chave de ordenação detalhada |
Permite a ordenação de ofertas dentro de partições. Ordenação por partição até à capacidade de débito de uma partição. |
Retenção de dados | 31 dias | Retenção indefinida |
Latência ponto a ponto | Latência ponto a ponto normalmente na ordem dos 100 milissegundos | Normalmente, na ordem dos 10 milissegundos para subscritores com bom comportamento. |
Compatibilidade com Kafka de código aberto para migração | Não | Sim |
Gestão de identidade e de acesso e segurança | Sim | Sim |
Configuração automática da rede | Sim | Sim |
Várias nuvens: idêntico em todas as nuvens | Não | Sim |
SLA de tempo de atividade | Yes | Sim |
SLA do plano de dados | Yes | Neste momento, não |
Registo e monitorização | Sim | Sim |
Reequilíbrio de partições entre agentes | Não aplicável | Sim |
Capacidade automática | O Pub/Sub ajusta dinamicamente a capacidade com base na taxa de mensagens recebidas e na procura dos subscritores. | O serviço gere a infraestrutura subjacente, como VMs e armazenamento. Controla aspetos como o número de partições e o fator de replicação. |
Gestão de armazenamento automática | Sim | Sim |
Atualizações automáticas de software | Sim | Sim |
Apoio ao cliente | Sim | Sim |
Serviço Kafka Connect | Não aplicável | Com serviços Connect fornecidos pelos utilizadores |
Suporte de esquemas | Sim | Com o registo de esquemas fornecido pelo utilizador |
Compatível com ks qIDB e KSQL | Não | Sim |
Suporte para conetores OSS | Sim, para conetores do Kafka e Flink | Não |
Integração com o lago de dados e o armazém de dados | Sim | Sim |