Каковы хорошие способы синхронизации файла в распределенной системе? - PullRequest
0 голосов
/ 21 июня 2011

Предположим, у вас есть файл в S3 (сервис хранения Amazon). Есть 10 машин, которые скачивают этот файл с s3 и вносят аддитивные изменения. Каждый час должен обновляться файл на s3, который должен быть объединением всего файла машины + исходного файла. Этот процесс продолжается (10 машин загружают обновленный файл и работают с ним.)

Как бы вы разработали решение для этого?

1 Ответ

2 голосов
/ 21 июня 2011

Вы также можете использовать S3 для обновления временных файлов.

Используйте вложенные области на S3 для хранения временных файлов по часам и присвойте им имена по IP-адресу или имени сервера 10 машин.

На S3:

/bucket-name/master_file
/bucket-name/timestamp/server1_file
/bucket-name/timestamp/server2_file
...
/bucket-name/timestamp/server10_file

Через час, пока есть 10 файлов дополнений, загрузите их локально (используя какой-либо метод чтения файлов с использованием любого языка программирования, который вы используете), объедините или все, что вам нужно сделать, и снова сохраните master_file там. *

Используйте задание cron или подобное для выполнения каждый час. Одна запись cron на каждой из 10 машин для выполнения того, что им нужно, и одна задача cron на главной машине для объединения файлов. Затем вы можете удалить вложенные области, если хотите, или вообще не располагать ими (плюсы и минусы для мониторинга и регистрации).

...