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

Web services 什么是服务发现,为什么需要它?,web-services,configuration,architecture,microservices,Web Services,Configuration,Architecture,Microservices,据我所知,“服务发现”是指客户机查找其想要连接的服务器(或服务器集群)的一种方式 我构建了使用HTTP和AMQP等协议与其他后端进程通信的web应用程序。其中,每个客户机都有一个配置文件,其中包含主机名或连接到服务器所需的任何信息,这些信息在部署时使用Ansible之类的配置工具进行设置。这很简单,而且似乎效果很好 服务发现是将服务器信息放在客户端配置文件中的替代方案吗?如果是,为什么更好?如果没有,它解决了什么问题?让我们从回顾什么是服务发现开始—下面是一个很好的解释: (这个链接应该可以很好

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

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


服务发现是将服务器信息放在客户端配置文件中的替代方案吗?如果是,为什么更好?如果没有,它解决了什么问题?

让我们从回顾什么是服务发现开始—下面是一个很好的解释: (这个链接应该可以很好地澄清问题)

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


因此,尝试回答您的上述问题,将端点服务器信息(特别是端点地址)作为静态配置放在服务a启动时读取的配置文件中,不会给您提供服务B端点可能不断更改时所需的动态

如果您有2个微服务,比如A和B,并且您希望A与B通信,A将使用服务发现方法(工具)在微服务体系结构中查找B

不仅是客户端到服务器的通信,还有可能在同一台服务器上运行的2个微服务

它解决的问题是,在集群中的两个不同节点上运行的两个微服务可以相互发现,如果没有服务发现,这是不可能的

您可以了解kurbernetes如何支持服务发现,比如通过使用coreDNS的DNS。

我必须承认,您所说的方法是可行的,但如果有这么多服务,您需要管理的复杂性将增加,手动配置服务列表也很容易出错

服务发现不是将要调用的服务列表放入客户端配置的简单方法,而是保存所有服务本身的实例列表


您可以简单地理解,我们有一个注册服务,可以自动管理要访问的服务实例列表。当您添加服务或关闭服务时,注册服务将自动更新您的服务列表。当您拨打电话时,您将从注册中心获得最新的服务列表以拨打电话。为了不影响性能,您还可以在客户端缓存服务列表

云服务器体系结构正在改变我们构建web应用程序的方式,我们正在从单一的大型单块应用程序转变为将它们拆分为越来越小的可单独部署的服务,称为微服务,共同构成大型应用程序

让我们考虑当一个服务想要与其他服务通信时,假设服务A需要与服务B通信。Service -A需要知道服务-B的IP地址和端口号。最简单的解决方案是通过保持一个配置文件来保存IP地址和端口到Service -B AT。服务A。这种方法有几个缺点

考虑以下情况:-

  • 当应用程序中的微服务数量增加时
    • 很难在配置文件中进行管理
    • 当管理不善时,很容易出错
    • 它缺乏在以后更改IP或端口的灵活性
    • 它不能利用云的能力来根据需求动态扩展或收缩
这种简单的方法过于静态,冻结了云,因此出现了新的解决方案

替代解决方案:服务发现

服务发现通过提供一种方法帮助解决上述问题

  • 要注册服务,即当新服务联机时,它会使用其IP和端口将自己注册到服务发现服务
  • 帮助服务找到其他服务,即帮助服务-A找到服务-B
  • 运行状况检查以检查实例的运行状况,并在实例不正常时将其删除
  • 当服务脱机时取消注册

因此,它有助于利用云的全部功能,根据需求动态扩展和收缩,并使架构在云环境中彼此松散耦合,其中docker映像动态部署在任何机器或IP+端口组合上,依赖服务很难在运行时更新。创建服务发现仅出于此目的

服务发现是在微服务体系结构下运行的服务之一,它注册在服务网格下运行的所有服务的条目。所有操作都可以通过RESTAPI获得。因此,每当服务启动并运行时,各个服务都会向服务发现服务注册自己,而服务发现服务会保持心跳,以确保这些服务处于活动状态。这也有助于监控服务。服务发现还有助于在以公平的方式部署的服务之间分发请求。

您不使用