Un Google Cloud recurso es cualquier componente que creas o usas dentro de el Google Cloud. Estos recursos forman los componentes básicos de tus aplicaciones y sistemas que se ejecutan en la plataforma.
Los recursos de Managed Service para Apache Kafka incluyen lo siguiente:
Clúster
Tema
Grupo de consumidores
ACL
Registro de esquemas
Contexto (dentro de un registro de esquemas)
Asunto (dentro de un registro de esquemas o contexto)
Versión (versiones de un esquema en un asunto)
Esquema (identificado por ID, asociado con uno o varios asuntos y versiones)
Para obtener más información sobre la asignación de nombres de recursos generales Google Cloud , consulta Nombres de recursos. La API de registro de esquemas para Managed Service para Apache Kafka se diseñó para la compatibilidad con una API de código abierto existente, por lo que algunas convenciones de nombres podrían diferir de los estándares típicos de la API.
Formato de asignación de nombres de recursos
Estos son los formatos para los diferentes recursos:
Clúster:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}Tema:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/topics/{TOPIC_ID}Grupo de consumidores:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/consumerGroup/{CONSUMER_GROUP_ID}LCA:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/acl/{ACL_ID}Registro de esquemas:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}Contexto:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}Asunto:
- Dentro del contexto predeterminado:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/subjects/{SUBJECT_ID} - Dentro de un contexto específico:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/subjects/{SUBJECT_ID}
- Dentro del contexto predeterminado:
Esquema (identificado por ID):
- Dentro del contexto predeterminado:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/schemas/ids/{SCHEMA_ID} - Dentro de un contexto específico:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/schemas/ids/{SCHEMA_ID}
- Dentro del contexto predeterminado:
Versión (identificada por el número de versión en un asunto):
- Dentro del contexto predeterminado:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/subjects/{SUBJECT_ID}/versions/{VERSION_ID} - Dentro de un contexto específico:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/subjects/{SUBJECT_ID}/versions/{VERSION_ID}
- Dentro del contexto predeterminado:
A continuación, se incluye un desglose de cada componente en las siguientes secciones.
ID del proyecto
El valor debe ser el ID del proyecto o el número del proyecto, disponible en
la Google Cloud consola. Por ejemplo, my-cool-project es un ID del proyecto, mientras que 123456789123 es un número del proyecto.
Ubicación
El valor debe ser una de las ubicaciones compatibles de Managed Service para Apache Kafka. Para ver la lista de ubicaciones disponibles, consulta Ubicaciones de Managed Service para Apache Kafka.
ID
ID es el segmento final en la ruta del recurso. Las variables como
{CLUSTER_ID}, {TOPIC_ID}, {CONSUMER_GROUP_ID},
{SCHEMA_REGISTRY_ID}, {CONTEXT_ID} y
{SUBJECT_ID} deben cumplir con los siguientes lineamientos:
No comenzar con la cadena
googComenzar con una letra
Restricciones de longitud:
IDs de clúster: Contienen entre 3 y 53 caracteres.
IDs de tema y grupo de consumidores: Cualquier longitud permitida por Apache Kafka. Los nombres de temas de Apache Kafka están limitados a 249 caracteres.
ID de registro de esquemas: Contiene hasta 255 caracteres.
ID de contexto: Contiene hasta 255 caracteres.
ID de asunto: Contiene hasta 255 bytes UTF-8.
Restricciones de caracteres:
IDs de clúster: Deben coincidir con la regex
^[a-z]([-a-z0-9]*[a-z0-9])?. Esto significa letras minúsculas, números y guiones. Debe comenzar con una letra y no puede terminar en un guion.IDs de tema y grupo de consumidores: Kafka realiza la validación. Los caracteres permitidos son `[a-zA-Z0-9.-], que incluye caracteres alfanuméricos ASCII, puntos (.), guiones bajos () y guiones (-).
ID de registro de esquemas: Letras (mayúsculas o minúsculas), números y guiones bajos
_.ID de contexto: Letras (mayúsculas o minúsculas), números y los siguientes caracteres especiales: guiones
-, puntos., guiones bajos_, virgulillas~, porcentajes%o signos de suma+.ID de asunto: Letras (mayúsculas o minúsculas), números y los siguientes caracteres especiales: guiones
-, puntos., guiones bajos_, virgulillas~, porcentajes%o signos de suma+.
Caracteres especiales
Puedes usar los caracteres especiales que se enumeran en la sección anterior en los IDs de recursos sin codificación de URL. Sin embargo, debes asegurarte de que cualquier otro carácter especial esté codificado o decodificado de forma correcta cuando se use en URLs.
Por ejemplo, mi-tópico es un ID no válido si ó no es un carácter permitido
para ese tipo de ID de recurso específico. Sin embargo, mi-topico sería válido si solo se permiten letras latinas básicas. Este formato es importante cuando se realizan llamadas de REST.
Si haces referencia a un tema desde las bibliotecas cliente de Kafka, no se usa la ruta de acceso completa del recurso. Solo se usa el nombre del tema. Del mismo modo, cuando interactúas con esquemas mediante integraciones de clientes de Kafka, como serializadores o deserializadores, por lo general, usas el nombre del asunto en lugar de la ruta de acceso completa del recurso.
Estrategias de asignación de nombres de asuntos
Cuando se trabaja con el registro de esquemas, en especial con las integraciones de clientes de Kafka, como serializadores y deserializadores, el nombre del asunto es fundamental. La estrategia de asignación de nombres de asuntos determina cómo se registra y recupera un esquema del registro de esquemas. Las diferentes estrategias ofrecen distintos niveles de flexibilidad y control sobre la evolución del esquema.
Para configurar la estrategia de asignación de nombres de asuntos, establece la propiedad key.subject.name.strategy o value.subject.name.strategy en la configuración del cliente de Kafka.
TopicNameStrategy
Esta es la estrategia predeterminada para las bibliotecas cliente de Kafka de código abierto.
El nombre del asunto se deriva directamente del nombre del tema de Kafka, al que se le agrega key para las claves de mensajes o value para los valores de mensajes. Si auto.register.schema
se establece en true, los clientes productores usan topicName-value o topicName-key
para un tema llamado topicName.
Estos son algunos ejemplos:
- Nombre del tema:
orders - Asunto para valores de mensajes:
orders-value - Asunto para claves de mensajes:
orders-key
La siguiente es una lista de ventajas de usar TopicNameStrategy:
Es una estrategia sencilla, lo que la hace adecuada para muchos casos de uso.
Los esquemas están vinculados directamente a un tema, lo que te permite desarrollar los tipos de registros dentro de un solo tema de forma independiente.
La siguiente es una lista de desventajas de usar TopicNameStrategy:
- Cada tema solo puede controlar de manera efectiva un tipo de mensaje que se basa en el esquema de valores. Esto se debe a que el nombre del asunto está fijo al nombre del tema. Si necesitas enviar diferentes tipos de registros al mismo tema, esta estrategia no funcionará.
RecordNameStrategy
Esta estrategia usa el nombre de clase completamente calificado del registro de Avro o Protobuf como el nombre del asunto.
Estos son algunos ejemplos:
- Nombre del esquema de Avro:
com.example.data.Customer - Nombre del mensaje de Protobuf:
com.example.data.Order - Asunto para el esquema
customer:com.example.data.Customer - Asunto para el esquema
order:com.example.data.Order
La siguiente es una lista de ventajas de usar RecordNameStrategy:
Como el nombre del asunto no está vinculado al tema, puedes enviar diferentes tipos de registros al mismo tema de Kafka. Esto es posible siempre que cada tipo de registro tenga su propio nombre completamente calificado único y el esquema correspondiente registrado.
Se puede usar un esquema para un tipo de registro específico, como
com.example.common.Address, en varios temas, y su evolución se administra de forma centralizada en un solo asunto.
La siguiente es una lista de desventajas de usar RecordNameStrategy:
- Debes usar el mismo asunto y la misma versión para todos los temas que usan un tipo de registro en particular. Esto puede ser restrictivo si necesitas diferentes versiones del mismo tipo de registro en diferentes temas.
TopicRecordNameStrategy
Esta estrategia combina aspectos de TopicNameStrategy y RecordNameStrategy.
El nombre del asunto es una combinación del nombre del tema de Kafka y el nombre de clase completamente calificado del registro, con el formato TOPIC_NAME-FULLY_QUALIFIED_CLASS_NAME.
Estos son algunos ejemplos:
Tema:
user-eventsNombre completamente calificado:
com.example.events.PageViewNombre del asunto para esta combinación:
user-events-com.example.events.PageViewOtro tema:
product-interactionsNombre completamente calificado:
com.example.events.PageViewNombre del asunto para esta combinación:
product-interactions-com.example.events.PageView
La siguiente es una lista de ventajas de usar TopicRecordNameStrategy:
De manera similar a
RecordNameStrategy, puedes enviar diferentes tipos de registros al mismo tema.A diferencia de
RecordNameStrategy, esta estrategia te permite desarrollar el esquema para un tipo de registro específico de forma independiente dentro de cada tema. Esto significa quemy-topic-com.example.project.MyRecordpuede evolucionar de manera diferente queanother-topic-com.example.project.MyRecord.
La siguiente es una lista de desventajas de usar TopicRecordNameStrategy:
- Los nombres de los asuntos pueden volverse bastante largos debido a la combinación del nombre del tema y el nombre del registro completamente calificado.