Начну с сценарием Меня больше всего интересует:«Стандартный» подход для сбора данных из/распределения данных на несколько устройств/серверов?
У нас есть несколько устройств (2 - 10), которые все должны знать о растущий набор данных (тысячи до сотен тысяч мелких кусков, говорят 100 - 1000 байт каждый). Данные могут быть сгенерированы на любом устройстве, и мы: хотим, чтобы каждое устройство было в состоянии получить все данные (изменить: .. В конечном итоге. Устройства не подключены и/или онлайн все время, но они синхронизируются время от времени) Нет данных удаляется или изменяется.
Есть, конечно, несколько наивных подходов, чтобы справиться с этим, но я думаю, все они имеют некоторые серьезные недостатки. Наивно отправляя все, что мне нужно, все остальное приведет к плохой работе с большим количеством старых данных , отправляемых снова и снова. Сначала отправьте инвентарь, а затем сообщите , что другие устройства запрашивают то, что им не хватает, не пригодится для небольших данных . Так может быть, когда каждое устройство помнит, когда и с кем они разговаривали с , может быть полезным компромиссом? Пока число партнеров относительно невелико, а дата нашей последней синхронизации не использует столько места , но должно быть легко просто отправить то, что было добавлено с тех пор.
Но это все только догадки.
Это может быть очень широкая тема , и меня также интересует проблема в целом: (децентрализованная) версия управления, вероятно, делает что-то подобное , что я хочу, а также часть программного обеспечения для синхронизации от пользователей smart телефона, планшета и камеры в онлайн-хранилище и т. д. Каким-то образом они все разные, и есть много факторов, таких как размер данных, пропускная способность, требования к согласованности, мощность обработки или количество устройств, которые агрегировали новые данные между синхронизациями, чтобы иметь в виду, так что же такое теория об этом? Где я должен искать, чтобы найти документы и так о том, что работает, а что нет, или в каждом случае просто так много отличается от всех остальных тем, что нет хороших решений по всему миру?
Уточнение: Я не ищу готовые программные решения/продукты. Это больше похоже на вопрос, какой алгоритм поиска использовать для поиска путей в графе. Книги по информатике, вероятно, скажут вам, что это зависит от особенностей графика (направленного «взвешенного» гиперграфа? Евклидова?), Или вам в конечном итоге понадобится всевозможный путь или только несколько. Существуют разные алгоритмы для того, что вам нужно. Я также рассмотрел вопрос по этому вопросу на https://cs.stackexchange.com/.
Похоже, что есть центральный сервер или что по крайней мере один сервер должен быть онлайн все время. Это не то, что мне нужно, и я действительно не ищу библиотеки или фреймворки, меня больше интересуют (общие) альгорифмы. – Higemaru