微服务 - 服务发现和服务网关的确切区别是什么?

5
4个回答

15
服务网关(也称API网关)接收来自客户端的请求。它是客户端看到的(唯一)服务。但是,它本身不知道如何实现客户端要求,因此必须将请求转发到另一个服务。它检查URL并提取将实际处理请求的服务的名称,即后端服务。该后端服务可能位于不同的计算机上。它可能具有动态地址或端口,这些地址或端口可能会因各种原因而发生更改(节点故障,网络添加新节点等)。
因此,网关不知道该将请求转发到哪里。这是服务发现服务(Eureka)的工作。Eureka知道每个服务在哪个节点上监听请求的地址和端口。网关通过发送服务名称向Eureka询问可以找到后端服务的位置。在Eureka响应后,网关将请求转发到那个地址。

5
以下是翻译的结果:

如果你关注Zuul和Eureka的职责,那么它们之间的差异会更加容易理解。如下所示,每个人都有特定的任务。这就是主要的区别。

enter image description here


@ Ebert Toribio - 请提供支持您答案的理论。 - Jeff Cook

1

API网关

在Api网关中,我们需要使用URL和匹配模式来注册服务。

例如:

 id: order-service
    uri: http://localhost:9003/
    predicates:
      - Path=/order/**

但是问题在于我们可能在不同的端口上有多个实例。就像这样

 uri: http://localhost:9003/
 uri: http://localhost:9004/
 uri: http://localhost:9005/

在这种情况下,网关将无法路由到其他实例。
服务发现
在服务发现的情况下,我们需要将客户端服务注册到另一个服务(即服务发现)。就像这样。
 eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
     defaultZone: http://localhost:8761/eureka/

现在所有的客户端都会自动注册到服务发现中心,因此即使有多个实例,服务注册也会处理好它们。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接