Arquitetura Empresarial Apache Kafka

8 out 2020 | Apache Kafka, Banco de Dados, Kafka, Kafka Resources

Em suma, o Apache Kafka é uma plataforma de streaming de código aberto. Assim sendo, foi projetado para fornecer todos os componentes necessários para o gerenciamento de fluxos de dados. Entretanto, o desenvolvimento de soluções de nível corporativo exige que você cubra uma variedade de aspectos.
Já abordamos seus componentes com mais detalhes em neste artigo e neste outro. Portanto, vamos resumir rapidamente sobre o propósito central de cada um.

Componentes Básicos Apache Kafka

Kafka Broker: é o principal componente para armazenar e mensagens do Apache Kafka. Assim, servidores que executam o Kafka Cluster são chamados de Brokers. Aliás, o Kafka Broker usa o Zookeeper, que é um componente obrigatório em todo Apache Kafka Cluster.

Kafka Clients: atuam em aplicações que produzem e consomem mensagens. Dessa forma, o Apache Kafka fornece um conjunto de APIs de produtor e consumidor, que permitem que aplicações enviem e recebam, de maneira contínua, fluxos de dados através dos Kafka Brokers.

Kafka Connect: é baseado nos componentes principais do Kafka. Sobretudo, inclui vários conectores prontos para uso, para mover dados entre o Kafka Broker e outras aplicações. Então, você não precisa escrever código ou fazer alterações em suas aplicações, pois são conectores puramente baseados em configurações. Além disso, o Kafka Connect também permite desenvolver seus próprios conectores Source e Sink, de maneira personalizada e rápida.

Kafka Streams: é uma poderosa biblioteca de processamento de stream, incluída a partir da versão 0.10 do Kafka. Desse modo, permite que os desenvolvedores estendam suas aplicações padrão de modo a consumir, processar e produzir novos fluxos de dados. Ademais, Kafka Streams é capaz de lidar, automaticamente, com balanceamento de carga e failover.

Do que mais você precisa?

Mesmo que os componentes sejam bons o suficiente para sistemas, só atendem empresas de pequeno e médio porte. Ou seja, não têm capacidade para atender aos requisitos de nível corporativo. De fato, uma aplicação desse nível pode precisar de muitas outras ferramentas e recursos, tais como:
  1. Gerenciamento de Esquema
  2. Interface REST
  3. Interface MQTT
  4. Balanceamento automático
  5. Operações e Controle
Arquitetura Empresarial Kafka em Grandes Empresas
Arquitetura Empresarial Apache Kafka

Gerenciamento de Esquema

Em quase todos os casos, ao lidar com dados não estruturados, em algum ponto do pipeline de dados você precisará extrair algumas informações, para usá-las mais adiante. Entretanto, não importa a complexidade, cada sistema terá alguns dados estruturados em seu pipeline. Como resultado, esses dados estruturados também terão um esquema. Acima de tudo, não importa se o esquema é de leitura ou registro, os dados do pipeline fluem de um sistema para outro.
Mas, como você propaga o esquema pelo pipeline? Por certo, cada sistema que faz parte do pipeline de dados deve conhecer o esquema. Sem isso, não será capaz de entender os bytes brutos do fluxo de dados. Portanto, você terá duas alternativas para resolver este problema.

Alternativa 1: incluir o esquema com dados

Em princípio, essa não é uma boa opção. Já que incluir o esquema com cada registro aumentará significativamente o tamanho dos dados. Por exemplo, você não está enviando apenas um arquivo e não pode incluir uma linha de cabeçalho para definir o esquema para todas as outras linhas. Mas sim, envia um fluxo de dados e não tem a opção de incluir uma linha de cabeçalho. Assim, você não pode adicionar o esquema com cada linha, pois isso aumentará o tamanho dos dados.

Alternativa 2: colocar o esquema em um local central

