Пользователь
30,2
рейтинг
26 ноября 2012 в 18:33

Разработка → Работа с временем в Google


Высокоточный рубидиевый осциллятор PRS10

Компания Google решила отказаться от использования NTP (Network Time Protocol) и создала свою собственную систему проверки времени с GPS и атомными часами, более точную и надёжную. Её назвали TrueTime API. Система работает для обеспечения целостности крупнейшей в мире базы данных Google Spanner, распределённой по всему миру.

В середине сентября 2012 года компания Google впервые обнародовала информацию о своей уникальной базе данных, которая глобально распределена по дата-центрам Google на разных континентах — и при этом обеспечивает целостность и синхронизацию данных. Специалисты считают, что ничего подобного нет ни у одной другой компании из тех, кто работает с большими объёмами данных, включая Facebook.

Как можно понять из опубликованной в сентябре научной работы, ключевой инновацией в Google Spanner является обеспечение цельности данных за счёт новой системы кодирования информации о времени транзакций. Инженеры Google разработали многоуровневую систему проверки времени, записи временных интервалов транзакций и оценки уровня надёжности меток о времени. Это ключевой фактор, от которого зависит надёжность системы.

Обычно дата-центры и веб-сервисы полагаются на NTP (Network Time Protocol) — онлайновые сервисы, которые выдают информацию с атомных часов, но из-за сетевых лагов такие методы не обеспечивают точность, которая подходит для работы крупного дата-центра. А иногда протокол NTP вообще серьёзно сбоит, как это случилось недавно, после добавления високосной секунды.

В общем, компания Google решила отказаться от NTP и создать свою собственную систему проверки времени, более точную и надёжную. Её назвали TrueTime API.

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



Через Google TrueTime API обеспечивается синхронизация данных, когда разные дата-центры пытаются одновременно записать в одну и ту же ячейку в БД. Интерфейс TrueTime API выдаёт значение интервала времени TTinterval: это время с заложенной погрешностью измерения и неопределённостью. Если интервалы TTinterval двух конкурентных транзакций не пересекаются, то можно с уверенностью сказать, какая из них произошла раньше. Если они пересекаются, это означает некоторую долю неопределённости.

Компании Google пришлось установить GPS-антенны на крышах своих дата-центров и атомные часы внутри серверных стоек в дата-центрах. Стоимость даже очень хороших атомных часов относительно невелика по сравнению со стоимостью серверов в каждой стойке.


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

