Отправка большого файла по сети непрерывно - PullRequest
1 голос
/ 07 июня 2010

Нам нужно написать программное обеспечение, которое бы непрерывно (т.е. новые данные отправлялось по мере их поступления) отправляло очень большие файлы (несколько ТБ) одновременно нескольким адресатам. У некоторых пунктов назначения есть выделенное оптоволоконное соединение с источником, а у некоторых нет.

Возникает несколько вопросов:

  • Мы планируем использовать TCP-сокеты для этой задачи. Какую процедуру отработки отказа вы бы порекомендовали для обработки отключений сети и разрыва соединений?
  • Что должно произойти после завершения загрузки: должен ли сервер закрывать сокет? Если это так, то является ли хорошим решением для проекта, чтобы другой демон предоставлял контрольные суммы файлов на другом порту?
  • Не могли бы вы порекомендовать метод обработки поврежденных файлов, помимо их повторной загрузки? Возможно, я мог бы разбить их на 10-мегабайтные блоки и рассчитать контрольные суммы для каждого блока отдельно?

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2010

Поскольку ответов не дано, я делюсь своими собственными решениями здесь:

  • Существует отдельный демон для предоставления контрольных сумм для кусков и целых файлов.
  • Мы решили пока отказаться от идеи использования многоадресной передачи через VPN; мы используем многопроцессорный сервер для распространения файлов. Сокет закрывается, и рабочий процесс завершается, как только загрузка файла завершена; любые поврежденные фрагменты необходимо загружать отдельно.
  • Мы используем монитор файловой системы для захвата новых данных, как только они поступают на сервер распространения уровня 1.
...