Red de conocimiento informático - Conocimiento sistemático - Cómo crear una base de datos de ropa Taobao

Cómo crear una base de datos de ropa Taobao

También sabemos que todo el equipo de bases de datos de Taobao está migrando gradualmente algunas bases de datos de Oracle a MySQL y luego trasladando algunos servidores de minicomputadoras a servidores de PC. ¿Cuál fue el impulso para toda tu transformación?

Es principalmente la presión empresarial la que nos da mayor motivación. Cuando llegué a Taobao en 2007, solo había tres bases de datos principales, todas en minicomputadoras y almacenamiento. A juzgar por la presión en ese momento, el funcionamiento fue muy fluido y todos saben que la estabilidad de las minicomputadoras desde el sistema operativo Unix hasta el hardware será mucho mayor que la de los servidores de PC. En ese momento, para Taobao era una elección natural utilizar minicomputadoras.

Desde 2007, el volumen de negocios de Taobao naturalmente se ha duplicado cada año y la calidad de la base de datos se siente bajo una gran presión. Luego, el volumen de negocios front-end se duplica y puede aumentar varias veces en la base de datos, lo que tiene un efecto de amplificación. El primer paso que se nos ocurrió en ese momento fue una arquitectura natural, que consistía en dividir las tres bases de datos en más bases de datos, o cada base de datos respaldaba un negocio. Por ejemplo, los usuarios, productos y transacciones se dividirán en bases de datos independientes y luego se incluirán en pequeños cálculos independientes. Esto es algo muy importante que hicimos en 2008, que fue la división vertical, y luego resistimos el negocio en 2008.

En aquel momento predijimos que habría una mayor presión de crecimiento en 2009 y 2010. ¿Qué debemos hacer en este momento? En ese momento, pudimos ver muchas experiencias compartidas por parte de la industria, incluidas grandes empresas extranjeras como eBay y Amazon. En su intercambio de experiencias, la división horizontal es la elección arquitectónica después de que nuestra base de datos alcanza un cierto nivel. Cuando migramos de Oracle a MySQL, utilizamos principalmente horizonte dividido, lo cual fue una debilidad para nosotros en el futuro. Después de la división horizontal, la cantidad de máquinas y bases de datos será mucho mayor, por lo que el costo de Oracle en sí también es un factor importante a considerar, por lo que si consideramos el costo en ese momento, naturalmente elegiremos la base de datos MySQL en esa vez.

Haznos un breve resumen de la evolución de toda la base de datos de Taobao en los últimos años.

Después de completar la división vertical en 2008, el trabajo principal que hicimos desde 2009 hasta este año fue en realidad la división horizontal. Antes de octubre de este año, completamos la división horizontal de los tres sistemas centrales de Taobao: base de datos de transacciones, base de datos de productos y base de datos de usuarios. Entonces, antes de Double Eleven, durante nuestras entrevistas internas, le decía al entrevistador que la base de datos estaba emocionalmente estable en ese momento. Básicamente, no hicimos nada más que seguir mirando los informes y los datos, y luego vimos que la curva comercial tenía una tendencia ascendente de más de 45 grados, y estábamos muy contentos.

Todavía hice los preparativos perfectos en la etapa inicial. Hasta donde sabemos, durante todo el proceso de migración de la minicomputadora al servidor de PC, incluida la migración de la base de datos Oracle a MySQL, usted ha realizado pruebas de estrés durante varios meses al realizar esto. Cuéntanos sobre los antecedentes y la historia.

Bueno, a principios de este año, decidimos trasladar la base de datos del producto de la minicomputadora al servidor de PC, que es la base de datos más estresante de Taobao. En aquel momento, lo soportaban cuatro minicomputadoras y dos unidades de almacenamiento de alta gama. No estábamos seguros de migrar una base de datos tan grande porque no sabíamos cuántos servidores de PC necesitábamos admitir y qué configuraciones eran necesarias para soportar la presión. En ese momento se nos ocurrió una idea muy intuitiva, que era simular exactamente la misma presión en la línea, e incluso añadir varias veces la presión para medir su valor límite.

Formamos un equipo de proyecto muy grande con el equipo de desarrollo, nuestro equipo de pruebas de rendimiento, el equipo de DBA y el equipo de operaciones, y luego realizamos pruebas de rendimiento durante casi dos meses. Durante todo el proceso de prueba, encontramos muchos problemas, incluido el envío de muchos errores a Oracle, MySQL y otros fabricantes, y los fabricantes respondieron y solucionaron algunos errores.

¿Hasta ahora hasta ahora ha avanzado el proceso de transformación general? ¿Incluyendo qué problemas encontró durante todo el proceso de transformación?

Este año nuestra base de datos principal de usuarios ha completado completamente la arquitectura desde la minicomputadora, el almacenamiento, Oracle hasta el servidor de PC más MySQL.

Hay un dicho en nuestro corazón que dice “ve a O, ve a I, ve a E”.

