облачная архитектура синхронизации - PullRequest
7 голосов
/ 13 марта 2011

Я думаю о создании решения для синхронизации на основе облака (что-то вроде Dropbox):

  1. Как будет выглядеть надежная архитектура?

  2. Какие технологии вам понадобятся для поддержки различных платформ, таких как Windows, Mac, Linux и мобильные устройства?

  3. Какие эффективные алгоритмы синхронизации вы бы использовали?

Я знаю, что наивная архитектура / решение будет:

  1. Сделайте сетевой вызов в облачное хранилище и получите папку синхронизациидревовидная структура (просто информация метаданных).

  2. иметь клиентский монитор файловой системы для построения структуры дерева локальной папки синхронизации (я полагаю, вы использовали бы что-то вроде lsyncd для монитора файловой системы?)

  3. Извлечение структуры папки синхронизации из предыдущей синхронизации.Теперь у вас есть 3 структуры дерева папок на клиенте.С помощью этих трех деревьев можно определить, что необходимо сделать в локальной папке, а что - в удаленной папке на сервере.Например, добавлять, удалять, редактировать, разрешать конфликты и т. Д., Используя некие предопределенные правила, специфичные для конкретного приложения.

Эта архитектура может быть достаточной, но дьявол кроется в деталях,Что делать, если дерево папок синхронизации очень большое (оно очень широкое и очень глубокое).Очевидно, что потребуется эффективный алгоритм определения различий.Что если сетевое соединение оборвалось, и вы не получили или не отправили все дерево должным образом?Кроме того, отправка только различий в файлах для уменьшения полезной нагрузки сети и т. Д.

Я знаю, что это вещи, для которых у меня есть дизайн, но у меня вопрос: достаточно ли этой архитектуры и стоит ли мне тратить свое время на детали?Как устроен Dropbox и какие технологии и алгоритмы они используют для обеспечения максимальной эффективности синхронизации структур больших папок и размера данных?Есть ли какие-нибудь ресурсы / книги, которые я могу проконсультировать по разработке чего-то подобного?

Заранее спасибо.

1 Ответ

1 голос
/ 04 июня 2011

Хорошим началом будет оценка Dropbox API , чтобы получить представление о том, как они разработали Dropbox API. Это, вероятно, даст вам идеи о том, как методы могут быть адаптированы к вашему решению. Как и в любом решении для синхронизации, дьявол кроется в деталях.

-Билль

...