Initially I want to explore the solutions to implement Servlet/OutputStream with limited throughput in order to limit single download to some bandwidth.
It looks to be a perfect article which describe the way to distribute/manage server resources for large downloads.
It help to address a lot of issues, like:
some clients might be more privileged, having bigger or no limit at all,
some might be black listed, resulting in connection rejection or very low throughput
banning IPs, requiring authentication, cookie/user agent verification, etc.
we might try to correlate concurrent requests coming from the same client and use the same bucket for all of them to avoid cheating by opening several connections. We might also reject subsequent connections
and much more…