在HTTP请求/响应方案中,我认为对响应请求的客户端并不重要(无论如何他都会告诉你)。
简而言之,我想从此开始:
Client
↓ ↑
Nginx
↓ ↑
ServerA
↓ ↑
ServerB
对此:
Client
↓ ↑
Nginx ↖
↓ ↖
ServerA ↖
↓ ↗
ServerB
由于serverB已经有了响应并且没有进行额外的处理,我想绕过serverA,但是如果可能的话应该通过nginx(例如使用压缩)。
具体来说,我想了解更多:
必要的nginx配置(如果有的话)
serverA和ServerB之间的协议交换是否必须特殊?
必须传递的上下文才会发生这种情况?此外,如果他们使用不同的语言会发生什么(在我的案例中是Clojure和Scala)。
一个小样本示例将是非常欢迎(最好是Clojure,Scala,Java,Node.js - 任何语言,只要它可读)。
答案 0 :(得分:0)
在HTTP请求/响应方案的情况下,我唯一能看到的是通过一些HTTP服务器推送。问题是,您将至少使用TCP连接进行Client / Nignx通信。我猜你可以使用某些技术“火上浇油”,但是你需要能够打开一个新的客户端连接来发送新的数据。
在您的第一种情况下,每个服务通过询问请求并等待回复进行通信。
在第二种情况下,您可以执行某些代理请求(无需等待任何响应),但有一些有关客户端的信息可以在服务器B中联系它(打开连接)。
我不知道哪种技术最适合这种技术,但这是我要采取的方向。
答案 1 :(得分:0)
如果所有这些连接都是HTTP请求,除非您自己实施某种man in the middle方案,否则它对客户端很重要。
基本上由于TCP连接的性质,HTTP协议使用哪种方式在线路上传输数据,客户端和服务器会尝试确保每条消息都传递给它的预定目标,并按顺序传递。 / p>
您可以研究TCP协议以更好地了解其局限性。 This视频似乎是一般概述的良好开端。在视频中的8:23,它类比TCP有点像电话交谈,这就是为什么在中间对话中改变服务器或客户端很难的原因。因为它不是那样设计的。
在电话中虽然您可以重定向请求,但您可以使用HTTP重定向来达到您所描述的效果。