Как лучше всего синхронизировать большие объемы данных по всему миру?
-
04-07-2019 - |
Вопрос
У меня есть большой объем данных, которые нужно синхронизировать на 4 или 5 сайтах по всему миру, около полутерабайта на каждом сайте.Оно меняется (либо добавляется, либо меняется) примерно на 1,4 Гигабайта в день, причем данные могут меняться на любом из четырех сайтов.
Большой процент (30%) данных представляет собой дубликаты пакетов (возможно, упакованные JDK), поэтому решение должно включать способ определения того факта, что на локальном компьютере лежат такие вещи, и вместо этого захватить их. скачивания с другого сайта.
Контроль версий не является проблемой, это не база кода как таковая.
Мне просто интересно, есть ли какие-нибудь решения (желательно с открытым исходным кодом), которые приближаются к такому?
Мой детский скрипт, использующий rsync, больше не помогает, мне хотелось бы выполнить более сложную и интеллектуальную синхронизацию.
Спасибо
Редактировать :Это должно быть на базе UNIX :)
Другие советы
Похоже на работу для BitTorrent.
Для каждого нового файла на каждом сайте создайте начальный битторрент-файл и поместите его в централизованный каталог, доступный через Интернет.
Затем каждый сайт загружает (через BitTorrent) все файлы.Это обеспечит совместное использование полосы пропускания и автоматическое повторное использование локальных копий.
Фактический рецепт будет зависеть от ваших потребностей.Например, вы можете создать 1 начальное значение BitTorrent для каждого файла на каждом хосте и установить время модификации начального файла таким же, как время модификации самого файла.Поскольку вы будете делать это ежедневно (ежечасно?), лучше использовать что-то вроде «make», чтобы (повторно) создавать начальные файлы только для новых или обновленных файлов.
Затем вы копируете все начальные файлы со всех хостов в централизованное расположение («каталог трекера») с опцией «перезаписывать, только если они более новые».Это даст вам набор торрент-сидов для всех новейших копий всех файлов.
Затем каждый хост загружает все начальные файлы (опять же, с настройкой «перезаписать, если более новая») и начинает загрузку BitTorrent для всех из них.Это приведет к загрузке/перезагрузке всех новых/обновленных файлов.
Промойте и повторяйте ежедневно.
Кстати, никакой "загрузки с себя" не будет, как вы сказали в комментарии.Если файл уже присутствует на локальном хосте, его контрольная сумма будет проверена и загрузка не произойдет.
Как насчет чего-нибудь вроде Red Hat? Глобальная файловая система, чтобы вся структура была разделена по каждому сайту на несколько устройств, а не дублировалась в каждом месте?
Или, возможно, коммерческая сетевая система хранения данных, например, от Левосторонние сети (отказ от ответственности: я понятия не имею о стоимости и не использовал их).
У вас есть много вариантов:
- Вы можете попробовать настроить реплицируемая БД для хранения данных.
- Используйте комбинацию rsync или лфтп и пользовательские скрипты, но это вас не устраивает.
- Использовать мерзавец репозитории с максимальным сжатием и синхронизация между ними с помощью некоторых скриптов
- Поскольку объем данных довольно большой и, вероятно, важный, сделайте либо какую-нибудь собственную разработку, наймите эксперта ;)
Проверьте супер гибкий....это довольно круто, я не использовал его в крупномасштабной среде, но в трехузловой системе он работал отлично.
Звучит как работа для Общий доступ к папкам
Вы пробовали detect-renamed
патч для rsync(http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff)?Сам не пробовал, но интересно, обнаружит ли он не только переименованные, но и дублированные файлы.Если он не обнаружит дублированные файлы, то, думаю, можно будет изменить патч, чтобы это сделать.