Ограничить пропускную способность / скорость загрузки файла в сервлете

у нас есть высоконагруженное Java-приложение, которое работает в кластерном режиме.

Мне нужно добавить возможность загрузки и выгрузки файлов для нашего клиентов. Для хранения файлов я собираюсь использовать gridFs пользователя, не уверен, это лучший выбор, но mongo можно кластеризовать, а mongo может реплицировать данные между узлами diff. Это именно то, что мне нужно.

Разные группы пользователей должны быть ограничены разной пропускной способностью. Исходя из некоторых бизнес-правил, я должен ограничить скорость загрузки для некоторых пользователей. Я видел несколько решений для этого

Большинство из них работают одинаково.

  • Прочитать кучу байтов
  • Спящий поток
  • Повторить

Mongo просто предоставит мне InputStrem, и я могу читать из этого потока и записать в выходной поток сервлета. Я не уверен, что это правильный подход. Также я боюсь, что пользователи могут создавать много параллельных потоков во время загрузки, что может снизить производительность.

Может ли это быть проблемой для контейнера сервлетов?

Если это может быть проблемой, как ее можно избежать? возможно, используя nio?

Я предпочитаю использовать чистое решение java.

Любая помощь будет принята с благодарностью.

7
задан BalusC 20 February 2011 в 22:27
поделиться