【问题标题】:How can I prevent circular http requests in a network of servers?如何防止服务器网络中的循环 http 请求?
【发布时间】:2015-08-09 17:48:28
【问题描述】:

我有一个 web.py 程序充当网络服务,根据其目录中的文件提供响应。

现在我想建立一个服务器网络,每个服务器运行一个程序实例。此外,每个服务器都有一个到其他服务器的地址列表。

这背后的动机是允许不同的服务器存储不同的文件,提供(现已分发的)服务的不同部分。

到目前为止一切顺利,每个服务器查看自己的文件,创建响应,然后连接到他从网络中的邻居那里获得的所有响应。

问题在于,如果两台服务器(直接或间接)彼此在其列表中,这可能会导致循环请求。

如何防止这种情况发生?我正在考虑将服务器地址列表附加到每个请求。服务器会在收到请求时将自己添加到列表中。它只会请求那些不在列表中的邻居的响应。这是一种可行的方法吗?

http(请求)中是否内置了一些东西来收集来自多个服务器的响应而不会造成无限循环?

【问题讨论】:

  • 我不认为有任何内置功能可以解决您的问题...但也许您希望发送请求以整理来自其他服务器的数据“特殊”所以其他服务器知道他们不应该尝试搜索其他服务器......或者让 uuid 随请求一起传递,所以一旦你得到一个循环,你就可以识别它并打破它

标签: python http webserver web.py circular-reference


【解决方案1】:

您的方法应该有效。

检查服务器是否在请求列表中看到自己可能会更快 - 这意味着它已经处理了该请求,因此它在其列表中的所有其他服务器应该已经在响应列表中 -无需逐一检查。或者也许将其用作冗余的健全性检查?除非您的系统允许在多个服务器上同时收到重复请求。

AFAIK HTTP 仅处理客户端/服务器(即点对点)通信,采用 1:1 请求/响应模型 - 无循环。

【讨论】:

  • 我不确定为地址列表选择什么分隔符,“|”似乎是一个不错的选择,因为它在 url 中是不允许的。
  • 在 HTTP 传输编码之前将其放入请求负载/数据中并不重要。
猜你喜欢
  • 2012-04-18
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
相关资源
最近更新 更多