Account 登录
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)是一组用于构建和集成应用软件的定义和协议。

详细了解集成

产品

Red Hat Integration

一套全面集成和消息传递技术

Red Hat Cloud Services

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

Red Hat Runtimes

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

Red Hat Process Automation

一套智能自动化业务决策和流程的产品。包括红帽决策管理器、红帽流程自动化管理器和红帽应用运行时。

相关资源

电子书

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

分析文章

红帽集成助力企业优化应用程序性能和业务结果

培训

免费培训课程

红帽敏捷集成技术概述

Illustration - mail

获取更多类似的内容

免费订阅我们的 Red Hat Shares 通讯邮件