Jump to section

什么是 Service Registry 服务注册表?

复制 URL

服务注册表是一种数据库,用来存储应用级通信的数据结构。它相当于一个中央枢纽,供应用开发人员注册和查找用于特定应用的架构。

红帽® 集成是一套全面的集成和消息传递技术,旨在跨混合基础架构连接应用和数据。

确保正确使用重要数据

现代软件设计离不开分布式、松散耦合的微服务,通过应用编程接口(API)交换数据。

在大型企业及更大的企业中,这种应用间的数据交换是关键任务。所有应用每分每秒都在来回发送数据,让业务正常运转。所以,确保这些数据的完整性就无比重要。如何确保所有不同的应用都能得到妥当设置,以便正确使用这些重要数据?关键解决方案之一就是服务注册表。

例如,Apache Kafka 等传输数据的消息传递系统不提供自带的数据验证。如果数据生产者发送了不可消费的数据,会发生什么?例如,如果生产者添加或移除了某一字段或改变了数据格式?如果数据消费者不清楚这一变化,就无法正确处理数据,最糟时可能会导致整个系统发生瘫痪。

确保消费者了解生产者使用的架构

在任何数据交换发生之前,数据消费者需要了解生产者所使用的数据结构(称为"架构")。消费者还需要知道对架构进行任何更改的时间。数据在发展的同时,也必须保证不会导致消息传递系统出现中断。

生产者可以手动将架构发送给消费者,例如发送附加了相关文件的电子邮件。不过,与许多手动流程一样,这可能会比较复杂、容易出错并且难以审查,最终造成服务停止工作,而且不能轻松找出故障的起因。

另一方面,服务注册表可以通过一个便于访问的平台提供此信息。它相当于一个中央枢纽,供生产者应用的开发人员注册用于特定应用的架构。消费者应用的开发人员也使用服务注册表来查找架构,以便应用可以使用来自该生产者的数据。可以存储在服务注册表中的架构有 Apache Avro、JSON Schema 和 Google Protocol Buffer 等。

充当给定应用的数据结构的单一事实来源

除了架构外,服务注册表还可存储其他资源,也称为"工件"。例如,应用级同步通信的 API 规范也可存储在服务注册表中。随着服务变得更加繁多复杂,服务注册表的用处也更大。

服务注册表概念由来已久,但最近才又重新成为关注点,因为它非常适合微服务世界中的这一必要用途。服务注册表可充当给定应用的数据结构的单一事实来源,得到生产者应用和消费者应用开发人员的共同认可。它支持"契约优先"方法。服务注册表并非先编写应用,事后再提供契约让其他应用或企业能够与您的应用通信,而是提前规定这种契约,包括输入、输出、负载规范,乃至验证规则。一切都事先清楚交代,因此各方都能了解交互的方式。

我们以 Apache Kafka 作为用例来探讨服务注册表的工作方式。服务注册表是这一用例的理想选择,因为 Kafka 不自动向消费者提供数据结构,而且 Kafka 也不提供任何数据验证。由于 Kafka 不解析(甚至也不读取)您的数据,因此不会占用重要的资源,因而能够非常迅速地将数据直接分发给消费者。如果 Kafka 确实要花费时间来验证数据,那么性能就会大大降低。所以缺少数据监管对 Kafka 来说不是问题。相反,它可以实现 Kafka 的一大优势:高性能。

然而,您必须对数据结构实施其他监管,以便消费应用可以正确地消费这些数据。解决方案就是服务注册表,它不仅提供规则,也实施规则。

消费者和生产者通过 Kafka 交换数据,而使用服务注册表能让生产者和消费者从一开始就记录、共享和认可定义此通信的元数据,以避免之后发生数据相关的错误。元数据以架构的形式提供,存储在服务注册表中。

生产者应用的开发人员将架构注册到服务注册表中,后者确保生产者遵循其自身架构的规范。服务注册表甚至还可以更进一步,拒绝不遵循已注册架构的不良数据。

架构可以由特定生产者应用的开发人员注册(如上例中所示),也可由企业进行注册(以便在开发团队中共享使用)。在这第二种情形中,服务注册表会充当供生产者应用和消费者应用的开发人员使用的库。

同时,消费者应用的开发人员也以库的形式使用服务注册表,检索其中的架构,以便构建应用来消费来自生产者应用的数据。当架构发生变化时,服务注册表会向消费者提供最近更新的架构。

服务注册表为开发团队和企业提供以下优势:

将数据结构与应用分离

您可以使用服务注册表来使数据结构与应用分离,并利用 REST 接口在运行时共享和管理您的数据结构和 API 描述。

卓越的数据质量

服务注册表可以验证数据的架构并检测数据中的错误,以确保数据完整性。服务注册表可以包含规则,确保上传的内容在语法和语义上有效,并且向前和向后兼容其他版本。不过,服务注册表会阻止生产者发送与架构不相符的不良数据。

单一记录的事实来源

服务注册表提供单一事实来源,由涉及的各方共同验证和认可。

提高开发人员生产率

服务注册表可以一致地重复利用架构和 API 设计,从而节省开发人员在构建生产者或消费者应用时所花费的时间。

节省成本

在开发者生命周期中尽早(而不是在运行时)检测数据相关错误,可以节省在流程下游修正错误而花费的高代价开发时间。

继续阅读

文章

什么是集成?

想要知道什么是集成?了解何为集成、它的具体实现方式以及使用开源技术为什么有助于实现集成。

文章

什么是 Apache Kafka?

Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。

文章

什么是 API?

应用编程接口(API)是一组用于构建和集成应用软件的定义和协议。

详细了解集成

产品

一套全面的集成和消息传递技术,旨在跨混合基础架构连接应用和数据。包括红帽 3scale API 管理、红帽 AMQ、红帽应用运行时、变更数据捕获和服务注册表。

托管平台、应用和简化了混合云体验的数据服务,从而降低了运维成本和提供云原生应用的复杂性。

一整套产品、工具及组件,以用于开发和维护云原生应用。包括红帽 AMQ、红帽数据网格、红帽 JBoss® 企业应用平台、红帽 JBoss Web 服务器、OpenJDK 的红帽版、Quarkus 红帽版、一组云原生运行时、应用迁移工具包、单点登录和启动器服务。

一套全面的集成和运行时技术,旨在帮助您构建、部署和操作应用,同时兼顾安全性和跨混合云的可扩展性。

相关资源

电子书

创建敏捷的基础架构,打造灵活应变的企业

继续探索

分析师资料

事件网格:入门

培训

免费培训课程

红帽敏捷集成技术概述