Em resumo, manter seu esquema em local central é uma solução excelente. Porém, você precisa ter um registro de esquema para armazenar e servir seus metadados. Além disso, esse registro deve ser capaz de suportar a evolução do esquema e salvar várias versões. Por fim, a solução de registro de esquema deve ser totalmente integrada à sua aplicação Kafka, para simplificar a serialização ou não de suas mensagens.

Interface REST

Decerto, algumas aplicações podem aproveitar o protocolo RESTful HTTP, a fim de produzir e consumir mensagens de e para seus Kafka Brokers. Mas, pode não ser possível usar APIs nativas do Kafka Client em todas as aplicações. Em tais requisitos, pode ser necessário implementar um servidor HTTP, para fornecer uma interface RESTful a um Kafka Cluster. Aliás, o servidor RESTful é normalmente implantado em um conjunto separado de máquinas.
Contudo, você tem muitas aplicações produtoras e consumidoras interagindo com o REST e precisa de alta disponibilidade. Então, é recomendado implementar vários servidores REST Proxy atrás de um balanceador de carga. Dessa forma, ao usar a API de consumidor de alto nível, é importante direcionar todas as solicitações para o mesmo consumidor ao mesmo servidor REST Proxy.

Interface MQTT

Talvez você tenha dispositivos IoT que enviam dados para seus Kafka Brokers. No entanto, é necessário suportar o protocolo MQTT para que isso seja possível.
MQTT é um protocolo de conectividade IoT, do tipo máquina para máquina (M2M). Sem dúvida, foi projetado para transportar mensagens de publicação e assinatura, sendo extremamente leve como o Apache Kafka. Nesse sentido, o MQTT é útil para conectar locais remotos, onde uma pequena área de cobertura de código é necessária e a largura de banda da rede é escassa. Assim, você tem a opção de implementar um MQTT Broker e usar o Kafka MQTT Connect para trazer os dados para o Kafka Broker. Ao mesmo tempo, de forma alternativa, você consegue implementar o Confluent MQTT Proxy para evitar MQTT Brokers intermediários.

Balanceamento Automático

Seja como for, você pode começar com um pequeno Kafka Cluster. Então, para escalá-lo horizontalmente, pode adicionar depois alguns novos Brokers. Nesse sentido, pode ser necessário mover algumas partições de Brokers existentes para os recém-incluídos, a fim de equilibrar a carga entre eles. Dessa forma, você precisa de uma solução ideal para lidar com esse requisito e ajudar a dimensionar os Kafka Clusters.

Operações e Controle

Antes de mais nada, Apache Kafka Cluster é o núcleo de sua infraestrutura de streaming. Portanto, você precisará de alguma aplicação para monitorar seu cluster, pipeline de dados de produção e aplicações de streaming. Afinal, é vital ser capaz de rastrear seus fluxos de dados de ponta a ponta, do produtor ao consumidor.
Por fim, você será capaz de verificar se todas as mensagens enviadas são recebidas, além de medir o desempenho do sistema de ponta a ponta. Ademais, também terá informações para entender melhor o uso do cluster e identificar quaisquer problemas. Além disso, você poderá configurar alertas para notificar sua equipe, toda vez que o desempenho de ponta a ponta não corresponder aos SLAs.

Conte com o Kafka

Em conclusão, os principais componentes ​​para uma implantação corporativa do Kafka, como o Kafka Broker, Kafka Client, Kafka Connect API e Kafka Streams, são fundamentais para desenvolver uma plataforma completa. Porém, vimos que essas soluções atuam bem em empresas de pequeno e médio porte.
Sem dúvida, para ir além em grandes corporações, seus requisitos de sistemas podem se beneficiar com ferramentas e recursos Kafka adicionais. Em resumo, com o Gerenciamento de Esquemas, você lida com dados estruturados. Já com a Interface REST, você pode atuar com Kafka Brokers para produzir e consumir mensagens. Além disso, com a Interface MQTT, você conecta locais remotos, ao passo que o Balanceamento Automático equilibra e dimensiona Kafka Clusters. Por fim, com Operações e Controle, você terá a monitoração adequada de seu cluster. Dessa maneira, grandes corporações serão atendidas da melhor forma possível.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Share This