我遇到这样一种情况,一大批服务器(X)需要根据需要向一组较小的 Web 服务器(Y)请求数据。
最糟糕的情况是,如果 X 中的所有服务器都决定将不同的请求发送到 Y 中的一台服务器。那将是 X 数量的连接,可能会产生非常大的流量突发。最好的情况是,如果 X 中的一台服务器同时访问 Y 中的一台服务器。生活不是这样的。
一个值得考虑的想法是在 X 和 Y 之间放置一个类似于 squid 的代理。所有 X 服务器都可以连接到此代理,但会导致与 Y 的几个持久(http keepalive)连接。如果少数几个是 3 或 4 个,那么它会形成漏斗。如果我们可以对这些连接进行速率限制,并且流量决定异常高,我们不会伤害任何人,只会伤害我们自己。
有什么想法吗?
答案1
答案2
看一下nginx在反向代理/缓存配置中,或者如果你更喜欢 Apache,Apache2 +mod_proxy,mod_proxy_balancer和mod_cache。