Car-tech

YouTube escalas de MySQL con código Ir

Curso de HTML5 esencial - Estructura (header y más)

Curso de HTML5 esencial - Estructura (header y más)
Anonim

Los ingenieros de YouTube están desarrollando un conjunto de software llamado Vitess que ayudará a las bases de datos MySQL de código abierto a trabajar de manera más eficiente en entornos de producción a gran escala. Para escribir el código, usan el lenguaje de programación de Google, Go.

YouTube ya usa un componente de Vitess, llamado Vtocc, para ayudar a servir videos a todos los 800 millones de usuarios mensuales del servicio. Google adquirió YouTube en 2006.

Vtocc ha "sido muy estable, y tiene todas las herramientas necesarias para su uso en un entorno de producción", dijo el arquitecto YouTube Sugu Sougoumarane, que, junto con el ingeniero de YouTube Mike Solomon, discutió Vitess en la conferencia Usenix LISA (Administración de sistemas de instalación grande), celebrada esta semana en San Diego.

Que Vitess esté escrito en Go podría ayudar a validar la idea de que este lenguaje de programación relativamente nuevo podría usarse en entornos de producción a gran escala. Google presentó la versión 1 de Go en marzo.

YouTube sirve más de 4 mil millones de horas de video cada mes. Alrededor de 72 horas de video se cargan en el servicio cada minuto. Mientras que YouTube almacena todos sus videos directamente en un sistema de archivos, usa MySQL para almacenar todos los metadatos necesarios para servir cada video, como preferencias del usuario, información publicitaria, personalizaciones del país y otros bits de información necesarios.

A YouTube le gusta usar MySQL por su fiabilidad, dijo Solomon, uno de los ingenieros que originalmente construyó el servicio. Tiene peculiaridades, pero esas peculiaridades son bien conocidas y pueden mitigarse con bastante facilidad, dijo. Sin embargo, MySQL también tiene problemas con la escala, al menos escalar para dar cabida a un servicio tan grande como el de YouTube.

"El principal problema con MySQL es que una vez que llegas a cierto punto [de uso], pasas una gran cantidad de tiempo administrando el hardware y la cantidad de instancias que tiene ", dijo Solomon. "Queremos automatizar ese pedazo. Queremos tomar cada acción que sea complicada y propensa a errores y hacer que se cure solo".

MySQL tampoco es muy eficiente cuando se usa en una implementación grande. Normalmente, cada conexión a MySQL requiere su propio hilo en el servidor. Sin embargo, este enfoque no es factible a la escala de las operaciones de YouTube. "Ejecutar decenas de miles de conexiones no es realmente viable", dijo Solomon.

Los ingenieros de la compañía, sin embargo, se han mostrado reacios a intentar cambiar el código MySQL básico, señalando que hacer cambios en el complejo y algo difícil: el código de entendimiento a menudo puede dar como resultado efectos imprevistos. "No es sencillo. Justo cuando crees que sabes lo que estás haciendo, es cuando comienzas a tener problemas", dijo Solomon.

Así que Vitess fue creado para funcionar junto con MySQL para ofrecer capacidades de administración adicionales. El componente Vtocc, por ejemplo, consolida miles de consultas SQL entrantes en un menor número de lotes, por lo que MySQL puede tomar menos recursos para cumplir con estas solicitudes. Vtocc también analiza las consultas para que puedan ser ejecutadas de manera más eficiente y reduce el trabajo causada por las consultas de duplicados mediante la reutilización de los resultados de una consulta para satisfacer las otras solicitudes idénticas.

Uso Go ha permitido a los desarrolladores de YouTube a ser más productivos de lo que sería han estado usando un lenguaje más tradicional, dijo Sougoumarane.

Go compila rápidamente, dijo. Las 30,000 líneas de código en Vitess se pueden compilar en binarios en aproximadamente 30 segundos. Y, gracias a un amplio conjunto de bibliotecas, muchas tareas no requieren tanta programación. Por ejemplo, Sougoumarane escribió una rutina 105 de línea que recorta periódicamente los archivos de registro, una funcionalidad que no podría haber sido escrito en tan pocas líneas utilizando C o C ++.

"Así es como expresiva Go es," dijo Sougoumarane. "Las características del lenguaje están bien pensadas. Te ayudan a componer las cosas de una manera mucho más elegante que los lenguajes tradicionales". Sougoumarane también elogió el soporte de simultaneidad de Go, vital para su uso en procesadores multinúcleo. "No tiene que preocuparse por gestionar los hilos. Ir los maneja por usted", dijo.

El lenguaje también tiene algunos inconvenientes, admitió Sougoumarane. El manejo de errores podría mejorarse, por ejemplo. La programación y la recolección de basura también podrían usar algo de trabajo.

Solomon dijo que, con el tiempo, Vitess asumirá tareas adicionales, como la replicación de bases de datos y la fragmentación automática, para que una base de datos pueda crecer en varios servidores sin intervención de los administradores.

Joab Jackson cubre software empresarial y noticias de última hora sobre tecnología general para El servicio de noticias IDG. Sigue a Joab en Twitter en @Joab_Jackson. La dirección de correo electrónico de Joab es [email protected]