Наш ассоциированный член www.Bikinika.com.ua

Ексклюзивно: Всередині Google Spanner - найбільша база даних на Землі

Кожного ранку, коли Ендрю Фіксс сідав за свій стіл у штаб-квартирі Google у Маунтін-В'ю, штат Каліфорнія, він перемикав посилання VC на Нью-Йорк

Кожного ранку, коли Ендрю Фіксс сідав за свій стіл у штаб-квартирі Google у Маунтін-В'ю, штат Каліфорнія, він перемикав посилання "VC" на Нью-Йорк.

VC - стенограма Google для відеоконференції. Дивлячись на екран свого робочого столу, Файкс міг бачити Вілсона Сісі, що сидить у офісі Google на Манхеттені, і Сісі міг його бачити. Вони також надавали посилання VC на офіс Google у Кіркленді, штат Вашингтон, поблизу Сіетла. Їх інженерна команда охоплювала три офіси в трьох різних частинах країни, але кожен все ще міг спілкуватися, мінливо штурмувати та вирішувати проблеми без хвилини затримки, і ось Google створив Spanner.

"Ви заходите в наші кубики, і у нас постійно працює ВК", - каже Фікс, який приєднався до Google у 2001 році і зараз займає місце серед відомих програмних інженерів компанії. "Ми робимо це роками. Це знижує всі бар'єри для спілкування, які ти зазвичай маєш".

> 'Як розробник розподілених систем ви навчаєтесь - я хочу сказати з дитинства - не вірити часу. Що ми зробили - це знайти спосіб, яким ми могли б довіряти часу - і зрозуміти, що означає довіряти часу.

Андрій Фікс

Домовленість лише підходить. Як і інженерна команда, яка його створила, Spanner - це те, що тягнеться по всьому світу, поводячись так, ніби це все в одному місці. Оприлюднена цієї осені після років натяків та чуток , це перша в світі база даних, гідна цієї назви - база даних, призначена для безперебійної роботи сотень центрів обробки даних та мільйонів машин та трильйонів рядів інформації.

Ключ - це творіння настільки велике, що у деяких виникають проблеми з обгортанням голови. Але кінцевий результат легко пояснити: Завдяки Spanner Google може запропонувати веб-сервіс для світової аудиторії, але все ж гарантувати, що щось, що відбувається з сервісом в одній частині світу, не суперечить тому, що відбувається в іншій.

База даних для нових віків Google вже є частиною онлайн-рекламної системи компанії - системи, яка заробляє її мільйони - і може сигналізувати, куди йде інша частина Інтернету. Google викликав занепокоєння, коли публікував а Науково-дослідна робота докладно описуючи Spanner в середині вересня, і шум був помітний серед жорстких інженерів комп'ютерних систем, коли Вільсон Хсі представив документ на конференції в Голлівуді, Каліфорнія, через кілька тижнів.

"Це, безумовно, цікаво", - говорить Раґу Мерті, один з головних інженерів, що працюють над масовою програмною платформою, яка лежить в основі Facebook, - хоча він додає, що Facebook ще не вивчив можливість побудови чогось подібного.

Веб-операція Google є значно складнішою, ніж більшість, і вона змушена створювати спеціальне програмне забезпечення, яке виходить за рамки більшості онлайнових нарядів. Але як мережа росте, її творіння так часто спускаються до решти світу.

До того, як Spanner був розкритий, багато хто навіть не думали, що це можливо. Так, у нас були бази даних "NoSQL", здатні зберігати інформацію в декількох центрах обробки даних, але вони не могли це зробити, зберігаючи цю інформацію "послідовною" - це означає, що хтось, дивлячись на дані з одного боку світу, бачить те саме, що хтось з іншого боку. Припущення полягало в тому, що узгодженість була обмежена властивими затримками, що виникають при надсиланні інформації між центрами обробки даних.

Але створивши базу даних, яка була глобальною та послідовною, інженери Google Spanner зробили щось зовсім несподіване. У них історія робити несподіване. У команду входять не тільки Фіксс і Хсі, які контролювали розробку BigTable, насіннєву базу даних NoSQL Google, а також легендарні Googlers Джефф Дін та Санджай Гемават і довгий список інших інженерів, які працювали на таких новаторських платформах центрів обробки даних, як Megastore і Дремель .

Цього разу вони знайшли новий спосіб зберігати час.

"Як розробник розподілених систем, ви навчаєтесь - я хочу сказати з дитинства - не довіряти часу", - каже Фікс. "Що ми зробили - це знайти спосіб, яким ми могли б довіряти часу - і зрозуміти, що означає довіряти часу".

Час сутності ———————-

