Я нашел ваш пост от Google, чтобы посмотреть, написал ли кто-нибудь параллельный аналог wget, который делает это. Это определенно возможно и будет полезно для очень больших файлов по каналу с относительно высокой задержкой: я получил более чем 10-кратное улучшение в скорости благодаря нескольким параллельным соединениям TCP.
Тем не менее, поскольку ваша организация запускает как приложение, так и веб-службу, я предполагаю, что ваша ссылка имеет высокую пропускную способность и низкую задержку, поэтому я подозреваю, что этот подход вам не поможет.
Поскольку вы передаете большое количество небольших файлов (по современным стандартам), я подозреваю, что на самом деле вы перегорели из-за настройки соединения больше, чем из-за скорости передачи. Вы можете проверить это, загрузив похожую страницу, полную крошечных изображений. В вашей ситуации вам может потребоваться идти по порядку, а не параллельно: посмотрите, есть ли в вашей клиентской библиотеке HTTP возможность использовать постоянные соединения HTTP, так что трехстороннее рукопожатие выполняется только один раз на страницу или меньше один раз за изображение.
Если в конечном итоге вы по-настоящему фанатичны в отношении задержки TCP, вы также можете обмануть , как это делают некоторые основные веб-службы.
(Моя собственная проблема связана с другим концом спектра производительности TCP, когда длительное время приема-передачи действительно начинает затягивать мою пропускную способность для передачи файлов с несколькими ТБ, так что если вы включите параллельную библиотеку HTTP, Я хотел бы услышать об этом. Единственный инструмент, который я нашел, под названием «puf», распараллеливает файлы, а не байты. Если вышеупомянутое не помогает вам, и вам действительно нужен инструмент параллельной передачи, аналогичным образом свяжитесь: I возможно, сдался и написал это к тому времени.)