我有一个情况,大批量的服务器(X)按需要从一组较小的Web服务器(Y)请求数据。
最糟糕的情况是如果X中的所有服务器决定向Y中的一个服务器提取不同的请求。那将是X个连接,这可能是一个非常大的stream量突发。 最好的情况是,如果X中的1台服务器与Y中的1台服务器串联。 生活不是这样的。
一个想法就是放置一个代理服务器,类似于X和Y之间的squid。所有的X服务器都可以连接到这个代理服务器,但是会导致一些持久的(http keepalive)连接到Y.如果less数人说,3或者4,那么它会漏斗。 如果我们能够限制这些联系,交通决定高峰,我们不会伤害任何人,除了我们自己。
思考?
你考虑过负载平衡吗? 有各种技术可以实现这一点。 我的首选是LVS,但其他适用于Web服务器负载平衡的解决scheme包括..
LVS有不同的调度程序 ,它们确切地指定了连接的处理方式。 这也是非常轻量级的,我运行在小型商品硬件上,处理大量网站的stream量。
看一看逆向代理/cachingconfiguration中的nginx ,或者如果你更熟悉Apache,Apache2 + mod_proxy , mod_proxy_balancer和mod_cache 。