什么是服务发现

什么是服务发现

服务发现是一种自动识别和访问网络上的设备和服务的方法。这是分布式系统和微服务架构中遵循的常见模式。因为这种环境中的服务器可能是短暂的,并且依靠静态IP地址与这些系统连接是不可靠的,并且可能会导致系统故障和错误。

服务发现的真正含义是什么?

假设您有一个部署在多台服务器上的应用程序和一个由六台服务器组成的数据库集群。应用程序需要连接到数据库才能存储和检索数据。

为了建立此连接,应用程序需要知道数据库集群的网络位置(IP 地址和端口号) 。一种方法是在应用程序属性中对 IP 地址和端口号进行硬编码。然而,这种方法有一些缺点:

  • 它不可扩展:如果数据库集群是完全自动化的,则数据库服务器的 IP 地址可能会在修补或故障转移场景中发生变化。或者可以将更多服务器添加到集群中以扩展集群。在这种情况下,您需要更新应用程序集群中每台服务器上的应用程序属性。
  • 它很容易出错:如果您输入错误的 IP 地址或端口号,应用程序将无法连接到数据库。
  • 它不灵活:如果您需要添加或删除具有不同IP地址的数据库节点,则需要更新应用程序代码。
  • 您可以使用服务器的 DNS 端点。但如果IP发生变化,则需要手动更新DNS的IP地址。

因此,需要一种有效的机制让应用程序始终访问健康的数据库服务器。

在这里您可以使用服务发现方法。服务发现系统是一种允许服务器/服务注册自身并发现其他服务的工具。

在我们的示例中,数据库集群节点将向服务发现系统(服务注册表)注册自己,应用程序服务器将使用服务发现系统(服务注册表)来查找数据库服务器的 IP 地址。

现在让我们看看什么是服务注册表。服务发现的关键组成部分。

服务注册中心

它是一个集中式服务注册表,用于维护有关可用服务的信息。在大多数情况下,它是一个键值存储数据库。下图显示了名为consul 的服务发现工具的服务注册表的仪表板。
在这里插入图片描述

以下是它在我们的示例中的工作原理。

  • 当数据库服务器启动时,它会将自身注册为服务注册表中的可用服务。它提供应用程序的 IP 地址、端口号和健康检查 URL(例如:在 3306 上运行的 MySQL 应用程序)。它通过在数据库节点上运行的代码库或服务发现代理来发生。
  • 应用程序服务器需要连接到数据库,因此它使用服务发现库/代理通过 API/DNS 调用连接到服务注册表并查询可用的数据库服务器 IP。
  • 由于数据库服务器已经自行注册,因此应用程序服务器将能够从服务注册表检索 IP 和端口信息,并在其配置中使用它来检索和存储数据。

下面的 gif 显示了 consul 服务注册表中自注册节点/服务的示例。在这里插入图片描述

如果注册服务器出现故障会发生什么?

如果数据库服务器发生故障,服务注册表会对其进行识别,因为它具有与每个节点关联的运行状况检查。然后,服务注册表将该节点标记为不健康。在应用程序服务器中运行的代理持续监视服务注册表中的更改,从而识别节点故障。结果,应用程序服务器从其配置中删除了不健康的数据库 IP。所有这些变化都在几秒钟内发生。

如果注册新服务器会发生什么?

工作流程是相同的。新的数据库服务器自行注册。应用程序服务器通过服务注册表识别它并将其添加到其配置中。

服务发现的类型

有两种类型的服务发现模式。

1. 客户端服务发现模式

在客户端发现模式中,客户端(例如应用程序)负责与服务注册表交互以获取服务详细信息。

例如,客户端查询服务注册表以获取有关可用后端服务的信息。

在此模型中,客户端必须在应用程序框架中实现服务发现查询逻辑。例如,如果应用程序服务器想要获取可用的数据库服务器详细信息,则应用程序应该使用服务发现客户端库来查询服务注册表来实现查询。
在这里插入图片描述

2. 服务器端服务发现模式

在服务器端发现模式中,请求发送到负载均衡器(服务器),负载均衡器连接到服务注册表以获取健康后端服务器的 IP 地址。

这里服务器组件实现代理或库来查询服务注册表。该模型的一个经典示例是使用服务发现的 Nginx 负载平衡。这里,客户端(服务消费者)直接与 Nginx 负载均衡器通信,负载均衡器查询服务注册表以获取用于路由流量的后端服务器列表。

下图显示了使用 consul 的服务端服务发现。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值