Comparteix a través de


Registro de esquema en Azure Event Hubs

El Registro de esquemas de Azure Event Hubs tiene muchas ventajas. El Registro de esquemas ayuda a mantener la coherencia de los datos, simplificar la evolución del esquema, mejorar la interoperabilidad y reducir el esfuerzo de desarrollo en flujos de trabajo de streaming de eventos y acoplados de forma flexible. Las organizaciones distribuidas de gran tamaño que emplean un repositorio centralizado para esquemas pueden usar el Registro de esquemas para lograr un procesamiento y gobernanza de datos altamente confiables con poca sobrecarga operativa.

El Registro de esquemas de Azure Event Hubs cumple varios roles en escenarios de streaming de eventos controlados por esquemas:

  • Proporciona un repositorio donde se pueden registrar, administrar y evolucionar varios esquemas
  • Administración de la evolución del esquema con varias reglas de compatibilidad
  • Realizar la validación de datos para todos los datos esquematizados
  • Proporcionar bibliotecas del lado cliente (serializadores y deserializadores) para productores y consumidores
  • Mejorar la eficacia del rendimiento de la red pasando el identificador de esquema en lugar de la definición de esquema para cada carga

Los registros de esquema de Azure Event Hubs se admiten en los niveles Estándar, Premium y Dedicado.

Componentes del registro de esquema

El registro de esquema forma parte del espacio de nombres de Event Hubs, pero también se puede usar con otros agentes de eventos o mensajes, incluidos los servicios de mensajería de Azure. Consta de varios grupos de esquemas que actúan como una agrupación lógica de esquemas y se pueden administrar independientemente de otros grupos de esquemas.

Diagrama que muestra las componentes del registro de esquema en Azure Event Hubs.

Esquemas

En cualquier sistema acoplado flexiblemente, varias aplicaciones se comunican, principalmente a través de datos. Los esquemas definen la estructura de los datos de forma declarativa. Como resultado, el contrato entre las aplicaciones de productor y consumidor está bien definido, lo que garantiza un procesamiento confiable a escala.

Una definición de esquema incluye:

  • Campos: elementos de datos individuales, como el nombre, el título del libro o la dirección.
  • Tipos de datos: tipo de datos que se pueden almacenar, como cadena, fecha y hora o matriz.
  • Estructura: cómo se organizan los campos, como estructuras anidadas o matrices.

Los esquemas definen el contrato entre productores y consumidores. Un esquema definido en un registro de esquema de Event Hubs ayuda a administrar el contrato fuera de los datos de eventos, lo que elimina la sobrecarga.

Formatos de esquema

Los formatos de esquema se usan para determinar la manera en que un esquema está estructurado y definido. Cada formato describe directrices y sintaxis específicas para definir la estructura de los eventos que se usan para el streaming de eventos.

Esquema de Avro

Apache Avro es un sistema popular de serialización de datos que usa un formato binario compacto y proporciona funcionalidades de evolución de esquemas.

Para obtener más información sobre el uso del formato de esquema de Avro con el registro de esquema de Event Hubs, consulte:

Esquema JSON

Un esquema JSON (notación de objetos JavaScript) es una manera estandarizada de definir la estructura y los tipos de datos de los eventos. Un esquema JSON permite el uso seguro y confiable del formato de datos JSON en el streaming de eventos.

Para más información sobre el uso del formato de esquema JSON con un registro de esquemas de Event Hubs, consulte Uso de un registro de esquema con Kafka y el esquema JSON.

Búferes de protocolo

Búferes de protocolo (Protobuf) es un mecanismo extensible independiente del lenguaje, independiente de la plataforma, para serializar datos estructurados. Se usa para definir eficazmente estructuras de datos y serializarlas en un formato binario compacto.

Grupos de esquemas

Los grupos de esquemas son grupos lógicos de esquemas similares que se organizan según los criterios empresariales. Un grupo de esquemas contiene:

  • Varias definiciones de esquemas.
  • Varias versiones de un esquema específico.
  • Metadatos relacionados con el tipo de esquema y la compatibilidad de todos los esquemas del grupo.

Los grupos de esquemas se pueden considerar como un subconjunto del registro de esquemas, alineados con una aplicación determinada o unidad organizativa, con un modelo de autorización independiente. Este límite de seguridad adicional garantiza que en el modelo de servicios compartidos, los metadatos y los secretos comerciales no se filtren. También permite a los propietarios de aplicaciones administrar esquemas independientes de otras aplicaciones que comparten el mismo espacio de nombres.

Evolución del esquema

Los esquemas deben evolucionar con el requisito empresarial de productores y consumidores. El registro de esquema admite la evolución del esquema mediante la introducción de modos de compatibilidad a nivel de grupo de esquemas. Al crear un grupo de esquemas, puede especificar el modo de compatibilidad de los esquemas que incluya en ese grupo. Al actualizar un esquema, el cambio debe cumplir con el modo de compatibilidad asignado y, así, solo se crea una nueva versión del esquema.

La evolución del esquema solo se admite para el formato de esquema Avro.

El Registro de esquemas se admite en los siguientes modos de compatibilidad.

Compatibilidad con versiones anteriores

El modo de compatibilidad con versiones anteriores permite que el código de consumidor use una nueva versión del esquema, pero se pueden procesar mensajes con una versión anterior del esquema. El modo de compatibilidad con versiones posteriores permite realizar los siguientes cambios en un esquema:

  • Eliminación de campos
  • Agregar campos opcionales

Compatibilidad con versiones posteriores

La compatibilidad con versiones posteriores permite que el código de consumidor use una versión anterior del esquema y lea mensajes con el nuevo esquema. El modo de compatibilidad con versiones posteriores permite realizar los siguientes cambios en un esquema:

  • Adición de campos
  • Eliminar campos opcionales

Sin compatibilidad

Cuando se usa el modo de compatibilidad None, el registro de esquema no comprueba la compatibilidad al actualizar los esquemas.

SDK de cliente

Puede usar una de las siguientes bibliotecas para incluir un serializador Avro. Puede usar serializadores avro para serializar y deserializar cargas que contienen identificadores de esquema para el registro de esquema y datos codificados en Avro:

Lenguaje de programación SDK Ejemplos
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro Ejemplos de .NET
Java azure-data-schemaregistry-avro Ejemplos de Java
Python azure-schemaregistry-avroserializer Ejemplos de Python
JavaScript @azure/schema-registry-avro Ejemplos de NodeJS

Además, las bibliotecas siguientes también están disponibles en función de las cargas de trabajo.

Límites

Para conocer los límites (como el número de esquemas que puede usar en un espacio de nombres) de Event Hubs, consulte Cuotas y límites de Event Hubs.

Control de acceso basado en rol de Azure

Para acceder a un registro de esquema mediante programación, siga estos pasos:

  1. Registre la aplicación en Microsoft Entra ID.
  2. Agregue la entidad de seguridad de la aplicación a uno de los siguientes roles de control de acceso basado en rol (RBAC) de Azure en el nivel de espacio de nombres.
Role Descripción
Propietario Leer, escribir y eliminar esquemas y grupos del registro de esquemas
Colaborador Leer, escribir y eliminar esquemas y grupos del registro de esquemas
Lector del registro de esquema Leer y enumerar grupos y esquemas del registro de esquemas
Colaborador del registro de esquema Leer, escribir y eliminar esquemas y grupos del registro de esquemas

Para obtener información sobre cómo crear y registrar una aplicación mediante Azure Portal, consulte Registro de una aplicación con Microsoft Entra ID. Necesita el identificador de cliente (id. de aplicación), el identificador de inquilino y el secreto que se va a usar en el código.