Spring 引导 - 不同的系统(eureka、zuul、ribbon、nginx)用于什么?
Spring Boot - Different systems( eureka , zuul, ribbon, nginx,) used for what?
我一直在使用 spring
,现在想学习 spring boot
和微服务。我了解 microservice
是什么以及它是如何工作的。在浏览文档时,我遇到了许多用于开发 microservices
以及 spring boot
的东西,我对此感到非常困惑。
我列出了系统below.and问题:
- Netflix Eureka - 我知道这是服务发现平台。
所有
services
都将注册到 eureka
服务器和所有
microservices
是 eureka
个客户。现在我的疑问是,没有
API 网关这个服务注册表有什么用吗?这是
了解服务注册中心的实际使用。
ZUULApi 网关-我知道 ZUUL 可以用作 API 网关,它基本上是一个负载均衡器,调用合适的
请求对应的微服务URL。是那个假设
正确的? api 网关是否会与 Eureka 交互以获取
合适的微服务?
NGINX - 我读过 NGINX
也可以用作 API 网关?那可能吗?我还读了一些其他地方,比如 NGINX
可以用作服务注册表,这是 Eureka 的替代品!那么哪个是对的呢? Api 网关或服务注册表或两者?我知道 nginx
是一个网络服务器并且 reverse proxies
可以强大地配置。
AWS api 网关 - 这是否也可以用作 ZUUL
的替代品?
RIBBON - ribbon
的用途是什么?我没听懂!
AWS ALB- 这也可以用于负载均衡。因此,如果我们有 AWS ALB
?
,我们是否需要 ZUUL
请帮忙
without having an API gateway is there any use with this service registry ?
是的。例如,您可以使用它来定位(IP 和端口)所有微服务。这对于 devops 类型的工作很方便。例如,在我参与的一个项目中,我们使用 Eureka 来查找我们微服务的所有实例,并通过 ping 获取它们的状态(/health、/info)。
I understand ZUUL can be used as API gateway which is basically a load balancer , that calls appropriate microservice corresponding to request URL. iS that assumption correct?
是的,但它可以做的更多。本质上,因为 Zuul 更像是一个 framework/library,你可以将其变成一个微服务,你可以对其进行编码以实现你能想到的任何类型的路由逻辑。从这个意义上说,它非常强大。例如,假设你想根据一天中的时间或任何其他外部因素改变你的路线,使用 Zuul 你可以做到。
will the api gateway interact with Eureka for getting the appropriate microservice?
是的。您将 Zuul 配置为指向 Eureka。它成为 Eureka 的客户端,甚至订阅 Eureka 进行实时更新(哪些实例加入或离开)。
I have read NGINX can also be used as API gateway? Also i read some where else like NGINX can be used as a service registry , that is as an alternate for Eureka ! Thus which is right? Api gateway or service registry or both?
Nginx 非常强大,可以完成 API 网关类型的工作。但是有一些主要的区别。 AFAIK,微服务不能动态注册到 Nginx,如果我错了请纠正我......就像他们可以在 Eureka 上一样。其次,虽然我知道 Nginx 是高度(非常高度)可配置的,但我怀疑它的配置能力并没有接近 Zuul 的路由能力(因为在 Zuul 中有整个 Java 语言供你使用来编写你的路由逻辑) .可能存在适用于 Nginx 的服务发现解决方案。所以 Nginx 会处理路由等,但是服务发现仍然需要一个解决方案。
Is this can also be used as an alternate for ZUUL?
是的 AWS API 网关可以用作 Zuul 的某种替代品。就像 Nginx 一样,这里的问题是服务发现。 AWS API 网关让您可以将逻辑应用到您的路由中……虽然不像 Zuul 那样开放。
for what ribbon is used?
虽然您可以直接使用 Ribbon 库,但大多数情况下将其视为 Zuul 的内部依赖项。它帮助 Zuul 完成它所做的简单负载平衡。请注意,该项目处于维护模式,不再推荐。
This can also be used for load balancing. Thus do we need ZUUL if we have AWS ALB?
您可以使用带有 ECS(弹性容器服务)的 ALB 来替换 Eureka/Zuul。 ECS 将为您处理服务发现并将特定服务的所有实例映射到目标组。您的 ALB 路由 table 然后可以根据简单的路由规则路由到目标组。 ALB 中的路由规则虽然非常简单,但会随着时间的推移而改进。
可用于 microservices
工作的不同系统,随 spring 启动:
尤里卡:
可能是第一个 UP 的微服务。 Eureka 是一个服务注册中心,意味着它知道哪些微服务正在 运行ning 以及在哪个端口。 Eureka 正在部署为一个单独的应用程序,我们可以使用 @EnableEurekaServer
注释和 @SpringBootAPplication
使该应用程序成为一个 eureka 服务器。所以我们的 eureka 服务注册是 UP 和 运行ning。从现在开始,所有微服务都将通过在所有部署的微服务中使用 @EnableDiscoveryClient
注释和 @SpringBootAPplication
注册到这个尤里卡服务器。
Zuul: ZUUL 是一个 load balancer
, routing
应用程序和 reverse proxy
服务器。那是在我们使用 apache 进行反向代理之前,现在,对于微服务,我们可以使用 ZUUL。优点是,在 ZUUL 中,我们可以以编程方式设置配置,就像如果 /customer/* 来了就去这个微服务那样。 ZUUL
也可以充当负载均衡器,它将以循环方式选择合适的微服务。那么ZUUL是如何知道微服务的细节的呢,答案是eureka。它将与 eureka
一起使用以获取微服务详细信息。事实上,这个 ZUUL 也是一个 Eureka 客户端,我们应该在其中标记使用 @EnableDiscoveryClient
,这就是这两个应用程序(Eureka 和 zuul)的链接方式。
丝带:
功能区用于负载平衡。这在 ZUUL 中已经可用,其中 zuul 使用 Ribbon 进行负载平衡。微服务在属性文件中由 service-name 标识。如果我们 运行 一个微服务的 2 个实例在不同的端口,这将由 Eureka 和 Ribbon(在 zuul 内部)识别,请求将以平衡的方式重定向。
Aws ALB , NGINX , AWS Api gateway 等:上面提到的所有东西都有替代品。 Aws 有自己的负载均衡器、服务发现、api 网关等。不仅是 AWS,所有的云平台,比如 Azure,都有这些。这取决于使用哪个。
同时添加一个一般性问题,这些微服务如何相互通信:使用Resttemplate
或Feignclient
实际休息API 可以调用或者可以使用 Rabbit MQ
等消息队列。
Eureka
可以和NGINX
结合使用,组合起来非常强大。
我在 AWS EC2
环境中使用它。之前我使用的是 Spring Cloud Gateway
而不是 NGINX
,而在此之前是 Zuul
。根据负载 Spring Cloud Gateway
在 AWS t3.medium
或 t3.large
实例上是 运行。迁移到 NGINX 后,我正在使用 t3.micro
(内存减少 8 倍)实例。我几乎可以肯定我可以使用 t3.nano
(内存减少 16 倍)实例来解决这个问题,但我想确保不会有任何意外。
以下是将 NGINX 插入 Eureka 生态系统所必须执行的高级步骤。您可以在 NGINX With Eureka Instead of Spring Cloud Gateway or Zuul 文章中找到更多详细信息。
- 创建一个服务,它可以从 Eureka 读取所有应用程序的配置并将其 'translate' 到 NGINX 配置。
- 创建一个 cronjob 条目,它会在特定时间从上述服务中读取配置并调用 NGINX 热重载
- NGINX 将使用服务和 cronjob 生成的配置,并将作为 API 网关
我一直在使用 spring
,现在想学习 spring boot
和微服务。我了解 microservice
是什么以及它是如何工作的。在浏览文档时,我遇到了许多用于开发 microservices
以及 spring boot
的东西,我对此感到非常困惑。
我列出了系统below.and问题:
- Netflix Eureka - 我知道这是服务发现平台。
所有
services
都将注册到eureka
服务器和所有microservices
是eureka
个客户。现在我的疑问是,没有 API 网关这个服务注册表有什么用吗?这是 了解服务注册中心的实际使用。 ZUULApi 网关-我知道 ZUUL 可以用作 API 网关,它基本上是一个负载均衡器,调用合适的 请求对应的微服务URL。是那个假设 正确的? api 网关是否会与 Eureka 交互以获取 合适的微服务?
NGINX - 我读过
NGINX
也可以用作 API 网关?那可能吗?我还读了一些其他地方,比如NGINX
可以用作服务注册表,这是 Eureka 的替代品!那么哪个是对的呢? Api 网关或服务注册表或两者?我知道nginx
是一个网络服务器并且reverse proxies
可以强大地配置。AWS api 网关 - 这是否也可以用作
ZUUL
的替代品?RIBBON -
ribbon
的用途是什么?我没听懂!AWS ALB- 这也可以用于负载均衡。因此,如果我们有
AWS ALB
? ,我们是否需要 ZUUL
请帮忙
without having an API gateway is there any use with this service registry ?
是的。例如,您可以使用它来定位(IP 和端口)所有微服务。这对于 devops 类型的工作很方便。例如,在我参与的一个项目中,我们使用 Eureka 来查找我们微服务的所有实例,并通过 ping 获取它们的状态(/health、/info)。
I understand ZUUL can be used as API gateway which is basically a load balancer , that calls appropriate microservice corresponding to request URL. iS that assumption correct?
是的,但它可以做的更多。本质上,因为 Zuul 更像是一个 framework/library,你可以将其变成一个微服务,你可以对其进行编码以实现你能想到的任何类型的路由逻辑。从这个意义上说,它非常强大。例如,假设你想根据一天中的时间或任何其他外部因素改变你的路线,使用 Zuul 你可以做到。
will the api gateway interact with Eureka for getting the appropriate microservice?
是的。您将 Zuul 配置为指向 Eureka。它成为 Eureka 的客户端,甚至订阅 Eureka 进行实时更新(哪些实例加入或离开)。
I have read NGINX can also be used as API gateway? Also i read some where else like NGINX can be used as a service registry , that is as an alternate for Eureka ! Thus which is right? Api gateway or service registry or both?
Nginx 非常强大,可以完成 API 网关类型的工作。但是有一些主要的区别。 AFAIK,微服务不能动态注册到 Nginx,如果我错了请纠正我......就像他们可以在 Eureka 上一样。其次,虽然我知道 Nginx 是高度(非常高度)可配置的,但我怀疑它的配置能力并没有接近 Zuul 的路由能力(因为在 Zuul 中有整个 Java 语言供你使用来编写你的路由逻辑) .可能存在适用于 Nginx 的服务发现解决方案。所以 Nginx 会处理路由等,但是服务发现仍然需要一个解决方案。
Is this can also be used as an alternate for ZUUL?
是的 AWS API 网关可以用作 Zuul 的某种替代品。就像 Nginx 一样,这里的问题是服务发现。 AWS API 网关让您可以将逻辑应用到您的路由中……虽然不像 Zuul 那样开放。
for what ribbon is used?
虽然您可以直接使用 Ribbon 库,但大多数情况下将其视为 Zuul 的内部依赖项。它帮助 Zuul 完成它所做的简单负载平衡。请注意,该项目处于维护模式,不再推荐。
This can also be used for load balancing. Thus do we need ZUUL if we have AWS ALB?
您可以使用带有 ECS(弹性容器服务)的 ALB 来替换 Eureka/Zuul。 ECS 将为您处理服务发现并将特定服务的所有实例映射到目标组。您的 ALB 路由 table 然后可以根据简单的路由规则路由到目标组。 ALB 中的路由规则虽然非常简单,但会随着时间的推移而改进。
可用于 microservices
工作的不同系统,随 spring 启动:
尤里卡: 可能是第一个 UP 的微服务。 Eureka 是一个服务注册中心,意味着它知道哪些微服务正在 运行ning 以及在哪个端口。 Eureka 正在部署为一个单独的应用程序,我们可以使用
@EnableEurekaServer
注释和@SpringBootAPplication
使该应用程序成为一个 eureka 服务器。所以我们的 eureka 服务注册是 UP 和 运行ning。从现在开始,所有微服务都将通过在所有部署的微服务中使用@EnableDiscoveryClient
注释和@SpringBootAPplication
注册到这个尤里卡服务器。Zuul: ZUUL 是一个
load balancer
,routing
应用程序和reverse proxy
服务器。那是在我们使用 apache 进行反向代理之前,现在,对于微服务,我们可以使用 ZUUL。优点是,在 ZUUL 中,我们可以以编程方式设置配置,就像如果 /customer/* 来了就去这个微服务那样。ZUUL
也可以充当负载均衡器,它将以循环方式选择合适的微服务。那么ZUUL是如何知道微服务的细节的呢,答案是eureka。它将与eureka
一起使用以获取微服务详细信息。事实上,这个 ZUUL 也是一个 Eureka 客户端,我们应该在其中标记使用@EnableDiscoveryClient
,这就是这两个应用程序(Eureka 和 zuul)的链接方式。丝带: 功能区用于负载平衡。这在 ZUUL 中已经可用,其中 zuul 使用 Ribbon 进行负载平衡。微服务在属性文件中由 service-name 标识。如果我们 运行 一个微服务的 2 个实例在不同的端口,这将由 Eureka 和 Ribbon(在 zuul 内部)识别,请求将以平衡的方式重定向。
Aws ALB , NGINX , AWS Api gateway 等:上面提到的所有东西都有替代品。 Aws 有自己的负载均衡器、服务发现、api 网关等。不仅是 AWS,所有的云平台,比如 Azure,都有这些。这取决于使用哪个。
同时添加一个一般性问题,这些微服务如何相互通信:使用
Resttemplate
或Feignclient
实际休息API 可以调用或者可以使用Rabbit MQ
等消息队列。
Eureka
可以和NGINX
结合使用,组合起来非常强大。
我在 AWS EC2
环境中使用它。之前我使用的是 Spring Cloud Gateway
而不是 NGINX
,而在此之前是 Zuul
。根据负载 Spring Cloud Gateway
在 AWS t3.medium
或 t3.large
实例上是 运行。迁移到 NGINX 后,我正在使用 t3.micro
(内存减少 8 倍)实例。我几乎可以肯定我可以使用 t3.nano
(内存减少 16 倍)实例来解决这个问题,但我想确保不会有任何意外。
以下是将 NGINX 插入 Eureka 生态系统所必须执行的高级步骤。您可以在 NGINX With Eureka Instead of Spring Cloud Gateway or Zuul 文章中找到更多详细信息。
- 创建一个服务,它可以从 Eureka 读取所有应用程序的配置并将其 'translate' 到 NGINX 配置。
- 创建一个 cronjob 条目,它会在特定时间从上述服务中读取配置并调用 NGINX 热重载
- NGINX 将使用服务和 cronjob 生成的配置,并将作为 API 网关