En efecto, es un modelo de escalamiento desde hardware de alta gama hacia hardware de gama baja. Este es el sistema más grande y central de Taobao, y este año ha completado con éxito la expansión horizontal en varias regiones. Varios otros sistemas, como las transacciones y los productos básicos, se han completado parcialmente y se han dividido parcialmente horizontalmente, pero no han alcanzado el progreso que queremos. Probablemente eso sea algo que debamos hacer el próximo año.

¿Cuáles son los principales problemas encontrados durante el proceso de transformación?

El mayor problema que nos hace sentir es que hemos migrado de una computadora pequeña confiable a un servidor de PC grande con una gran cantidad de datos. Desde una perspectiva arquitectónica, es un problema muy grande para nosotros. desafíos. Como todos sabemos, la estabilidad de cada servidor de PC es definitivamente diferente a la de un solo servidor pequeño, además nuestro clúster puede tener 32 o 64 servidores de PC. Incluso si cada servidor de PC tiene cuatro nueves de disponibilidad, si combinamos todo nuestro sistema, es posible que no pueda alcanzar la disponibilidad de los últimos dos nueves. Esto requiere que hagamos muchas mejoras desde la capa de software y la capa de arquitectura para que algunos puntos únicos de falla no tengan ningún impacto en el sistema general, porque hemos hecho mucho con el departamento de arquitectura y el departamento de desarrollo para garantizar que nuestro El clúster se conectará de forma estable.

De hecho, se debe decir que el momento del "Double Eleven" es una prueba de los cambios tecnológicos pasados. En retrospectiva, ¿cuáles fueron los resultados de esta prueba?

Estaba un poco nervioso en ese momento, pero luego sentí que muchas de las cosas que hicimos este año fueron relativamente exitosas. Pero ahora que lo pienso detenidamente, todavía me siento un poco asustado. ¿No hay una venta flash de Ipad a las 0:00 a. m. en “Double Eleven”? Esa noche todos miramos datos en línea. A las cero horas vimos que todos los indicadores de la base de datos alcanzaron sus picos habituales, y algunos incluso los superaron.

Cuando me fui a la cama esa noche, estaba un poco preocupado: solo es medianoche, ¿cómo voy a sobrevivir la hora pico de mañana por la tarde? Entonces, a las 8 en punto de la mañana siguiente, tan pronto como ingresamos a la sede, vimos que todos los indicadores, incluidos los indicadores CDN, los indicadores de cada línea de negocio y los indicadores de la base de datos, estaban aumentando. En este momento, nuestros corazones están realmente muy intranquilos.

Pero estamos más seguros de estos tres sistemas, productos, usuarios y transacciones principales. Por ejemplo, después de completar todos nuestros proyectos de expansión horizontal este año, calculamos a partir de nuestra presión mecánica que el tráfico aumentaría. Ser diez veces mayor que 100 ese día. El tráfico de 200 y 200 básicamente no tuvo mucho impacto en la base de datos, por lo que estaba muy feliz de ver que este indicador aumentaba rápidamente y esperaba que la transacción pudiera superar los 65,438 millones.

¿Cuál es el próximo desarrollo de toda la arquitectura de la base de datos?

De hecho, el siguiente paso es que algunos de nuestros sistemas centrales aún no se han expandido completamente hasta este punto. Además, también tuvimos una pequeña aventura el día de Double Eleven: teníamos una base de datos que estaba ligeramente conectada al núcleo de transacciones, pero aún estaba colocada en la minicomputadora y se había preparado un depósito de 100 por adelantado. lo que significa que puede soportar el doble de la presión máxima normal.

Pero cuando ese día alcanzó aproximadamente 1,8 veces la presión máxima habitual, nos asustamos hasta el punto de sudar frío. Si el tráfico máximo de Taobao aumentó en un 20% en ese momento, la base de datos podría haber alcanzado un cuello de botella. Entonces, el próximo año dividiremos todas las bases de datos ampliadas en bases de datos de inventario ampliables.

Entonces, ¿qué efectos económicos ha traído a Taobao la idea general de “eliminar Oracle, las minicomputadoras y el almacenamiento de alta gama”?

En aquella época sabíamos que los miniordenadores y el almacenamiento eran caros. Tomemos como ejemplo la base de datos de productos básicos más estresada. Al principio, nuestra base de datos utilizaba cuatro minicomputadoras de alta gama y dos unidades de almacenamiento de alta gama, con un costo total de al menos más de 30 millones de yuanes. Actualmente utilizamos 32 servidores de PC para construir un clúster y el precio oscila entre 3 y 5 millones. En términos relativos, después de completar esto, resolvimos el costo de hardware de 20 a 30 millones.

Los beneficios económicos generales siguen siendo muy buenos. Pero, de hecho, también mencionamos en nuestra comunicación anterior que cambiará de Oracle a MySQL, incluido el cambio de una minicomputadora a un servidor de PC. De hecho, todavía existen muchos problemas, incluida su inestabilidad, etc. ¿Tiene alguna experiencia en esta área?

