Я регулярно синхронизирую внешние данные и написал достаточно процессов, чтобы говорить на эту тему. Вы запрашиваете логистические решения, даже не упоминая контекст данных и его цель доставки в другое место.
Пытаетесь ли вы зеркально скопировать мастер-копию файла в другое место? Если это так, то вам нужно просто доставить файл с прикрепленным уникальным номером доставки, что позволит получателю независимо синхронизировать оба набора данных и обрабатывать любые обнаруженные различия в файлах. Если вы принудительно выполняете эту работу от имени получателя, возможно, вы уничтожаете данные. Я настоятельно рекомендую, чтобы получатель извлекал данные по мере необходимости и сам синхронизировал / обрабатывал их, а не выдвигал их. Таким образом, эти бизнес-правила организованы там, где они должны быть. Pu sh процессы плохие.
Вы пытаетесь разрешить пользователям перезаписывать мастер-файл своими собственными копиями, спрашивая, как координировать свои загрузки, чтобы файл не перезаписывался? Если это так, вам нужно отнять у них прямой контроль, чтобы перезаписать этот файл. Вам необходимо отдельно синхронизировать каждый файл в соответствии с пользовательским процессом, потому что у каждого из них могут быть свои собственные бизнес-правила.
Когда вы говорите «ищите внешний кеш, и есть ли запись для текущего файла с статус УСПЕХ, файл будет пропущен ", вы дали слишком большую ответственность перед доставщиком. Я говорю это, но как ты узнал? При производстве никто не должен делать больше, чем нести груз. Потребители несут ответственность за распределение этого пространства. Если потребителю действительно нужен файл, пусть он примет решение заказать его и обработать его получение, а не заставляет доставителя жонглировать такими решениями.