Orkas Orkas
Главная Блог Архитектура
Архитектура

Облачная синхронизация на практике: как Orkas синхронизирует данные между устройствами

Как Orkas синхронизирует пользовательские данные между устройствами: шифрование передачи, хранилище содержимого, фиксация изменений сервером, блокировки аккаунта, правила синхронизации, разрешение конфликтов с помощью модели, подтверждение удаления и корзина.

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

Orkas рассматривает облачную синхронизацию как границу ответственности продукта, а не фоновую утилиту. Диалоги, агенты, навыки, состояние задач, файлы знаний и настройки должны перемещаться между устройствами с чёткой цепочкой ответственности: устройство подготавливает содержимое, объектное хранилище хранит байты, а сервер владеет авторитетным индексом.

Ниже приведена схема, с помощью которой мы рассматриваем систему: зашифрованный поток содержимого, хранение с адресацией по содержимому, блокировка синхронизации на уровне аккаунта, фиксация под управлением сервера, детерминированные правила синхронизации, обработка конфликтов с помощью модели, подтверждение удаления, корзина и маркеры восстановления.

Облачная синхронизация с первого взгляда
Данные устройстваСканирует данные пользователя и сравнивает их с последним согласованным базовым состоянием.
Слой безопасностиШифрует, хэширует, проверяет и подписывает намерения каждого прохода синхронизации.
Облачное хранилищеХранит объекты содержимого и компактный индекс того, что должно существовать.
Слой восстановленияХранит метки удаления, архивы конфликтов, запросы на удаление и записи корзины.
Система построена как набор проверок вокруг потока данных, а не как слепое зеркало файлов.
Коротко Приоритет локальной работы — и доступ на другом компьютере Синхронизация включается по желанию; по умолчанию рабочее пространство остаётся на вашем компьютере. Подробнее об этой границе — на странице ИИ-агент с приоритетом локальной работы.
Скачать Orkas — бесплатно

Контракт синхронизации

Каждый проход синхронизации отвечает на четыре продуктовых вопроса: какое содержимое может перемещаться, как оно защищено, кто вправе опубликовать новый облачный индекс и как пользователь сможет восстановить данные, если синхронизация приняла неверное решение?

Контракт для каждого прохода
Область действияУчитываются только пользовательские данные.
ШифрованиеДанные защищаются до выхода с устройства.
ХранениеОбъекты адресуются по идентификатору содержимого.
БлокировкаВ один момент публикует результаты только один проход синхронизации аккаунта.
ФиксацияСервер проверяет и записывает следующий индекс.
ВосстановлениеПри удалениях и конфликтах сохраняется путь назад.
Синхронизация надёжна, потому что каждый этап имеет узкую зону ответственности.

Путь зашифрованного содержимого

Пользовательские данные подготавливаются на устройстве до поступления в хранилище. Механизм синхронизации нормализует набор кандидатов, вычисляет идентификатор содержимого, шифрует данные, загружает их с краткосрочными учётными данными и проверяет скачанные байты перед обратной записью на устройство.

От пользовательских данных к защищённому облачному объекту
ВыборВыбрать данные, созданные пользователем.
ХэшированиеВычислить идентификатор содержимого и метаданные размера.
ШифрованиеЗащитить данные перед загрузкой.
ЗагрузкаОтправить байты объекта с временными учётными данными.
ПроверкаПроверить хэш и ожидаемые метаданные при скачивании.
ПрименениеЗаписывать на устройство только проверенное содержимое.
Объектное хранилище видит зашифрованные данные; механизм синхронизации проверяет идентификатор содержимого, прежде чем доверять скачанному.

Хранилище и индекс

Orkas отделяет хранимые байты от облачного индекса. Объекты содержимого содержат зашифрованные данные. Индекс фиксирует, какие логические элементы данных должны существовать, их идентификаторы содержимого, счётчики версий, размер в хранилище, облачную ревизию и состояние метки удаления. Устройство также хранит базовое состояние последнего успешного прохода, чтобы отличать старое состояние от новых правок.

Три записи, три задачи
Базовое состояние устройстваПамять устройства о последней завершённой синхронизации.
Облачный индексУправляемый сервером список текущих элементов, версий и меток удаления.
Объекты содержимогоЗашифрованные байты, адресуемые по идентификатору содержимого.
Зачем их разделять? Большие объёмы байтов могут находиться в объектном хранилище, а небольшой индекс остаётся единственным источником для решений о синхронизации.
Индекс сообщает устройствам, что должно существовать; объекты содержимого предоставляют байты.

Один проход синхронизации

Проход начинается с малозатратных действий и становится строгим только при наличии реальной работы. Сначала Orkas проверяет, изменилось ли что-нибудь, затем получает блокировку синхронизации аккаунта, повторно вычисляет изменения под этой блокировкой, перемещает содержимое, просит сервер зафиксировать операции с индексом и наконец обновляет базовое состояние устройства.

Жизненный цикл одного прохода
Предварительная проверкаПросканировать данные и получить последние метаданные облачного индекса.
Блокировка синхронизацииЗарезервировать синхронизацию аккаунта за этим устройством.
Повторная проверкаПовторно вычислить изменения после получения блокировки.
ПередачаЗагрузить, скачать, объединить или подготовить удаления.
ФиксацияСервер проверяет облачную ревизию, квоту и схему.
Базовое состояниеПосле успеха записать новое согласованное состояние.
Повторное сравнение важно: предварительные данные могут устареть уже к началу работы.

Блокировка синхронизации и фиксация

