架构注册表的工作方式 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

架构注册表的工作方式

本部分描述了架构注册表中的序列化和反序列化过程的工作原理。

  1. 注册架构:如果 schema 在注册表中尚不存在,则可以使用等于目标名称的 schema 名称 (例如,test_topic、test_stream、prod_firehose) 注册该 schema,或者创建器可以为 schema 提供自定义名称。创建者还可以将键/值对作为元数据添加到架构中,例如源:msk_kafka_topic_A,或在创建架构时将 AWS 标签应用于架构。在注册架构后,架构注册表将架构版本 ID 返回到串行器。如果架构存在,但序列化程序使用的是不存在的新版本,则架构注册表将检查架构引用兼容性规则,以确保新版本在注册为新版本之前兼容。

    注册架构有两种方法:手动注册和自动注册。您可以通过 AWS Glue 控制台或 CLI/开发工具包手动注册架构。

    在串行器设置中启用自动注册时,将执行架构的自动注册。如果创建器配置中未提供 REGISTRY_NAME,则自动注册将在默认注册表 (默认注册表) 下注册新的架构版本。有关指定自动注册属性的信息,请参阅安装 SerDe 库

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

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

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

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

    您可以在 安装 SerDe 库 的步骤 3 内的可选创建者属性中调整默认缓存期 (24 小时)。

  3. 序列化和传输记录:如果记录符合 schema,序列化器将使用架构版本 ID 对每个记录进行装饰,根据所选的 Avro 架构格式 (其他格式即将推出) 序列化记录,压缩记录 (可选的创建者配置),并将其传输到目标。

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

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

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

注意

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

注意

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