[Источник]
Анатолий Ализар @alizar
карма
749,5
рейтинг 30,2
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (31)

  • +1
    Нужно заметить, что «сервер времени» — это не выделенный сервер, а обычный, но экипированный атомными часами, с привязкой к GPS.

    А чем отличается обычный сервер от выделенного?
    • +5
      «Обычный», в контексте означает что это одна из задач которой сервер занимается. Как например бывают чисто серверы обслуживающие БД, а бывают, где ещё что-нибудь на них висит, Апач там или ещё что.
  • +3
    Из поста совершенно не понятно, зачем такая точность в измерении времени. Ушел читать гугловскую статью.
    • +2
      Из-за NoSQL архитектуры. В любой такой системе очень критично понимать порядок write'ов.
      Правда я прочел оригинальную статью… боже сколько же там воды и разжевывания очевидных для IT вещей… Так что автор топика — молодец.
      • +2
        Вообще я понял, что Spanner — это скорее NewSQL, нет?
        • +3
          За что человеку минус поставили? После объединения усилий с проектом F1 языком запросов в Spanner стал модифицированный SQL.
          • +2
            Что вообще за попытки непременно навесить buzzword на технологию?! Spanner мастшабируемая до безумных размеров БД с нормальной поддержкой транзакционной семантики. В меньшем весе выступают Datomic, в котором языком запросов является модифицированный Datalog, и какая-то новоиспечённая FoundationDB, про которую пока ничего не ясно (хотя некоторые догадки имеются).
            • 0
              Из-за обмена репликами выше:

              — Из поста совершенно не понятно, зачем такая точность в измерении времени.
              Из-за NoSQL архитектуры.

              Я считаю это некорректным.

              А так Вы правы, конечно, про buzzword. Масштаб масштабирования (sic) просто восхищает.
        • –3
          Так, я принципиально требую, чтобы человек, поставивший минус, объяснился.

          Ибо во-первых, Google Spanner's Most Surprising Revelation: NoSQL Is Out And NewSQL Is In, во-вторых, «Tables look like relational-database tables, with rows, columns, and versioned values. We will not go into detail about the query language for Spanner. It looks like SQL with some extensions to support protocol-buffer-valued fields» (при всей любви к key-value, там вполне себе sql-like язык). Если я ошибся — поправьте. Всегда рад узнать истину.
    • +2
      Распределенное знание точного времени позволяет обходить некоторые ограничения CAP-теоремы.
      • 0
        CAP теорему никто не обходит — в момент Partition выбирается Consistency (т.е. если кворум не соберётся — коммита не будет), в остальное время Latency. Другое дело, что в каком-то докладе утверждалось, что те, кому надо могут использовать нетранзакционный API (читай dirty read и dirty write)

        TT нужен чтобы построить отношение полного порядка на множестве транзакций не прибегая к помощи агента-сериализатора.
        • 0
          Пардон, сказал глупость — всегда consistency, никогда оно не пытается уменьшить latency в операциях записи.
    • +2
      Если внимательно читать высокая точность не нужна для работы алгоритма. Из за необходимости дожидаться неперсечения TT интервалов при сильных расхождениях система будет очень много времени проводить в холостом ожидании.
  • +10
    создала свою собственную систему проверки времени с GPS и атомными часами
    вызывает ассоциации с блекджеком и барышнями
  • +3
    А сервис публичный? Можно с помощью него время синхронизировать на своих серверах?
    • +1
      Если у Вас есть свои атомные часы — нафига он Вам нужен, а если нету — как будете им пользоваться?
      Он Вам может пригодиться, только если Вам зачем-то нужно быть страшно синхронизированным именно с их NoSQL-базой. Вам нужно?
    • –2
      Можно. Надо прийти в ближайший офис google и попросить устновить свой сервер в их стойку.
      Предложенный вариант лучше NTP как раз отсутсвием передачи данных между удаленными/разными сегментами сети т.к. сама эта передача дает большую (для задач гугла) погрешность синхронизации.
    • +2
      Синхронизировать время по GPS совсем несложно, гугель для этого не нужен. Основная проблема — куда приткнуть антенну, чтобы она все время ловила.
      • –6
        В космос.
  • 0
    Ну вот, а говорят свои «велосипеды» изобретать плохо. Хорошо если это нужно для ключевого направления, или если стандартный подход чем-то не устраивает.
    • +1
      Изобретение велосипеда:
      — смотрите! Я изобрёл штуку на двух колёсах и с педалями
      — да это же велосипед :(

      Усовершенствование велосипеда:
      — смотрите! Я взял велосипед, доработал там там и там и получил ещё более крутую штуку
      — обалдеть

      Очень часто одним термином «изобрести велосипед» называют все подряд. Тогда как переизобретение и усовершенствование путать нельзя. Первое — зло, второе — добро. Если б не было второго, мы бы до сих пор катались вот на таком.
      • 0
        И что, гугль усовершенстовала NTP?
        • 0
          Не совсем, вместо значения времени оно выдает временной интервал, за который момент получения ответа от сервиса гарантировано не вылезает.
  • –3
    спасибо, познавательно
    просьба только как-то выделить что это внутренняя система
    просто изначально, подсознательно, ожидаешь что это новый сервис которым все могут пользоваться
    • 0
      Ну эта штука поддерживает сервисы гугла, которыми итак все могут пользоваться.
  • –1
    И правда велосипедисты. Работал я с такими системами (распределённого точного времени).
    Во-первых, они были уже давно и продаются относительно не дорого (цена зависит от того, сколько времени система может работать автономно — без GPS). Причём самые простые модули имеют цену от пары сотен баксов. Самые дорогие — на «атомных» часах (например рубидиевом генераторе) — от $2K до чемодана денег.
    Все это давно и успешно применяется всеми, кому это нужно — не ясно в чём прорыв-то.
    Разве что в том, что использовать аппаратное независимое время, как уникальную метку транзакции. Это да.
    Но, блин, есть нюансы — что будет, если завтра GPS сбойнёт? Потеряем интернет? Я бы не рискнул ставить многомиллиардный бизнес в зависимость от гражданской навигационной системы.
    • 0
      Ничего страшного не произойдёт — чем сильнее расхождение во времени между машинами тем дольше транзакции будет фиксироваться.
  • +2
    После прочтения заголовка подумалось всякое.
  • 0
    Меня очень позабавили названия вроде time master, armageddon master и timeslave daemon. Так и представяю диалог инженеров дата-центров:
    — У нас вышел из строя владыка времени!
    — Который?
    — Тот, что повелевает концом света!
  • 0
    я конечно извиняюсь, но в заголовке «Работа сО временем».
  • +1
    прочитал название осциллятора с картинки и сразу вспомнил
    — Р-рубидий! Резер-рв! Огр-ромен! — сказал попугай.
    — Резервы рубидия огромны, — перевел Эдик. — Интересно, где?

    «Понедельник начинается в субботу»

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.