Spring Boot-不同的系统(eureka,zuul,ribbon,nginx)用于什么?

vip*_* cp 13 nginx amazon-web-services spring-boot microservices netflix-zuul

我一直在工作,spring现在想学习spring boot微服务。我了解microservice所有内容及其运作方式。在浏览文档时,我遇到了很多用于开发的东西microservicesspring boot而我对此非常困惑。

我列出了以下系统和问题:

  1. Netflix Eureka-我知道这是服务发现平台。所有services都将注册到eureka服务器,并且 microservices都是eureka客户端。现在,我的疑问是,没有API网关,此服务注册表是否有任何用途?这是为了了解服务注册表的实际使用。
  2. ZUULApi网关 -我知道ZUUL可以用作API网关,它基本上是一个负载均衡器,它调用与请求URL相对应的适当的微服务。这个假设正确吗?api网关将与Eureka交互以获得适当的微服务吗?

  3. NGINX-我看过 NGINX还可以用作API网关吗?那可能吗?我也读了一些其他地方NGINX可以用作服务注册表,也可以作为尤里卡的替代品!因此哪个是对的?api网关或服务注册表,或两者兼而有之?我知道这nginx是一个网络服务器,reverse proxies可以进行强大的配置。

  4. AWS api网关 -这也可以替代ZUUL吗?

  5. 丝带 -有什么ribbon用?我不明白!

  6. AWS ALB-这也可以用于负载平衡。因此,如果有,我们是否需要ZUUL AWS ALB

请帮忙

vip*_* cp 26

