模式注册表的工作原理 - Amazon连接词
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

模式注册表的工作原理

本节介绍了架构注册表中的序列化和反序列化过程的工作原理。

  1. 注册模式:如果模式在注册表中尚不存在,则可以使用与目标名称相同的架构名称(例如,test_topic、test_stream、prod_firehose)注册模式,或者生产者可以为架构提供自定义名称。生产者还可以将键值对作为元数据添加到架构中,例如源:MSK_kafka_TOPIC_A,或者在架构创建时将 AWS 标签应用于架构。模式注册后,模式注册表将向序列化程序返回架构版本 ID。如果架构存在,但序列化程序使用的是不存在的新版本,则架构注册表将检查架构引用兼容性规则,以确保新版本兼容,然后再将其注册为新版本。

    注册模式有两种方法:手动注册和自动注册。您可以通过Amazon Glue控制台或 CLI/SDK。

    在序列化器设置中打开自动注册时,将执行模式的自动注册。如果REGISTRY_NAME,则自动注册将在默认注册表(默认注册表)下注册新模式版本。请参阅安装 SerDe 库,了解有关指定自动注册属性的信息。

  2. 序列化器根据模式验证数据记录:当生成数据的应用程序已注册其模式时,模式注册表序列化程序将验证应用程序生成的记录是否使用与已注册模式匹配的字段和数据类型进行结构化。如果记录的模式与注册的模式不匹配,则序列化程序将返回异常,并且应用程序将无法将记录传递到目标。

    如果不存在架构,并且架构名称未通过生产者配置提供,则将使用与主题名称(如果是 Apache Kafka 或 Amazon MSK)或流名称(如果是 Kinesis Data Streams)相同的名称创建架构。

    每条记录都有一个模式定义和数据。根据架构注册表中的现有架构和版本查询架构定义。

    默认情况下,生产者缓存模式定义和已注册模式的架构版本 ID。如果记录的模式版本定义与缓存中的可用内容不匹配,则创建者将尝试使用模式注册表验证架构。如果架构版本有效,则其版本 ID 和定义将在创建器上本地缓存。

    您可以调整默认缓存周期(24 小时),在 #3安装 SerDe 库

  3. 序列化和交付记录:如果记录符合架构,则序列化程序将使用架构版本 ID 装饰每条记录,根据选定的 Avro 架构格式序列化记录(即将推出的其他格式),压缩记录(可选的创建器配置),然后将其传送到目标。

  4. 消费者反序列化数据:读取此数据的使用者使用架构注册表解序列化程序库来解析记录有效负载的架构版本 ID。

  5. 反序列化器可以从模式注册表请求架构:如果这是反序列化程序第一次看到具有特定模式版本 ID 的记录,则反序列化程序将使用模式版本 ID 从架构注册表请求架构,并在使用器上本地缓存架构。如果模式注册表无法反序列化记录,则使用者可以记录记录中的数据并继续或停止应用程序。

  6. 反序列化程序使用模式来反序列化记录:当反序列化程序从架构注册表中检索架构版本 ID 时,解序列化程序将解压缩记录(如果由创建者发送的记录已压缩),并使用模式反序列化记录。现在,应用程序处理记录。

注意

加密:您的客户端通过 API 调用与架构注册表通信,这些调用使用 HTTPS 上的 TLS 加密对传输中的数据进行加密。存储在模式注册表中的架构始终使用服务管理的 KMS 密钥进行静态加密。

注意

用户授权:架构注册表同时支持资源级权限和基于身份的 IAM 策略。