gpt4 book ai didi

spring - 负载平衡(ribbon)和路由(zuul)Spring REST API(Spring Data JPA)请求到同一服务的多个副本

转载 作者:行者123 更新时间:2023-12-02 08:40:10 26 4
gpt4 key购买 nike

我似乎找不到以下场景的明确示例/解决方案;任何帮助/信息将不胜感激!

我有一个 Spring REST API 服务,它使用 Spring Data JPA 与后端数据库服务器连接。我在多台机器上运行这个完全相同的服务,并且我有一个反向代理,它将客户端请求(使用 Netflix Zuul)路由到这些 API 服务,以便访问数据库中的数据。但是,我想对请求进行负载平衡(通过反向代理和可能的 Netflix Ribbon),以便每个请求仅发送到单个 API 服务器(以负载平衡的方式)。

Spring Data JPA 根据我定义的实体类和其余存储库自动配置端点。一种解决方案是在反向代理上为 API 服务上的每个端点生成等效端点,然后使用 Ribbon 客户端单独对每个端点进行负载平衡。然而,这似乎不是合适的解决方案。

我的问题是,Netflix Zuul 或 Ribbon 是否提供任何功能来处理这种情况?本质上,我希望能够设置一个 YAML 配置,简单地告诉 Zuul 使用 Ribbon 客户端,并根据可用的 listOfServers Ribbon 配置自动将所有请求负载平衡到给定端点。

应用程序.yml

示例:

DatabaseAPI:
ribbon:
eureka:
enabled: false
listOfServers: localhost:8080, localhost:8181, localhost:8282
ServerListRefreshInterval: 15000

zuul:
routes:
data:
path: /db/**
ServiceId: DatabaseAPI

现在,例如,我希望将每个对/db/** 的请求以循环方式发送到服务器列表中的可用服务器之一。注意:使用此示例配置,每个请求都会同时发送到所有可用服务器。我只希望其中一个人接收每个请求。

最佳答案

默认情况下,Zuul 使用 Ribbon 来定位要通过发现转发的实例(例如,在您的情况下为 Eureka)。因此,在网关应用程序 (Zuul) 中,您不需要在类路径中包含 Ribbon。

如果您没有通过 Zuul 看到实例之间的负载平衡,请尝试增加请求(例如 > 200 个请求)

关于spring - 负载平衡(ribbon)和路由(zuul)Spring REST API(Spring Data JPA)请求到同一服务的多个副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com