可用于microservices与 spring boot 一起工作的不同系统:

  1. Eureka: 可能是第一个 UP 微服务。Eureka 是一个服务注册中心,意味着它知道正在运行哪些微服务以及在哪个端口。Eureka 正在部署为一个单独的应用程序,我们可以使用@EnableEurekaServer注解@SpringBootAPplication使该应用程序成为一个 eureka 服务器。因此,我们的 eureka 服务注册已启动并正在运行。从现在开始,所有微服务都将通过使用@EnableDiscoveryClient注释以及@SpringBootAPplication所有已部署的微服务在此 eureka 服务器中注册。

  2. Zuul:ZUUL是load balancerrouting应用程序和reverse proxy服务器上。那是在我们使用 apache 进行反向代理之前,现在,对于微服务,我们可以使用 ZUUL。优点是,在 ZUUL 中,我们可以通过编程方式设置配置,就像 /customer/* 那样转到这个微服务。也ZUUL可以充当负载均衡器,它将以循环方式选择合适的微服务。SO ZUUL 是怎么知道微服务的细节的,答案是eureka。它将与eureka获取微服务详细信息一起使用。事实上,这个 ZUUL 也是一个 Eureka 客户端,我们应该在其中标记 using @EnableDiscoveryClient,这就是这两个应用程序(Eureka 和 zuul)的链接方式。

  3. Ribbbon:带使用的负载均衡。这在 ZUUL 中已经可用,其中 zuul 使用 Ribbon 进行负载平衡。微服务由属性文件中的 service-name 标识。如果我们在不同的端口运行一个微服务的 2 个实例,这将由 Eureka 识别,并与 Ribbon(Inside zuul) 一起,请求将以平衡的方式重定向。

  4. Aws ALB、NGINX、AWS Api 网关等:上述所有内容都有替代方案。Aws 有自己的负载均衡器、服务发现、api 网关等。不仅 AWS,所有云平台,如 Azure,都有这些。这取决于使用哪一种。

  5. 还添加一个一般问题,这些微服务如何相互通信:可以调用使用ResttemplateFeignclient实际的休息 API,或者Rabbit MQ可以使用诸如等的消息队列。

  • Resttemplate 的注意事项:从 5.0 开始,此类处于维护模式,仅接受较小的更改请求和错误。请考虑使用 org.springframework.web.reactive.client.WebClient,它具有更现代的 API,并支持同步、异步和流场景。https://docs.spring.io/spring-framework/docs/current/javadoc-api/index.html?org/springframework/web/client/RestTemplate.html (2认同)

Jos*_*nez 22

没有API网关,此服务注册表有什么用?

是。例如,您可以使用它来查找所有微服务的(IP和端口)。这对于devops类型的工作很方便。例如,在我从事的一个项目中,我们使用Eureka查找了我们微服务的所有实例,并对其状态(/ health,/ info)进行ping操作。

我知道ZUUL可以用作API网关,它基本上是一个负载均衡器,它调用与请求URL相对应的适当的微服务。这个假设正确吗?

是的,但是它可以做的更多。从本质上讲,因为Zuul更像是您变成微服务的框架/库,所以您可以对其进行编码,以实现您可以想到的任何种类的路由逻辑。从这个意义上说,它非常强大。例如,假设您想根据一天中的时间或任何其他外部因素来更改路线,使用Zuul可以做到。

api网关将与Eureka交互以获得适当的微服务吗?

是。您将Zuul配置为指向Eureka。它成为Eureka的客户端,甚至订阅Eureka进行实时更新(实例已加入或离开)。

我看过NGINX也可以用作API网关吗?我也读了一些类似NGINX的地方可以用作服务注册表,也可以作为Eureka的替代!因此哪个是对的?api网关或服务注册表,或两者兼而有之?

Nginx非常强大,可以完成API网关类型的工作。但是有一些主要差异。AFAIK,微服务无法在Nginx上动态注册,如果我错了,请纠正我...就像在Eureka上一样。其次,尽管我知道Nginx是高度(非常高度)可配置的,但我怀疑它的配置能力与Zuul的路由功能不相近(由于在Zuul中可以使用整个Java语言来编写路由逻辑)。可能存在与Nginx一起使用的服务发现解决方案的情况。因此Nginx将负责路由等工作,但是服务发现仍然需要解决方案。

这也可以用作ZUUL的替代品吗?

是的,AWS API Gateway可以用作Zuul的替代品。就像Nginx一样,这里的问题是服务发现。AWS API Gateway可让您将逻辑应用于路由...尽管不如Zuul开放。

用什么色带?

虽然可以直接使用功能区库,但在大多数情况下,应将其视为Zuul的内部依赖项。它可以帮助Zuul完成简单的负载均衡。请注意,该项目处于维护模式,不再建议使用。

这也可以用于负载平衡。因此,如果我们有AWS ALB,是否需要ZUUL?

您可以将ALB与ECS(弹性容器服务)一起使用来代替Eureka / Zuul。ECS将为您处理服务发现,并将特定服务的所有实例映射到目标组。然后,您的ALB路由表可以根据简单的路由规则路由到目标组。虽然ALB中的路由规则非常简单,但是随着时间的推移而不断改进。

  • 关于服务发现和 Nginx 查看这篇文章:https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/ 它提到了 Eureka 和其他可用于服务发现的选项Nginx 本身缺乏的。 (2认同)

Tri*_*kov 7

Eureka可以与 结合使用NGINX,这会导致非常强大的组合。

我在AWS EC2环境中使用它。以前而不是NGINX我在使用Spring Cloud Gateway和之前Zuul。根据负载Spring Cloud Gateway在 AWSt3.mediumt3.large实例上运行。转移到 NGINX 后,我正在使用t3.micro(内存减少 8 倍)实例。我几乎可以肯定我可以做到这一点,并且使用t3.nano(内存减少 16 倍)实例,但我想确保不会有任何意外。

以下是将 NGINX 插入 Eureka 生态系统所需执行的高级步骤。您可以在NGINX With Eureka 而不是 Spring Cloud Gateway 或 Zuul文章中找到更多详细信息。

  • 创建一个可以从 Eureka 读取所有应用程序配置并将其“转换”为 NGINX 配置的服务。
  • 创建一个 cronjob 条目,它会在某个时间段从上述服务中读取配置并调用 NGINX 热重载
  • NGINX 将使用服务和 cronjob 生成的配置,并将用作 API 网关