Репликация изменений в наборе ~10000 уникально идентифицированных фрагментов данных в ненадежной сети

Алиса и Боб имеют два набора по ~10000 фрагментов данных (каждый меньше, чем 65536 байт, обычно намного меньше), каждый с 12-байтовым идентификатором (временная метка + CRC32). Они оба хотели бы иметь объединение этих наборов. Их наборы отличаются незначительно: возможно, Алиса или Боб получили 10 новых фигур, поэтому им лучше определить, какие фрагменты данных отправлять друг другу, и отправлять только их.

Алиса и Боб установили соединение TLS (с довольно сложным контролем доступа, включающим клиентские сертификаты и собственный CA). Как они проводят репликацию?

До сих пор они были:

  1. построение массива идентификаторов
  2. с помощью librsync повторить это другой стороне
  3. другая сторона, имеющая оба массива, определит соответствующие действия и отправит / запросит отсутствующие фрагменты данных

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

Есть ли лучший способ сделать это? Может, существующий протокол?

1 ответ

Если вы доверяете rsync, измените данные, которые будут проиндексированы, вашим текущим идентификатором, а также Алисой или Бобом. Затем Алиса использует rsync для передачи данных Бобу, а Боб использует rsync для получения данных от Алисы. Оба обрабатывают данные независимо после этого.

Если вам нужна более эффективная работа под капотом, вы можете использовать криптографически подписанные контрольные точки для получения всех данных до определенной точки. Когда один из них отправил эту контрольную точку, а другой проверил, что их данные соответствуют этой контрольной точке, то все данные до этой контрольной точки, как известно, совпадают, и ни одна из них не пытается синхронизировать ее снова. Если ваши метки времени соответствуют моменту, когда данные поступили в распоряжение Алисы и / или Боба, они могут использоваться для этой цели. В противном случае вы можете добавить идентификатор для этой цели.

Другие вопросы по тегам