Server 有没有办法让代理请求直接响应请求者?

Server 有没有办法让代理请求直接响应请求者?,server,load-balancing,Server,Load Balancing,假设我有以下(明显简化的)体系结构:我有10台服务器运行相同的RESTAPI端点。我有一个中间API,它记录请求,然后将其转发到其中一个服务器(负载平衡器) 现在让我们想象一下,这是一个非常大的流式响应。因此,我显然不希望数据必须通过负载平衡器返回——因为这不会使负载平衡服务器陷入困境并失去作用吗?。实现负载平衡系统的正确方法是什么?该系统将请求委托给节点,但不强制通过负载平衡服务器返回响应 此外,JVM上是否有实现此功能的REST框架?您正在寻找的是所谓的DSR(直接服务器返回)。你可以尝试用

假设我有以下(明显简化的)体系结构:我有10台服务器运行相同的RESTAPI端点。我有一个中间API,它记录请求,然后将其转发到其中一个服务器(负载平衡器)

现在让我们想象一下,这是一个非常大的流式响应。因此,我显然不希望数据必须通过负载平衡器返回——因为这不会使负载平衡服务器陷入困境并失去作用吗?。实现负载平衡系统的正确方法是什么?该系统将请求委托给节点,但不强制通过负载平衡服务器返回响应


此外,JVM上是否有实现此功能的REST框架?

您正在寻找的是所谓的DSR(直接服务器返回)。你可以尝试用谷歌搜索一下。AFAIK大多数硬件负载平衡器都有此选项。
问题是您使用的是什么负载平衡器?是硬件吗,艾伯顿AWS公司,HAProxy公司? 例如:


如果您不是真正喜欢负载平衡器,那么可以尝试分两个阶段进行设置:第一阶段-客户端点击API并获取服务器的ip,第二阶段客户端与服务器对话。最困难的部分是在让其他服务器闲置时不要使某些服务器过载(初始设置和随着时间的推移重新平衡工作负载)

这里所说的是负载平衡。我对你的问题进行了编辑,使措辞更加清晰。是的,我的意思是,我想这是人们长期以来一直在处理的事情。。。当你知道你有很多数据要传输时,有什么众所周知的方法来处理它吗?我想一种方法是让每个请求点击两次…第一次是给你一个后端,第二次直接进入后端。(感谢您的编辑)是的,这可能是任何曾经使用过哪怕是稍微成功的web服务的人都必须处理的问题。我只是做了一些编辑,让问题更清楚,我会等待有更多经验的人给出答案。同时,很酷,谢谢你。在这种特殊情况下,问题不在于连接的寿命长,而在于需要传输大量数据。我当然可以将其分为大量较小的请求,但如果所有数据都通过负载平衡器,就会出现问题。在rest端点上完成的工作量不是很高的任何时候,这似乎都是一个问题。。。或者你只是在后端有大量的服务器。是的,我认为某种DSR方案正是我所想的。。。我只是不确定这通常是在哪一层实现的。代理可以处理这个问题,但我不确定是否有其他servlet级别的方案,比如一些神秘的码头咒语。没有“正确”的答案。它可以透明地发生,负载平衡器完成所有繁重的工作,也可以在应用程序级别发生,而客户机知道这一点。这取决于您的用例以及您希望在这方面投资多少。