web-services - 什么是服务发现,为什么需要它?

标签 web-services configuration architecture microservices

据我所知,“服务发现”是指客户端找出它想要连接的服务器(或服务器集群)的一种方式。

我已经构建了使用 HTTP 和 AMQP 等协议(protocol)与其他后端进程通信的 Web 应用程序。其中,每个客户端都有一个配置文件,其中包含主机名或连接到服务器所需的任何信息,这些信息在部署时使用 Ansible 等配置工具进行设置。这很简单,似乎工作得很好。

服务发现是否可以替代仅将服务器信息放入客户端的配置文件?如果是这样,为什么它更好?如果不是,它解决了什么问题?

最佳答案

让我们先回顾一下什么是服务发现——这里有一个很好的解释:https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/
(这个链接应该几乎可以澄清所问的问题)

这是一个如何在实践中使用的示例:
假设您有服务 A 使用的服务 B。服务 B(与 SOA 中的大多数服务一样)实际上是类型 B 的应用程序集群。服务 A 需要使用集群 B 的一个节点,但集群B 节点为 动态 .即 B 节点的创建和终止取决于整个 B 服务的负载。现在,我们希望服务 A 每次需要使用服务 B 时都与事件 B 节点通信。为此,我们将使用服务发现工具为我们提供 在任何给定时间 ,事件 B 节点之一的地址。

因此,尝试回答您的上述问题,将端点服务器信息(特别是端点地址)作为静态配置放在服务 A 启动时读取的配置文件中,不会给您 动态您希望服务 B 端点可能不断变化。

关于web-services - 什么是服务发现,为什么需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37148836/

相关文章:

javascript - BackboneJs 中的多个路由器与单个路由器

amazon-web-services - 使用 Amazon Route53 复制 DNS 服务器

asp.net - 在长时间的 Ajax 任务后通知用户可能位于不同的页面

java - 如何将Web服务响应输入流转换为java对象?

php - MySQL 的最佳配置? InnoDB 和 MyISAM

scala - 如何从Typesafe config配置系统属性或回退配置变量?

node.js - 从不同的微服务收集数据的正确方法是什么?

ios - 控制台数据问题

web-services - 自定义链接关系的 RESTful Web 服务使用 - 'rel'

logging - Logstash 时区配置