Надежное предоставление данных
-
19-09-2019 - |
Вопрос
Как я могу убедиться, что мой файловый сервис надежен и масштабируем?Сколько параллельных запросов он может обработать?
Я думаю не только об аппаратных возможностях и ширине полосы пропускания.
Решение
Если это статические файлы, просто дайте ссылку на них. напрямую.Все приличные контейнеры сервлетов/серверы приложений имеют хорошо развитую DefaultServlet
.Если это статические файлы, расположенные снаружи веб-приложение, с которым вы их свяжете, вы также можете просто добавить корневую папку этих файлов в качестве другого контекста.Непонятно, какой сервер вы используете, но если бы это был Tomcat, вы могли бы просто добавить новый <Context>
к server.xml
:
<Context docBase="/path/to/static/files" path="/files" />
Таким образом, он доступен http://example.com/files/...
.
Если это динамически генерируемые файлы или файлы, поступающие из базы данных, вам необходимо разработать сервлет, который эффективно выполняет работу ввода-вывода:то естьне храните без необходимости все данные в памяти (например,в ByteArrayInputStream
или byte[]
прежде чем выдать их на выход.Просто напишите байты немедленно на выход по мере поступления.Вы можете найти это в тех примерах базовый файловый сервлет и еще расширенный файловый сервлет (поддержка резюме и так далее) полезно.
Другие советы
Если вы просто обслуживаете статические файлы из файловой системы, просто используйте Apache — это будет лучше, чем все, что вы напишете сами.