2008-10-24 3 views
10

У меня есть много данных, чтобы синхронизировать более 4 или 5 сайтов по всему миру, около половины терабайта на каждом сайте. Это изменяется (добавляется или изменяется) примерно на 1,4 гигабайта в день, и данные могут меняться на любом из четырех сайтов.Каков наилучший способ синхронизации больших объемов данных по всему миру?

Большой процент (30%) данных - это дублированные пакеты (возможно, упакованные JDK), поэтому решение должно включать способ сбора факта, что на локальной машине есть такие вещи, лежащие на локальной машине и захватить их вместо загрузки с другого сайта.

Контроль версий - это не проблема, это не кодовая база.

Мне просто интересно, есть ли там какие-либо решения (желательно с открытым исходным кодом), которые приближаются к такому веществу?

Мой детский скрипт с использованием rsync больше не режет горчицу, я хотел бы сделать более сложную, интеллектуальную синхронизацию.

Благодаря

Edit: Это должно быть UNIX на основе :)

ответ

12

Вы пробовали Unison?

У меня были хорошие результаты. Это, в основном, более разумный rsync, который, возможно, является тем, что вы хотите. Существует список сравнения инструментов синхронизации файлов here.

+0

Это * почти * право, и мне особенно нравится ссылка на сайт. С Unison он сначала не смотрит на локальную файловую систему для решения, скажем, в родительском каталоге или в каталоге сестра (я даже хотел бы определить это). Если размер, имя, мода-время, контрольная сумма совпадают, возьмите это вместо ... – Spedge

+0

Почему вы не используете вместо этого ссылки для этого вместо репликации этих JDK и еще чего-то? Не кажется правильным беспокоиться о дублировании вещей, которые, разумеется, не нуждаются в дублировании. Unison WILL синхронизирует ссылки ... так что это сработает и избавит вас от некоторых космических потребностей и некоторых головных болей. –

1

У вас есть много вариантов:

  • Вы можете попробовать настроить реплицируется DB для хранения данных.
  • Используйте комбинацию rsync или lftp и пользовательские скрипты, но это вас не устраивает.
  • Использование Git операций РЕПО с макс сжатий и синхронизации между ними, используя скрипты
  • Поскольку объем данных достаточно велик, и, вероятно, важно, сделать что-либо некоторые заказные разработки по нанять эксперта;)
5

Звучит как работа для BitTorrent.

Для каждого нового файла на каждом сайте создайте файл семпла bittorrent и поместите его в централизованный доступный в Интернете каталог.

Каждый сайт затем загружает (через bittorrent) все файлы. Это позволит вам использовать общий доступ к пропускной способности и автоматическое повторное использование локальной копии.

Актуальный рецепт будет зависеть от ваших потребностей. Например, вы можете создать 1 семестр bittorrent для каждого файла на каждом хосте и установить время модификации семенного файла таким же, как время модификации самого файла. Поскольку вы будете делать это ежедневно (ежечасно?), Лучше использовать что-то вроде «make» для (повторного) создания файлов семян только для новых или обновленных файлов.

Затем вы копируете все файлы семян со всех хостов в централизованное местоположение («tracker dir») с опцией «перезаписывать только если новый». Это дает вам набор семян торрента для всех новейших копий всех файлов.

Затем каждый хост загружает все файлы семян (опять же, с «перезаписывать при более новой настройке») и запускает загрузку bittorrent на всех из них. Это загрузит/перезагрузит все новые/обновленные файлы.

Rince и повторять, ежедневно.

BTW, не будет «загрузки из себя», как вы сказали в комментарии. Если файл уже присутствует на локальном хосте, его контрольная сумма будет проверена, и загрузка не будет выполнена.

+0

Мне нравится эта идея. Torrenting, безусловно, прояснит проблемы с пропускной способностью, и загрузка вещей из себя будет гениальна. Однако дополнительным вопросом к этому будет вопрос, как мне решить, что мне нужно для синхронизации в любой момент? Мне нужно создать список изменений ... не уверен, могу ли я это сделать: S – Spedge

+0

То, как я это вижу, вы можете думать в терминах обычных операций копирования/перемещения, заменяя bittorrent вместо фактического файла переводы. Я отредактирую свое решение, чтобы отразить это. – ADEpt

2

Как о чем-то вдоль линий Global Filesystem Red Hat, так что вся структура разбита на каждом участке на несколько устройств, вместо того, чтобы все реплицируются в каждом месте?

Возможно, коммерческая сетевая система хранения данных, например, от LeftHand Networks (отказ от ответственности - я понятия не имею о стоимости и не использовал их).

0

Вы пробовали патч detect-renamed для rsync (http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff)? Я сам не пробовал, но задаюсь вопросом, обнаружит ли он не только переименованные, но и дублированные файлы. Если он не обнаружит дублированные файлы, то, я думаю, можно было бы изменить патч, чтобы сделать это.

1

Отъезд супер гибкий .... это довольно круто, не использовали его в крупномасштабной среде, но на 3-узловой системе казалось, что он отлично работает.

Смежные вопросы