Spanner работает следующим образом:
- Данные в Spanner хранятся в полуреляционных таблицах. habr.com Все данные имеют версию — временную метку подтверждения записи этих данных. habr.com
- Система поддерживает распределённые транзакции. habr.com Узел, инициирующий транзакцию, автоматически становится её координатором и уведомляет все узлы-участники, содержащие реплику изменяемых данных. www.computerra.ru
- Для обеспечения согласованности данных используется специальный программный интерфейс TrueTime API. www.computerra.ru habr.com В его основе лежит концепция единого времени, действующего в рамках всего хранилища Spanner, распределённого по нескольким дата-центрам. www.computerra.ru
- Глобальное время в Spanner распределено. www.computerra.ru В составе каждого ЦОДа выделяются специальные серверы, именуемые «мастерами времени» (Time Master Devices — TMD). www.computerra.ru Большинство из них получает сигналы точного времени от спутниковой системы GPS, а для надёжности есть особые экземпляры, которые называются «мастерами Армагеддона» (Armageddon Masters). www.computerra.ru Все сервера TMD постоянно синхронизируют время, общаясь друг с другом с помощью специального сервиса timeslave. www.computerra.ru
- Каждый из узлов реализует транзакцию (запись изменений в журнал redolog и выполнение изменений данных в оперативной памяти) независимо от других участников, но зафиксировать её участники могут лишь по команде координатора. www.computerra.ru
- Координатор передаёт команду и рассылку всем участникам общей временной метки изменённых данных, единой для всех реплик. www.computerra.ru При этом координатор следит, чтобы значение этой временной метки не превысило границу интервала, то есть находилось в рамках общего глобального времени. www.computerra.ru
Если хотя бы один из узлов не успеет отрапортовать о готовности к фиксации в отведённый временной интервал, координатор откатит выполнение транзакции и не даст команду на её фиксацию узлам-участникам, которые тоже будут вынуждены выполнить откат. www.computerra.ru После этого попытка выполнения транзакции повторится. www.computerra.ru