В мережі час є суттєвим. Так, для запуску масового веб-сервісу потрібно, щоб це відбувалося швидко. Але вам також потрібні засоби точного відстеження часу на багатьох машинах, які лежать в основі вашої служби. Вам потрібно синхронізувати безліч процесів, що працюють на кожному сервері, і ви самі повинні синхронізувати сервери, щоб вони теж могли працювати в тандемі. І це простіше сказати, ніж зробити.

Зазвичай оператори центрів обробки даних синхронізують свої сервери, використовуючи протокол Network Time Protocol або NTP. Це, по суті, онлайн-сервіс, який підключає машини до офіційних атомних годин, які зберігають час для організацій у всьому світі. Але оскільки для переміщення інформації по мережі потрібен час, цей спосіб ніколи не є абсолютно точним, а іноді і зовсім порушується. У липні у кількох широкомасштабних веб-операцій виникли проблеми - у тому числі Reddit, Gawker і Mozilla - через їх програмне забезпечення не був готовий впоратися "високосну секунду", яку додавали до світових атомних годин.

> "Ми хотіли чогось, у що ми впевнені. Це час, який належить Google."

Андрій Фікс

Але за допомогою Spanner Google відкинув NTP на користь власного механізму зберігання часу. Це називається API TrueTime. "Ми хотіли чогось, у чому ми були впевнені", - каже Фікс. "Це час, який належить Google."

Замість того, щоб покладатися на зовнішні годинники, Google оснащує свої центри обробки даних Spannerized своїми власними атомними годинниками та GPS-приймачами (глобальною системою позиціонування), не на відміну від вашого у iPhone. Приєднавшись до мережі супутників, що обертаються навколо Землі, GPS-приймач може точно визначити ваше місцеположення, але він також може визначити час.

Ці пристрої, що зберігають час, підключаються до певної кількості головних серверів, а головні сервери переносять час зчитування часу до інших машин, що працюють через мережу Google. По суті, на кожній машині в мережі працює демон - фоновий програмний процес - який постійно перевіряється з майстрами в тому ж центрі обробки даних та в інших центрах обробки даних Google, намагаючись досягти консенсусу щодо того, який саме час. Таким чином, машини в мережі Google можуть наблизитися до роботи загального годинника.

"Система відповідає - а не людина" ——————————————-

Як відбувається завантаження всесвітньої бази даних? Завдяки сервісу TrueTime Google може синхронізувати багато своїх машин - навіть коли вони охоплюють кілька центрів обробки даних - а це означає, що вони можуть швидко зберігати та отримувати дані, не наступаючи на пальці ніг.

"Ми можемо зафіксувати дані у двох різних місцях - скажімо, на Західному узбережжі [Сполучених Штатів] та Європі - і все ще домовились про впорядкування між ними", - каже Фікс, - Отже, якщо запис на Західному узбережжі відбувається спочатку, а потім що трапляється в Європі, вся система це знає - і немає можливості їх розглядати в іншому порядку ".

> "Використовуючи високоточні годинники та дуже розумний API часу, Spanner дозволяє вузлам сервера координуватись без усієї великої кількості зв'язку".

Енді Гросс

За словами Енді Гросса - головного архітектора Basho, спорядження, яке створює базу даних з відкритим кодом під назвою Riak, яка призначена для роботи на тисячах серверів - дизайнери баз даних, як правило, прагнуть синхронізувати інформацію на машинах, щоб вони спілкувалися один з одним. "Вам потрібно зробити багато комунікацій, щоб визначити правильний порядок для всіх транзакцій", - сказав він сказала нам цієї осені , коли Spanner був вперше розкритий.

Проблема полягає в тому, що ця комунікація може забруднити мережу - і базу даних. Як розповів нам Макс Ширесон - президент 10gen, виробник бази даних NoSQL MongoDB: "Якщо у вас є велика кількість людей, які мають доступ до великої кількості систем, які поширені в усьому світі, так що затримка в спілкуванні між ними відносно довга, це стає дуже важко тримати все синхронізованим. Якщо ви збільшуєте ці фактори, це стає ще складніше ".

Тож Google взяв зовсім інший крок. Замість того, щоб боротися за поліпшення зв'язку між серверами, це дало їм новий спосіб розповісти час. "Це, мабуть, було найкрутішим у роботі: використання атомних годин та GPS для надання API часу", - каже Рагу Мерті у Facebook.

Використовуючи час, Google може створити базу даних, яка є як глобальною, так і послідовною, але вона також може зробити свої сервіси більш стійкими в зв'язку з затримками мережі, відключеннями центрів обробки даних та іншим програмним та апаратним перешкодами. В основному, Google використовує Spanner, щоб точно копіювати свої дані в декількох центрах обробки даних - і швидко переходити між репліками, як потрібно. Іншими словами, репліки теж послідовні.

