Работа с временем в 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.

    [Источник]
    Метки:
    Поделиться публикацией
    Комментарии 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 совсем несложно, гугель для этого не нужен. Основная проблема — куда приткнуть антенну, чтобы она все время ловила.
                    • 0
                      Ну вот, а говорят свои «велосипеды» изобретать плохо. Хорошо если это нужно для ключевого направления, или если стандартный подход чем-то не устраивает.
                      • +1
                        Изобретение велосипеда:
                        — смотрите! Я изобрёл штуку на двух колёсах и с педалями
                        — да это же велосипед :(

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

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

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

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