Регулярно "появляется" куча новых файлов с уникальными именами.1 на одном сервере. (Как и сотни ГБ новых данных в день, решение должно масштабироваться до терабайт. Каждый файл имеет размер в несколько мегабайт, до нескольких десятков мегабайт.)
Эти файлы обрабатываются несколькими машинами. (Десятки, если решение масштабируется до сотен.) Должна быть возможность без труда добавлять и удалять новые машины.
Существуют серверы хранения резервных файлов, на которых каждый входящий файл должен скопировать для архивного хранения. Данные не должны быть потеряны, все входящие файлы должны в конечном итоге доставляться на сервер резервного хранилища.
Каждый входящий файл myst доставляется на отдельную машину для обработки, и следует скопировать на сервер хранения резервных копий.
Серверу-получателю не нужно хранить файлы после того, как он отправил их по пути.
Пожалуйста, порекомендуйте надежное решение для распространения файлов описанным выше способом. Решение не должен быть основанным на Java. Unix-way решения предпочтительнее.
Серверы на базе Ubuntu, находятся в одном дата-центре. Все остальное можно адаптировать к требованиям решения.
1Обратите внимание, что я намеренно опускаю информацию о способах передачи файлов в файловую систему. Причина в том, что в настоящее время файлы отправляются третьими сторонами несколькими разными устаревшими средствами (как ни странно, через scp и через ØMQ). Кажется, проще вырезать кросс-кластерный интерфейс на уровне файловой системы, но если для того или иного решения действительно потребуется какой-то конкретный транспорт - унаследованные транспорты можно обновить до этого.
Вот одно из решений того, что вы ищете. Никакая java не участвует в создании этой системы, только легко доступные биты с открытым исходным кодом. Представленная здесь модель может работать с другими технологиями, кроме тех, которые я использую в качестве примера.
Эта установка должна иметь возможность принимать файлы с экстремальной скоростью при наличии достаточного количества серверов. Получение совокупной скорости приема 10GbE должно быть осуществимо, если вы ее достаточно увеличите. Конечно, обработка такой большой объем данных потребует еще большего количества серверов в вашем классе машин обработки. Эта установка должна масштабироваться до тысячи узлов и, возможно, выше (хотя насколько далеко зависит от того, что именно вы делаете со всем этим).
Глубокие инженерные задачи будут связаны с процессом управления рабочим процессом, скрытым внутри процесса AMQP. Это все программное обеспечение, и, вероятно, оно создано специально для вашей системы. Но он должен быть сытым данными!
Учитывая, что вы пояснили, что файлы будут поступать через scp, я не вижу причин для существования интерфейсного сервера, поскольку транспортный механизм - это то, что можно перенаправить на уровне 3.
Я бы поставил LVS-директора (пару) впереди, а за ним - пул серверов обработки и политику перенаправления циклического перебора. Это упрощает добавление и вычитание серверов в / из пула, повышает надежность, потому что нет внешнего сервера, который мог бы упасть, и это означает, что нам не нужно решать вопрос pull / push о получении файлов из интерфейс к серверам обработки, потому что нет интерфейса.
Каждый сервер пула при получении файла должен делать две вещи: сначала копировать его в архивное хранилище, затем обрабатывать файл и отправлять его по пути.