Якщо одна репліка недоступна, Spanner може швидко перейти до іншої. Але він також переміститься між репліками просто для підвищення продуктивності. "Якщо у вас є одна копія, і вона зайнята, ваша затримка буде великою. Але якщо у вас є ще чотири репліки, ви можете вибрати іншу та обрізати цю затримку", - каже Фікс.

Одним з ефектів, пояснює Фікс, є те, що Google витрачає менше коштів на управління своєю системою. "Коли виникають відключення, все просто перевертається - клієнтські машини отримують доступ до інших серверів у системі", - каже він. "Це набагато простіша історія служби .... Система відповідає - а не людина".

Охоплюючи кроки Google ——————————

Деякі сумніваються, чи можуть інші йти слідами Google - і чи хотіли б вони цього навіть зробити. Коли ми розмовляли з Енді Гроссом, він здогадувався, що навіть атомні годинники та GPS-приймачі Google будуть надмірно дорогими для більшості операцій.

Так, відновлення платформи було б великим завданням. Google уже витратив чотири з половиною роки на проект, і Fikes - хто допоміг створити інструмент історії веб-пошуку Google, його першу службу пошуку продуктів та Google Answers, а також BigTable - називає Spanner найважчою справою, над якою він коли-небудь працював. Більше того, існує незліченна кількість логістичних питань, з якими потрібно вирішити питання.

> «Важливо подумати про те, що це послуга, яка надається в центр обробки даних. Витрати на це амортизуються на всіх серверах вашого флоту. Вартість одного сервера є деякою додатковою сумою - і ви зважите це на типи речей, які ми можемо зробити для цього. "

Андрій Фікс

Як вказує Fikes, Google довелося встановити GPS-антени на дахах своїх центрів обробки даних та підключити їх до обладнання нижче. І так, вам потрібні два окремі типи зберігачів часу. Обладнання завжди виходить з ладу, а ваші часники повинні виходити з ладу в ну, в різний час. "Атомні годинники забезпечують стабільність, якщо виникає проблема GPS", - каже він.

Але за словами Fikes, це порівняно недорогі пристрої. GPS-пристрої не такі дешеві, як у вашого iPhone, але, як атомні годинники Google, вони коштують не більше кількох тисяч доларів за штуку. "Вони впорядковані за вартістю корпоративного сервера, - каже він, - і є багато різних постачальників цих пристроїв". Коли ми обговорювали це питання з Джеффом Діном - одним із інженерів первинної інфраструктури Google та іншим ім'ям на папері Spanner - він зазначив майже те саме.

Fikes також вказує на те, що сервіс TrueTime не вимагає спеціалізованих серверів. Зберігачі часу утримуються в стійках поруч із серверами, і знову ж таки, їм потрібно підключитися лише до деяких машин у центрі обробки даних.

"Ви можете вважати це лише кількома пристроями, що знаходяться в кожному центрі обробки даних. Вони є коробками. Ви купуєте їх. Ви підключаєте їх до своєї стійки. І ви збираєтесь підключитися до них через Ethernet", - каже Фікс . "Важливо подумати про те, що це послуга, яка надається в центр обробки даних. Витрати на яку амортизуються на всіх серверах вашого флоту. Вартість за один сервер є деякою додатковою сумою - і ви зважите це на типи речей, які ми можемо зробити для цього ".

Ні, Spanner - це не те, що сьогодні потрібен кожному веб-сайту. Але світ рухається у своєму загальному напрямку. Хоча Facebook ще не досліджує щось на кшталт Spanner, він створює програмну платформу під назвою Prism, яка виконуватиме завдання масового скорочення кількості компаній в декількох центрах обробки даних .

Так, рекламна система Google є величезною, але вона виграє від Spanner таким чином, що може отримати користь для багатьох інших веб-сервісів. Рекламна система Google - це онлайн-аукціон, де рекламодавці пропонують розміщувати свої оголошення, коли хтось шукає певний товар або відвідує певні веб-сайти - і поява кожної реклами залежить від даних, що описують поведінку незліченних рекламодавців та веб-серферів у мережі. . Завдяки Spanner Google може переглядати ці дані в глобальному масштабі, і він все ще може підтримувати всю систему в синхронізації.

Як стверджує Fikes, Spanner - це лише перший приклад Google, який скористався своїм новим часом. "Я очікую, що буде багато інших", - каже він. Він має на увазі інші сервіси Google, але є причина, по якій компанія тепер ділиться своїм папером Spanner з рештою світу.

Ілюстрація Росса Паттона

Новости