如何防止服务器网络中的循环 http 请求?
How can I prevent circular http requests in a network of servers?
我有一个 web.py 程序充当 Web 服务,根据其目录中的文件提供响应。
现在我想构建一个服务器网络,每个服务器 运行 一个程序实例。此外,每个服务器都有一个到其他服务器的地址列表。
这背后的动机是允许不同的服务器存储不同的文件,提供(现在分布式)服务的不同部分。
到目前为止一切顺利,每个服务器都查看自己的文件,创建响应,然后将他从网络中的邻居那里得到的所有响应连接起来。
问题是,如果两个服务器(直接或间接)在其列表中彼此存在,这可能会导致循环请求。
我该如何防止这种情况发生?我正在考虑为每个请求附加一个服务器地址列表。服务器在收到请求时会将自己添加到列表中。它只会请求那些不在列表中的邻居的响应。这是可行的方法吗?
http(请求)中是否内置了一些东西来收集来自多个服务器的响应而不会产生无限循环?
您的方法应该有效。
可能会更快地检查服务器是否在请求列表中看到自己 - 这意味着它已经处理了该请求,因此它在其列表中的所有其他服务器 应该 已经在响应列表中 - 无需检查每一个。或者可以将其用作冗余的健全性检查?除非您的系统允许在多个服务器上同时传入重复请求。
AFAIK HTTP 仅处理 client/server(即点对点)通信,在 1:1 request/response 模型中 - 无循环。
我有一个 web.py 程序充当 Web 服务,根据其目录中的文件提供响应。
现在我想构建一个服务器网络,每个服务器 运行 一个程序实例。此外,每个服务器都有一个到其他服务器的地址列表。
这背后的动机是允许不同的服务器存储不同的文件,提供(现在分布式)服务的不同部分。
到目前为止一切顺利,每个服务器都查看自己的文件,创建响应,然后将他从网络中的邻居那里得到的所有响应连接起来。
问题是,如果两个服务器(直接或间接)在其列表中彼此存在,这可能会导致循环请求。
我该如何防止这种情况发生?我正在考虑为每个请求附加一个服务器地址列表。服务器在收到请求时会将自己添加到列表中。它只会请求那些不在列表中的邻居的响应。这是可行的方法吗?
http(请求)中是否内置了一些东西来收集来自多个服务器的响应而不会产生无限循环?
您的方法应该有效。
可能会更快地检查服务器是否在请求列表中看到自己 - 这意味着它已经处理了该请求,因此它在其列表中的所有其他服务器 应该 已经在响应列表中 - 无需检查每一个。或者可以将其用作冗余的健全性检查?除非您的系统允许在多个服务器上同时传入重复请求。
AFAIK HTTP 仅处理 client/server(即点对点)通信,在 1:1 request/response 模型中 - 无循环。