Apache Kafka é uma conhecida plataforma de armazenamento de eventos e processamento de fluxo de código aberto e cresceu para se tornar o padrão de fato para streaming de dados. Neste artigo, o desenvolvedor Michael Burgess fornece uma visão sobre o conceito de esquemas e gerenciamento de esquemas como uma forma de agregar valor aos seus aplicativos orientados a eventos no serviço Kafka totalmente gerenciado, IBM Event Streams on IBM Cloud®.
O que é um esquema?
Um esquema descreve a estrutura dos dados.
Por exemplo:
Uma classe Java simples que modela um pedido de algum produto de uma loja online pode começar com campos como:
ordem de classe pública{ private String productName private String productCode private int quantidade (…) }
Se os objetos de pedido estivessem sendo criados usando esta classe e enviados para um tópico no Kafka, poderíamos descrever a estrutura desses registros usando um esquema como este esquema Avro:
{ “type”: “record”, “name”: “Pedido”, “campos”: ( {“name”: “productName”, “type”: “string”}, {“name”: “productCode”, ” tipo”: “string”}, {“nome”: “quantidade”, “tipo”: “int”} ) }
Por que você deve usar um esquema?
O Apache Kafka transfere dados sem validar as informações nas mensagens. Ele não tem nenhuma visibilidade sobre que tipo de dados estão sendo enviados e recebidos ou quais tipos de dados podem conter. Kafka não examina os metadados de suas mensagens.
Uma das funções do Kafka é dissociar o consumo e a produção de aplicativos, para que eles se comuniquem por meio de um tópico Kafka, e não diretamente. Isso permite que cada um trabalhe em seu próprio ritmo, mas ainda precisam concordar com a mesma estrutura de dados; caso contrário, os aplicativos consumidores não terão como desserializar os dados que recebem de volta em algo com significado. Todos os aplicativos precisam compartilhar as mesmas suposições sobre a estrutura dos dados.
No escopo do Kafka, um esquema descreve a estrutura dos dados em uma mensagem. Define os campos que precisam estar presentes em cada mensagem e os tipos de cada campo.
Isso significa que um esquema forma um contrato bem definido entre um aplicativo produtor e um aplicativo consumidor, permitindo que os aplicativos consumidores analisem e interpretem corretamente os dados nas mensagens que recebem.
O que é um registro de esquema?
Um registro de esquema oferece suporte ao cluster Kafka, fornecendo um repositório para gerenciar e validar esquemas nesse cluster. Ele atua como um banco de dados para armazenar seus esquemas e fornece uma interface para gerenciar o ciclo de vida do esquema e recuperá-los. Um registro de esquema também valida a evolução dos esquemas.
Otimize seu ambiente Kafka usando um registro de esquema.
Um registro de esquema é essencialmente um acordo da estrutura dos seus dados dentro do seu ambiente Kafka. Ao ter um armazenamento consistente dos formatos de dados em seus aplicativos, você evita erros comuns que podem ocorrer ao criar aplicativos, como baixa qualidade de dados e inconsistências entre os aplicativos de produção e consumo que podem eventualmente levar à corrupção de dados. Ter um registro de esquema bem gerenciado não é apenas uma necessidade técnica, mas também contribui para os objetivos estratégicos de tratar os dados como um produto valioso e ajuda tremendamente em sua jornada de dados como produto.
O uso de um registro de esquema aumenta a qualidade dos seus dados e garante que os dados permaneçam consistentes, aplicando regras para a evolução do esquema. Assim, além de garantir a consistência dos dados entre as mensagens produzidas e consumidas, um registro de esquema garante que suas mensagens permanecerão compatíveis à medida que as versões do esquema mudam ao longo do tempo. Ao longo da vida de uma empresa, é muito provável que o formato das mensagens trocadas pelas aplicações que suportam a empresa precise de mudar. Por exemplo, a classe Order no esquema de exemplo que usamos anteriormente pode ganhar um novo campo de status – o campo de código do produto pode ser substituído por uma combinação de número de departamento e número de produto, ou alterações semelhantes. O resultado é que o esquema dos objetos em nosso domínio de negócios está em constante evolução e, portanto, você precisa ser capaz de garantir a concordância sobre o esquema das mensagens em qualquer tópico específico, a qualquer momento.
Existem vários padrões para evolução do esquema:
Compatibilidade futura: onde os aplicativos produtores podem ser atualizados para uma nova versão do esquema e todos os aplicativos consumidores poderão continuar a consumir mensagens enquanto aguardam a migração para a nova versão. Compatibilidade com versões anteriores: onde os aplicativos de consumo podem ser migrados primeiro para uma nova versão do esquema e podem continuar a consumir mensagens produzidas no formato antigo enquanto os aplicativos de produção são migrados. Compatibilidade total: quando os esquemas são compatíveis com versões anteriores e futuras.
Um registro de esquema é capaz de impor regras para evolução de esquema, permitindo garantir compatibilidade direta, retroativa ou total de novas versões de esquema, evitando a introdução de versões de esquema incompatíveis.
Ao fornecer um repositório de versões de esquemas usados em um cluster Kafka, passados e presentes, um registro de esquema simplifica a adesão à governança de dados e às políticas de qualidade de dados, pois fornece uma maneira conveniente de rastrear e auditar alterações nos formatos de dados do seu tópico.
Qual é o próximo?
Em resumo, um registro de esquema desempenha um papel crucial no gerenciamento da evolução do esquema, no controle de versões e na consistência dos dados em sistemas distribuídos, apoiando, em última análise, a interoperabilidade entre diferentes componentes. O Event Streams on IBM Cloud fornece um Schema Registry como parte de seu plano Enterprise. Garanta que seu ambiente esteja otimizado utilizando esse recurso na oferta Kafka totalmente gerenciada no IBM Cloud para construir aplicativos inteligentes e responsivos que reagem a eventos em tempo real.
Provisione uma instância do Event Streams no IBM Cloud aqui. Aprenda como usar o registro de esquema do Event Streams aqui. Saiba mais sobre o Kafka e seus casos de uso aqui. Para quaisquer desafios de configuração, consulte nosso Guia de primeiros passos e perguntas frequentes.