Облачная синхронизация пользовательских данных — это не просто загрузка и скачивание. Она должна защищать приватное содержимое при передаче, сохранять низкую стоимость хранения, упорядочивать запись с нескольких устройств, учитывать разные структуры данных, запрашивать подтверждение перед опасным удалением и сохранять путь назад, если решение окажется ошибочным.
Orkas рассматривает облачную синхронизацию как границу ответственности продукта, а не фоновую утилиту. Диалоги, агенты, навыки, состояние задач, файлы знаний и настройки должны перемещаться между устройствами с чёткой цепочкой ответственности: устройство подготавливает содержимое, объектное хранилище хранит байты, а сервер владеет авторитетным индексом.
Ниже приведена схема, с помощью которой мы рассматриваем систему: зашифрованный поток содержимого, хранение с адресацией по содержимому, блокировка синхронизации на уровне аккаунта, фиксация под управлением сервера, детерминированные правила синхронизации, обработка конфликтов с помощью модели, подтверждение удаления, корзина и маркеры восстановления.
Контракт синхронизации
Каждый проход синхронизации отвечает на четыре продуктовых вопроса: какое содержимое может перемещаться, как оно защищено, кто вправе опубликовать новый облачный индекс и как пользователь сможет восстановить данные, если синхронизация приняла неверное решение?
Путь зашифрованного содержимого
Пользовательские данные подготавливаются на устройстве до поступления в хранилище. Механизм синхронизации нормализует набор кандидатов, вычисляет идентификатор содержимого, шифрует данные, загружает их с краткосрочными учётными данными и проверяет скачанные байты перед обратной записью на устройство.
Хранилище и индекс
Orkas отделяет хранимые байты от облачного индекса. Объекты содержимого содержат зашифрованные данные. Индекс фиксирует, какие логические элементы данных должны существовать, их идентификаторы содержимого, счётчики версий, размер в хранилище, облачную ревизию и состояние метки удаления. Устройство также хранит базовое состояние последнего успешного прохода, чтобы отличать старое состояние от новых правок.
Один проход синхронизации
Проход начинается с малозатратных действий и становится строгим только при наличии реальной работы. Сначала Orkas проверяет, изменилось ли что-нибудь, затем получает блокировку синхронизации аккаунта, повторно вычисляет изменения под этой блокировкой, перемещает содержимое, просит сервер зафиксировать операции с индексом и наконец обновляет базовое состояние устройства.
Блокировка синхронизации и фиксация
Блокировка синхронизации и проверка при фиксации решают разные задачи. Блокировка синхронизации уменьшает бесполезную параллельную работу устройств. Серверная блокировка упорядочивает записи индекса. Проверка ожидаемой облачной ревизии не позволяет устаревшему чтению стать новым источником истины. Проверки квоты и схемы выполняются в том же управляемом сервером процессе фиксации.
Правила прежде конфликтов
Большинство решений при синхронизации не связано с конфликтами. Устройство сравнивает базовое состояние, текущие данные устройства и облачный индекс. Если изменилось только облако — скачать. Если изменилось только устройство — загрузить. Если изменились обе стороны — выбрать обработку по типу содержимого. Если что-то исчезло — перейти к безопасной процедуре удаления, а не удалять данные немедленно.
Обработка конфликтов
Когда обе стороны действительно изменились, Orkas не сводит всё к правилу «побеждает последняя запись». Дополняемые журналы можно объединять по недостающим записям. Списки — по стабильным идентификаторам записей. Структурированный JSON может использовать счётчики версий и временные метки. С Markdown и двоичными файлами подход осторожный: если система не может доказать, что объединение пройдёт без потерь, она сохраняет полную копию проигравшей версии.
Для неоднозначных конфликтов текста или структурированного содержимого продукт может собрать соответствующие версии для обработки с помощью модели. Модель может объяснить конфликт, подготовить черновик объединённой версии или помочь пользователю выбрать. Это не единственная защита: детерминированная проверка, архивные оригиналы и доступное пользователю восстановление остаются частью процесса.
Подтверждение удаления
Удаления рассматриваются как переходы состояния. Удаление на удалённой стороне превращается в метку удаления. Удаление на устройстве становится кандидатом на операцию. Orkas проверяет недавние записи, отслеживает большие волны удалений и приостанавливает проход для подтверждения, когда объём исчезающих пользовательских данных выглядит рискованным.
Корзина и восстановление
Прежде чем допустимое удаление уберёт копию с устройства, Orkas перемещает её в корзину синхронизации. Проигравшие в конфликте версии архивируются для проверки. Ожидающие фиксации загрузки сохраняются при сбое фиксации, чтобы следующий проход мог повторно использовать байты. Если пользователь намеренно очищает облачные данные, другие устройства видят маркер очистки и перестают повторно загружать устаревшее содержимое.
Что это нам даёт
В результате получается система синхронизации с чёткими границами. Устройства подготавливают и проверяют содержимое. Объектное хранилище хранит зашифрованные байты. Сервер публикует индекс. Блокировка синхронизации аккаунта и серверная блокировка упорядочивают проходы. Правила обрабатывают типичные случаи. Модель помогает с неоднозначными конфликтами. Подтверждение удаления и корзина защищают пользователей от самых дорогостоящих ошибок.
Именно такой стандарт нужен Orkas для облачной синхронизации: не магия и не слепое зеркало, а аккуратный механизм, который позволяет пользовательским данным перемещаться между устройствами и сохранять согласованность.