En este sentido, creo que hay dos factores muy importantes.

La primera es que debemos trabajar en estrecha colaboración con nuestro departamento de arquitectura de aplicaciones front-end de desarrollo para que nuestras aplicaciones puedan integrar el punto único de falla y los problemas de recuperación ante desastres de todo el clúster que acabamos de mencionar. Necesitamos pensar en ello con el departamento de arquitectura; la segunda experiencia más importante es lo que estamos haciendo ahora, profundizando en el código fuente de MySQL. A partir del proceso de investigación y pruebas de estrés, descubrimos algunas fallas en el propio código de MySQL, y puede haber muchos errores ocultos en condiciones de alta concurrencia y estrés.

En nuestras pruebas recientes, también descubrimos el software de almacenamiento en caché de segundo nivel FlashCache lanzado por Facebook. En ese momento, detectamos un error muy grande: cuando la presión de concurrencia es muy alta, hará que MySQL se convierta en un proceso zombie. Después de que nos enteramos, lo informamos rápidamente a Facebook, y Facebook solucionó rápidamente el problema. Esta es también nuestra mayor confianza en el uso de software de código abierto, es decir, el código abierto puede obtener más soporte a nivel mundial y todos pueden resolver problemas más profundos desde el nivel del código original.

Creo que esta puede ser una de las motivaciones por las que el equipo técnico de Taobao es tan abierto y concede gran importancia al código abierto. Si desea compilar algunos códigos centrales de MySQL, debe reservar talentos, incluidos los requisitos para la integración de recursos en todos los aspectos. ¿Tienes algún sentimiento sobre esto?

Hablando del tema del talento, en 2008 Taobao se estaba preparando para cambiar a MySQL a gran escala, y también teníamos algunas dudas internas. Dijeron que el equipo DDA de Taobao solía estar más especializado en Oracle. En la industria, el equipo DDA de Taobao es relativamente famoso en Oracle. Entonces hay una voz escéptica dentro de nosotros. En otras palabras, ¿tiene algún experto en MySQL? ¿Puede MySQL resolver problemas rápidamente en el futuro? Entonces, desde 2008 hasta ahora, hemos ido avanzando lentamente hasta el final, cultivando muchos talentos de MySQL internamente, incluido el crecimiento de nuestros graduados recientes en los últimos años, y también reclutando algunos expertos externos, por lo que nuestra comprensión de MySQL se está volviendo más profunda. y más profundo.

Justo ahora, hemos podido parchar MySQL e informar estos errores a MySQL. Hasta ahora, creo que el crecimiento de MySQL ha alcanzado un nivel muy alto. Confiamos cada vez más en MySQL, pero en el futuro, MySQL de Taobao definitivamente será cada vez más grande. Taobao todavía tiene muchos sistemas que no son fácilmente escalables en minicomputadoras y deben migrarse a clústeres escalables. Sin embargo, también esperamos que más socios de MySQL en la industria puedan unirse a nosotros y hacer algo tan significativo con nosotros.

Creo que es muy valioso unirse al equipo técnico de Taobao y experimentar tantas prácticas técnicas con grandes volúmenes de transacciones. Otra pregunta es, aunque ahora usamos MySQL cada vez más, ahora todos saben que MySQL fue adquirido por Oracle. ¿Qué impacto tendrá eso en equipos como Taobao?

Todo el mundo sabe que MySQL es en realidad un software de código abierto basado en el acuerdo GPL. En el proceso de uso de Taobao, se han considerado algunos riesgos en la etapa inicial. Entonces, todo nuestro MySQL lo compilamos y optimizamos nosotros mismos, y creo que después de que Oracle adquirió MySQL, parece que Oracle debería brindar mayor ayuda al desarrollo de MySQL. Por ejemplo, en Sun, la versión de MySQL era bastante confusa. , incluida la nuestra ahora. Las versiones oficiales 5.0 y 5.1 están en uso. También hay dos aspectos de desarrollo recientemente, uno es 6.0 y el otro es 5.4. Estas características estarán entrelazadas, por lo que no sabemos qué versión será mejor a la hora de elegir. Pero ahora que Oracle compró MySQL, fusionó las versiones 5.4 y 6.0 en una versión 5.5 relativamente estándar y logró un buen hito 15:31. ¿Cómo se desarrollará este hito en el futuro? La dirección de desarrollo de M1, M2, M3 y M4 hasta ahora, este 5.5 se ha desarrollado hasta 5.6. Tenemos acceso a nuevas funciones que son cada vez más estables. Hay varias características nuevas en la versión 5.5 que nos preocupan mucho. Por ejemplo, Google ha alcanzado el paquete de inglés 15:57, por lo que creemos que es una característica muy útil para nuestro futuro sistema MySQL.

Entonces también estamos esperando que salga la versión Oracle 5.5 lo antes posible.