Car-tech

YouTube масштабирует MySQL с кодом Go

Настя и сборник весёлых историй

Настя и сборник весёлых историй
Anonim

Инженеры YouTube разрабатывают комплект программного обеспечения под названием Vitess, который поможет более эффективным функциям баз данных MySQL с открытым исходным кодом в очень крупномасштабных производственных средах. Чтобы написать код, они используют язык программирования Google Go.

YouTube уже использует один компонент Vitess под названием Vtocc, чтобы помочь обслуживать видеоролики всем 800 миллионам пользователей в месяц. Google приобрел YouTube в 2006 году.

Vtocc «очень устойчив и имеет все необходимые инструменты для использования в производственной среде», - сказал архитектор YouTube Сугу Сугумаран, который вместе с инженером YouTube Майком Соломоном обсудил Vitess на конференции администрирования Usenix LISA (Large Installation System Administration), которая состоялась на этой неделе в Сан-Диего.

Что Vitess написано на Go, может помочь подтвердить, что этот относительно новый язык программирования может использоваться в крупномасштабных производственных средах. Google представил версию 1 в марте.

YouTube ежемесячно обслуживает более 4 миллиардов часов видео. Около 72 часов видео загружаются в службу каждую минуту. Хотя YouTube хранит все свои видео непосредственно в файловой системе, он использует MySQL для хранения всех метаданных, необходимых для обслуживания каждого видео, таких как пользовательские настройки, рекламная информация, настройки страны и другие необходимые бит информации.

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

«Основная проблема с MySQL заключается в том, что как только вы доберетесь до определенной точки [использования], вы потратите много время аппаратного обеспечения и сколько у вас экземпляров », - сказал Соломон. «Мы хотим автоматизировать этот кусок, мы хотим предпринять все сложные и подверженные ошибкам действия и заставить его исцелить себя».

MySQL также не очень эффективен при использовании в большом развертывании. Как правило, для каждого подключения к MySQL требуется собственный поток на сервере. Однако этот подход не применим в масштабах операций YouTube. «Запуск десятков тысяч подключений не является реально жизнеспособным», - сказал Соломон.

Инженеры компании, однако, не хотели пытаться изменить основной код MySQL, отметив, что внесение изменений в сложный и довольно сложный -подверженный код часто может приводить к непредвиденным последствиям. «Это не просто. Когда вы думаете, что знаете, что делаете, вот когда вы начинаете беспокоиться, - сказал Соломон.

Итак, Vitess был создан для совместной работы с MySQL, чтобы предложить дополнительные возможности управления. Компонент Vtocc, например, объединяет тысячи входящих SQL-запросов в меньшее количество партий, поэтому MySQL может потреблять меньше ресурсов, удовлетворяющих этим запросам. Vtocc также анализирует запросы, чтобы их можно было выполнить более эффективно, и уменьшает работу, вызванную дублирующимися запросами, повторно используя результаты одного запроса для удовлетворения других идентичных запросов.

Использование Go позволило разработчикам YouTube быть более продуктивными, чем они могли бы использовали более традиционный язык, сказал Сугумаран.

Кодекс Go быстро компилируется, сказал он. 30 000 строк кода в Vitess могут быть скомпилированы в двоичные файлы примерно за 30 секунд. И, благодаря богатому набору библиотек, многие задачи не требуют такого большого количества программ. Например, Sougoumarane написал 105-строчную подпрограмму, которая периодически обрезает файлы журналов, функциональность, которые не могли быть записаны в виде нескольких строк с помощью C или C ++.

«Вот как выразителен Go», - сказал Сугумаран. «Возможности языка хорошо продуманны, они помогают вам сочинять вещи намного шире, чем традиционные языки». Sougoumarane также похвалил поддержку параллелизма Go, жизненно необходимую для использования в многоядерных процессорах. «Вам не нужно беспокоиться об управлении потоками, и вы управляете ими для вас», - сказал он.

На языке также есть некоторые недостатки, признал Сугумаран. Например, обработка ошибок может быть улучшена. Планирование и сбор мусора могут также использовать некоторые работы.

Соломон сказал, что со временем Vitess возьмет на себя дополнительные обязанности, такие как репликация базы данных и автоматическое очертание, поэтому база данных может расти на нескольких серверах без вмешательства со стороны администраторов.

Joab Jackson охватывает корпоративное программное обеспечение и общие технологии, новости для Служба новостей IDG. Следуйте за Joab в Twitter на @Joab_Jackson. Адрес электронной почты Joab - [email protected]