Блокировка синхронизации и проверка при фиксации решают разные задачи. Блокировка синхронизации уменьшает бесполезную параллельную работу устройств. Серверная блокировка упорядочивает записи индекса. Проверка ожидаемой облачной ревизии не позволяет устаревшему чтению стать новым источником истины. Проверки квоты и схемы выполняются в том же управляемом сервером процессе фиксации.

Контроль перед фиксацией
Запрос устройстваДоступна ли синхронизация аккаунта?
Блокировка выданаПроход получает короткое окно для сигналов активности.
Объекты готовыБайты содержимого уже загружены или получены.
Серверная блокировкаЗаписи индекса упорядочиваются для каждого аккаунта.
Проверка версииОтклонить, если облачная ревизия изменилась.
ПубликацияЗаписать следующий индекс и обновить данные об использовании.
Устройства перемещают байты; сервер публикует авторитетное состояние.

Правила прежде конфликтов

Большинство решений при синхронизации не связано с конфликтами. Устройство сравнивает базовое состояние, текущие данные устройства и облачный индекс. Если изменилось только облако — скачать. Если изменилось только устройство — загрузить. Если изменились обе стороны — выбрать обработку по типу содержимого. Если что-то исчезло — перейти к безопасной процедуре удаления, а не удалять данные немедленно.

Механизм принятия решений
Базовое состояниеЧто это устройство подтвердило в последний раз.
Текущие данные устройстваЧто сейчас есть на этом устройстве.
Текущее облакоЧто заявлено в серверном индексе.
ДействиеСкачать, загрузить, объединить, пометить удалённым, подтвердить или восстановить.
Базовое состояние позволяет применять простое правило: неизменённые стороны не требуют объединения.

Обработка конфликтов

Когда обе стороны действительно изменились, Orkas не сводит всё к правилу «побеждает последняя запись». Дополняемые журналы можно объединять по недостающим записям. Списки — по стабильным идентификаторам записей. Структурированный JSON может использовать счётчики версий и временные метки. С Markdown и двоичными файлами подход осторожный: если система не может доказать, что объединение пройдёт без потерь, она сохраняет полную копию проигравшей версии.

Для неоднозначных конфликтов текста или структурированного содержимого продукт может собрать соответствующие версии для обработки с помощью модели. Модель может объяснить конфликт, подготовить черновик объединённой версии или помочь пользователю выбрать. Это не единственная защита: детерминированная проверка, архивные оригиналы и доступное пользователю восстановление остаются частью процесса.

Конвейер разрешения конфликтов
КлассификацияОпределить структуру файла и доступные метаданные версий.
Объединение по правиламИспользовать детерминированное объединение, когда это безопасно.
Помощь моделиОбъяснить неоднозначные текстовые конфликты или подготовить черновик.
АрхивированиеСохранить оригиналы, если безопасность неясна.
ВалидацияПроверить схему, идентичность и ожидаемую структуру.
ПубликацияФиксировать только принятый результат.
Помощь модели повышает качество разрешения конфликтов, а детерминированные проверки удерживают её в заданных границах.

Подтверждение удаления

Удаления рассматриваются как переходы состояния. Удаление на удалённой стороне превращается в метку удаления. Удаление на устройстве становится кандидатом на операцию. Orkas проверяет недавние записи, отслеживает большие волны удалений и приостанавливает проход для подтверждения, когда объём исчезающих пользовательских данных выглядит рискованным.

Процедура подтверждения удаления
Обнаружено удалениеЭлемент данных отсутствует или помечен удалённым.
Недавняя записьПроверить, не был ли он создан заново или изменён.
Проверка волныОбнаружить необычно большие пакеты удалений.
ЗапросЗапросить подтверждение при высоком риске.
ПодтверждениеЗафиксировать метки удаления после одобрения.
ОтменаВернуть облачные копии, если удаление было случайным.
Рискованное удаление можно прервать; пользователь получает выбор до того, как оно станет устойчивым состоянием облака.

Корзина и восстановление

Прежде чем допустимое удаление уберёт копию с устройства, Orkas перемещает её в корзину синхронизации. Проигравшие в конфликте версии архивируются для проверки. Ожидающие фиксации загрузки сохраняются при сбое фиксации, чтобы следующий проход мог повторно использовать байты. Если пользователь намеренно очищает облачные данные, другие устройства видят маркер очистки и перестают повторно загружать устаревшее содержимое.

Возможности восстановления
КорзинаУдалённые копии с устройства можно восстановить.
Архив конфликтовПроигравшие версии сохраняются, если объединение неоднозначно.
Ожидающие фиксации загрузкиУспешно загруженные объекты можно использовать повторно после сбоя фиксации.
Маркер очисткиВ аккаунтах с очищенным облаком старые данные не восстанавливаются незаметно.
Восстановление при синхронизации — не одна функция, а несколько небольших путей выхода, расположенных в точках отказа.

Что это нам даёт

В результате получается система синхронизации с чёткими границами. Устройства подготавливают и проверяют содержимое. Объектное хранилище хранит зашифрованные байты. Сервер публикует индекс. Блокировка синхронизации аккаунта и серверная блокировка упорядочивают проходы. Правила обрабатывают типичные случаи. Модель помогает с неоднозначными конфликтами. Подтверждение удаления и корзина защищают пользователей от самых дорогостоящих ошибок.

Именно такой стандарт нужен Orkas для облачной синхронизации: не магия и не слепое зеркало, а аккуратный механизм, который позволяет пользовательским данным перемещаться между устройствами и сохранять согласованность.