第 1 章 Service Registry 简介
本章论述了 Service Registry 概念和功能,并提供有关存储在 registry 中的受支持构件类型的详细信息:
- 第 1.1 节 “什么是服务 registry?”
- 第 1.2 节 “Service Registry 中的 schema 和 API 工件”
- 第 1.3 节 “使用 Service Registry Web 控制台管理内容”
- 第 1.4 节 “Service Registry 核心 REST API”
- 第 1.5 节 “Service Registry 存储选项”
- 第 1.6 节 “使用 schema 和 Java client serializers/deserializers 验证 Kafka 消息”
- 第 1.7 节 “使用 Kafka Connect converters 将数据流传输到外部系统”
- 第 1.8 节 “Service Registry 演示示例”
- 第 1.9 节 “服务 Registry 可用发行版本”
1.1. 什么是服务 registry?
Service Registry 是一个数据存储,用于跨事件驱动的和 API 架构共享标准事件模式和 API 设计。您可以使用 Service Registry 将数据的结构与客户端应用程序分离,并使用 REST 接口在运行时共享和管理您的数据类型和 API 描述。
例如,客户端应用程序可在运行时动态推送到 Service Registry 或从 Service Registry 中推送或拉取最新的 schema 更新,而无需重新部署。开发人员团队可以查询注册表中已在生产中部署的服务所需的现有模式,并可注册开发新服务所需的新模式。
您可以通过在客户端应用程序代码中指定 registry URL,使客户端应用程序使用存储在 Service Registry 中的 schema 和 API 设计。例如,registry 可以存储用于序列化和反序列化消息的 schema,然后从客户端应用程序引用这些消息,以确保它们发送和接收的消息与这些架构兼容。
使用 Service Registry 将数据结构与应用程序分离,通过减少整个消息大小来降低成本,并通过增加跨组织内的模式和 API 设计的一致性重复使用来提高效率。Service Registry 提供了一个 Web 控制台,可供开发人员和管理员轻松管理 registry 内容。
另外,您可以配置可选规则来管理 registry 内容的演进。例如,这些规则包括确保上传的内容语法和语义有效的规则,或者向后兼容其他版本。任何配置的规则都必须在将新版本上传到 registry 之前进行,这样可确保不会产生无效或不兼容的 schema 或 API 设计的时间。
Service Registry 基于 Apicurio Registry 开源社区项目。详情请查看 https://github.com/apicurio/apicurio-registry。
Service Registry 功能
- 标准事件模式和 API 规格的多个有效负载格式,如 Apache Avro、JSON Schema、A Protobuf、AsyncAPI、OpenAPI 等
- AMQ Streams 或 PostgreSQL 数据库中的可插拔 registry 存储选项
- 管理 registry 内容随时间变化的内容验证和版本兼容性的规则
- 使用 Web 控制台、REST API、命令行、Maven 插件或 Java 客户端进行注册表内容管理
- 完整的 Apache Kafka 模式 registry 支持,包括与外部系统的 Kafka 连接集成
- Kafka 客户端 serializers/deserializers (SerDes)在运行时验证消息类型
- 与现有的 Confluent 或 IBM schema registry 客户端应用程序兼容
- 云原生 Quarkus Java 运行时,用于低内存占用和快速部署速度
- 在 OpenShift 上安装基于 Operator 的 Service Registry
- 使用 Red Hat Single Sign-On 的 OpenID Connect (OIDC)验证