如何对Tomcat服务器的下载请求进行带宽控制

如何对Tomcat服务器的下载请求进行带宽控制,tomcat,scalability,Tomcat,Scalability,我有一个tomcat服务器,它将位于AmazonEC2实例中。 它将为大约10000个客户的文件下载请求提供服务 Each client will follow the steps to download some files: (1) Send request to Tomcat to check if need to update files (2) Tomcat will send the file list to client if any (3) Client will downloa

我有一个tomcat服务器,它将位于AmazonEC2实例中。 它将为大约10000个客户的文件下载请求提供服务

Each client will follow the steps to download some files:
(1) Send request to Tomcat to check if need to update files
(2) Tomcat will send the file list to client if any
(3) Client will download the file list via HTTP servlet.
基本上,我们希望在Tomcat服务器高负载时(由于带宽/会话限制等),Tomcat将向客户端请求返回一个间隔, 然后,客户端将等待间隔时间重新发送下载请求。
有什么好方法可以设计这样的场景吗?

您应该查看HTTP缓存控件和范围头来帮助管理它。你想做的事都快死了

如果您使用的是静态文件(即Tomcat将直接为自己服务的文件,而不是通过Servlet或其他类似的东西生成的动态内容),那么Tomcat将自动为您提供范围头

这里的游戏是,您的客户机必须发出实际使用范围头的HTTP请求,并且必须由客户机来限制连接


如果您的客户愿意承担这一责任,那么现成的Tomcat应该可以正常工作,只需通过服务器发布一个文件系统目录即可。开箱即用,它将显示目录中文件的列表,然后您可以使用缓存标头确定发生了什么更改,并使用范围标头打包内容。

您应该查看HTTP缓存控件和范围标头以帮助管理此内容。你想做的事都快死了

如果您使用的是静态文件(即Tomcat将直接为自己服务的文件,而不是通过Servlet或其他类似的东西生成的动态内容),那么Tomcat将自动为您提供范围头

这里的游戏是,您的客户机必须发出实际使用范围头的HTTP请求,并且必须由客户机来限制连接


如果您的客户愿意承担这一责任,那么现成的Tomcat应该可以正常工作,只需通过服务器发布一个文件系统目录即可。开箱即用,它将显示目录中的文件列表,然后您可以使用缓存标题确定发生了什么更改,并使用范围标题来打包内容。

您是否可以控制客户端?例如,您是否向用户提供客户端软件?您是否可以控制客户端?例如,您是否为您的用户提供客户端软件?如果客户端不能被控制,您可以考虑将Apache HTTPD置于Tomcat的前面,并使用MODQOS来执行流量整形,例如,限制任何特定客户端使用的带宽。@ Christopher Schultz,我无法控制客户端。它是由另一个部门开发的,虽然在同一家公司。@Will Hartung,我无法控制客户的行为。通过Servlet动态生成文件。我们从Amazon S3获取文件,并将其存储在字节[]中,该字节将通过servlet OutPutsFoW返回到客户端。如果客户端无法控制,可以考虑将Apache HTTPD放在Tomcat的前面,并使用MODQOS来执行流量整形,例如,限制任何特定客户端所使用的带宽。@ Christopher Schultz我无法控制客户。它是由另一个部门开发的,虽然在同一家公司。@Will Hartung,我无法控制客户的行为。通过Servlet动态生成文件。我们从AmazonS3获取文件,并将其作为字节[]放入内存中,该字节将通过Servlet OutputStream返回给客户端。