Может ли загрузка длинного файла обрабатываться кластером серверов (Tomcat), где, если один сервер выходит из строя во время загрузки, другой забирает его

StackOverflow https://stackoverflow.com/questions/727394

Вопрос

Что происходит, когда Tomcat выходит из строя во время процесса загрузки.Будет ли это просто выдавать 50-кратную ошибку.Возможно ли изящно обработать сбой сервера и переслать остальную часть запроса на другой сервер.

Это было полезно?

Решение

Я не знаю конкретно о tomcat, но это TCP-соединение.Если загрузка завершится неудачей, то TCP-соединение разорвется.Клиент прекратил бы загрузку.

Если у клиента есть возможности повтора, которые позволяют ему перезапустить загрузку в заданной позиции файла, то его можно перезапустить с нового сервера.В общем, это не обычная возможность веб-клиентов, многие сайты с загрузкой больших файлов имеют флэш-клиенты, которые интегрируют возобновление загрузки.

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

Однако это не тривиально и действительно приводит к новой точке отказа.Главное преимущество заключается в том, что он будет работать с любым клиентом, пока клиент не разорвет соединение (он может только устранять сбои сервера на вашей стороне, а не возобновлять прерванные загрузки на стороне клиента)

-Адам

Другие советы

Это звучит так, что вам нужен какой-то балансировщик нагрузки/переход на другой ресурс.По сути, машина, которая действует как интерфейс для нескольких компьютеров - она прослушивает трафик извне и пересылает его узлам (вычисляет) внутри кластера.Если один узел выходит из строя, он знает, как перенаправить трафик на другой компьютер.Это, таким образом, потребовало бы, чтобы все узлы были синхронизированы друг с другом, чтобы такие транзакции, как передача TCP, могли быть продолжены без сбоев.

Чаще всего это реализуется в аппаратном, а не программном обеспечении.В любом случае, не очень тривиально реализовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top