El principio de funcionamiento de CDN y su aplicación en el negocio de imágenes de Taobao

El 98% del tráfico en el acceso a imágenes de Taobao va a la caché de CDN, y solo el 2% volverá al sitio de origen, lo que ahorrará muchos recursos del servidor.

Sin embargo, si el contenido de las imágenes cambia en grandes cantidades durante el período pico de visitas de usuarios, las visitas de un gran número de usuarios penetrarán en la CDN, causando una tremenda presión en el sitio de origen.

Este año, en Double 11, el proyecto de actualización de la expresión del precio de la imagen principal de Taobao Luban enfrentó este tipo de desafío. Veamos cómo resolverlo.

Cómo funciona CDN


Content Delivery Network (CDN) es una red distribuida que se establece y cubre en una red portadora y consta de un grupo de servidores de nodo periférico distribuidos en diferentes regiones.

CDN se usa ampliamente y admite la aceleración de contenido en múltiples industrias y múltiples escenarios, como: archivos de imagen pequeños, descargas de archivos grandes, video y audio a pedido, transmisión de medios en vivo, aceleración en todo el sitio y aceleración de seguridad.

Tome prestado el ejemplo del sitio web oficial de Alibaba Cloud para presentar brevemente el principio de funcionamiento de CDN.

Suponiendo que el nombre de dominio acelerado por CDN es www.a.com, después de acceder a la red CDN y comenzar a utilizar el servicio acelerado, cuando el usuario final (Beijing) inicia una solicitud HTTP, el flujo de procesamiento es el siguiente:

  1. Cuando un usuario final (Beijing) inicia una solicitud a un recurso especificado en www.a.com, primero inicia una solicitud de resolución de nombre de dominio a LDNS (DNS local).

  2. LDNS comprueba si hay un registro de dirección IP de www.a.com en la caché. Si lo hay, regrese directamente al usuario final; si no, consulte el DNS autorizado.

  3. Cuando el DNS autorizado resuelve www.a.com, devuelve la dirección IP correspondiente al nombre de dominio CNAME www.a.tbcdn.com.

  4. La solicitud de resolución de nombre de dominio se envía al sistema de programación de DNS de Alibaba Cloud y se asigna la mejor dirección IP de nodo a la solicitud.

  5. LDNS obtiene la dirección IP resuelta devuelta por DNS.

  6. El usuario obtiene una dirección IP resuelta.

  7. El usuario inicia una solicitud de acceso al recurso a la dirección IP obtenida.

    • Si el nodo correspondiente a la dirección IP ha almacenado en caché el recurso, devolverá los datos directamente al usuario, por ejemplo, en los pasos 7 y 8 de la figura, la solicitud finaliza.

    • Si el nodo correspondiente a la dirección IP no almacena en caché el recurso, el nodo inicia una solicitud del recurso a la estación fuente. Después de obtener el recurso, combinado con la estrategia de almacenamiento en caché definida por el usuario, el recurso se almacena en caché en el nodo, por ejemplo, el nodo Beijing en la figura, y se devuelve al usuario, la solicitud finaliza.

Puede aprender de este ejemplo:

  1. Los recursos de aceleración de la CDN están vinculados al nombre de dominio.

  2. Para acceder a los recursos a través del nombre de dominio, lo primero es encontrar la IP del nodo CDN (servidor de borde) más cercano al usuario a través de DNS.

  3. Al acceder a los recursos reales a través de IP, si no hay un recurso en caché en la CDN, el recurso se solicitará desde el sitio de origen y se almacenará en caché en el nodo CDN. De esta manera, el nodo CDN tendrá la caché de recursos correspondiente cuando el usuario lo visite.


Fondo de negocio de imagen de Taobao Luban


La imagen principal del producto recorre toda la guía de compra y el enlace de la transacción. En comparación con el texto, la imagen es más llamativa. La imagen principal tiene una gran influencia en la decisión de compra de los consumidores. El contenido expresado en la imagen principal es variado, pero uno de ellos debe ser la expresión del precio.

Durante mucho tiempo, los comerciantes mantuvieron la expresión del precio en el mapa principal, y el mapa se cambió manualmente después de que cambiara el precio de la mercancía. Hacerlo traerá 3 problemas:

  1. Precisión del precio: el precio de la imagen que ingresa manualmente el comerciante puede ser inconsistente con el precio de compra real, lo que resulta en una mala experiencia de usuario.

  2. Puntualidad de la actualización de precios: a veces, debido a la invalidez de los cupones / vales de categoría, el precio de los productos cambiará con frecuencia y los comerciantes no tendrán tiempo para cambiar las imágenes.

  3. El costo operativo del comerciante: modifique manualmente el precio de la imagen, el costo sigue siendo muy alto, debe modificar la imagen a través de un software como ps, volver a cargar, editar el producto.

En el Double 11 de este año, el equipo de Luban del departamento técnico del departamento de Tao intentó resolver estos problemas por medios técnicos. Cuando cambia el precio de la mercancía, el sistema calcula automáticamente el nuevo precio, sintetiza automáticamente la imagen y luego actualiza la imagen principal de la mercancía.

Sabemos que Taobao tiene cientos de millones de productos y Everbright tiene decenas de millones de productos, por lo que la frecuencia de cambios de imagen causados ​​por cambios de precio es muy alta. El punto más alto se encuentra a las 0 en punto del Double 11, los precios de todas las promociones principales cambiarán de los precios diarios a los precios de las promociones principales.

Esto significa que durante el período pico de promoción, los usuarios accederán a decenas de millones de imágenes tan pronto como se generen. Entonces, qué problemas surgirán en esta situación, primero comprendamos el espacio de imagen de Taobao y la estructura de CDN, será claro.


Espacio de imagen de Taobao y arquitectura CDN


El enlace completo de acceso a imágenes de Taobao tiene una caché de tres niveles (cliente local, CDN L1, CDN L2) y todas las imágenes se almacenan de forma persistente en OSS. El procesamiento de la imagen real es el sistema img-picasso, sus funciones son más complejas, incluyendo leer archivos desde OSS, escalar el tamaño de la imagen, codificar y decodificar, por lo que el costo de la máquina es relativamente alto.

La caché de CDN se divide en dos niveles, y la proporción entre L1 y L2 se asigna razonablemente. Por un lado, el hash consistente se puede usar para almacenar más contenido en caché bajo el mismo recurso para mejorar la tasa general de aciertos de caché; por otro lado, puede ser Equilibre la informática y la E / S y aproveche al máximo las capacidades de las máquinas con diferentes configuraciones.

El proceso para que los usuarios accedan a las imágenes es el siguiente:

  • Los usuarios pueden buscar productos o verificar los detalles del bebé a través de Taobao en sus teléfonos móviles.

  • Detalles / búsqueda / recomendación devuelve la URL de la imagen del producto llamando al centro de productos.

  • Si hay una memoria caché de la imagen localmente en el cliente, la imagen se representa directamente; de ​​lo contrario, se ejecuta el siguiente paso.

  • Devuelve la imagen de origen de CDN L1. Si L1 tiene una caché para la imagen, el cliente procesa la imagen y la almacena en caché localmente. Si L1 no tiene una caché, continúa con el siguiente paso.

  • Volviendo a la imagen de origen de CDN L2, si L2 tiene un caché de la imagen, el cliente representa la imagen, mientras que CDN L1 y el cliente almacenan en caché el contenido de la imagen, si CDN L2 no almacena la imagen en caché, continúe con el siguiente paso.

  • Desde el espacio de imagen hasta la imagen de origen, el espacio de imagen extraerá el archivo de origen de la imagen del OSS, escalará el tamaño según sea necesario y luego ejecutará el códec y devolverá el contenido de la imagen que el cliente puede admitir. Después de eso, el cliente puede renderizar la imagen y el CDN L1 , L2 y el cliente almacenará en caché el contenido de la imagen.


Desafíos técnicos derivados de los frecuentes cambios de imagen


Cuando el precio del producto cambie, volveremos a sintetizar la imagen con el nuevo precio y actualizaremos la URL de la imagen almacenada en el centro de productos. Esto traerá 2 problemas:

  1. El contenido original de la imagen en caché de CDN y Taobao móvil no es válido, y todas las imágenes a las que accedan los usuarios se devolverán a img-picasso.

  2. Debido al cambio de campo de producto, la caché de la aplicación core (carrito de compras y centro de productos) de la transacción también es inválida. Cuando el usuario navega y realiza una compra, el acceso al producto irá a la base de datos.

El procesamiento de imágenes de la estación fuente img-picasso y la consulta de la base de datos del producto requieren muchos recursos. Después de que se reduzca la tasa de aciertos de caché de CDN y productos básicos, se ejercerá una gran presión sobre el sitio de origen img-picsasso y db.

Tome el almacenamiento en caché de CDN como ejemplo y simplemente calcúlelo. La tasa de aciertos habitual de CDN es del 98%. Suponiendo que la tasa de aciertos se reduce en 1 punto, la presión sobre la estación de origen aumentará en 1/3 (originalmente soportaba el 2% del tráfico, ahora debe soportar 3 % Del tráfico), lo que significa que img-picasso debe expandirse en 1/3. Si la mitad de las imágenes en toda la red cambian al mismo tiempo, la tasa de aciertos de cdn cae al 50% y el número de visitas a img-picasso aumentará 25 veces.Este costo de expansión es definitivamente inaceptable.

Para resolver estos dos problemas, existen dos métodos correspondientes:

  1. Cambie la imagen para mantener la URL de la imagen sin cambios, lo que puede evitar la falla de caché del enlace del producto.

  2. Antes de que llegue el pico de visitas, precaliente las imágenes en la CDN con anticipación, lo que puede evitar la presión de la falla de la caché de la CDN en el sitio de origen.

A continuación, presentaré cómo hicimos estos dos puntos.



Soluciones para cambios frecuentes de imagen



▐  Cambie la imagen para mantener la URL de la imagen sin cambios

Cuando cambie el contenido de la imagen, realice las siguientes 2 operaciones:

  1. Actualice el contenido de OSS: reemplace el contenido de la imagen anterior en OSS con el nuevo contenido de la imagen

  2. Actualizar la caché de CDN: borre el contenido de la imagen en caché antes de la CDN

De esta manera, cuando el usuario accede a la imagen nuevamente y descubre que el CDN no está almacenado en caché, volverá al img-picasso y extraerá el nuevo contenido de la imagen del OSS.

Dado que la URL de la imagen no ha cambiado, no es necesario actualizar el enlace de la imagen en el centro de productos, por lo que la caché del enlace del producto puede permanecer sin cambios.

En el proceso de implementación real de este programa, se encontraron varios problemas. Simplemente comparta con usted:


OSS sincronización de tres lugares

El espacio de imágenes de Taobao tiene la garantía de la estabilidad ascendente y descendente de todas las imágenes de Taobao. Para garantizar una alta disponibilidad, se almacenará un recurso en los tres OSS. Al cargar una imagen, solo se carga un lugar de forma predeterminada y se sincroniza automáticamente con los otros dos lugares utilizando las capacidades de OSS.

Pero usando el esquema de URL sin cambios, después de que se haya borrado la caché de CDN, si el OSS de las otras dos ubicaciones no se ha sincronizado, el usuario volverá al contenido de la imagen anterior después de acceder y encontrará que el contenido de la imagen no ha cambiado.

En respuesta a este problema, cambiamos el modo de sincronizar asincrónicamente las cadenas suaves OSS a los tres lugares para construir cadenas suaves sincrónicamente. Después de que los tres lugares regresen con éxito, borraremos la caché de CDN, lo que asegura que las imágenes a las que acceden los usuarios deben ser el contenido más reciente.


Convergencia del tamaño de la imagen

La misma imagen de producto se utilizará para diferentes escenas para mostrar pozos, y diferentes pozos tienen diferentes requisitos para el tamaño de la imagen. Con este fin, el espacio de imagen proporciona una función que puede generar fácilmente miniaturas de diferentes tamaños. Solo necesita agregar diferentes sufijos a las imágenes cuando acceda a las imágenes, y la estación de origen de img-picasso puede hacer zoom en las imágenes según sea necesario.

Debido a razones históricas, antes no había restricciones en los tipos de tamaños ampliados, lo que resultó en hasta 2,400 formatos de sufijo de imagen en CDN +, con una tasa de cobertura del 46% para el formato TOP6 y del 64% para el formato TOP15. Esto significa que una imagen puede tener como máximo más de 2400 URL diferentes en la CDN. Cuando el contenido de la imagen cambia, todos estos cachés deben borrarse para garantizar que las imágenes que ven todos los usuarios sean contenido nuevo.

Para resolver este problema, convergimos el formato de nombre de dominio.

Las reglas del espacio de imagen para los parámetros de compresión de calidad de imagen son las siguientes:

  • Los parámetros de calidad de imagen suelen tener las siguientes 8 formas: Q90, Q75, Q50, Q30, q90, q75, q50, q30

  • Los parámetros de nitidez de la imagen suelen tener tres formas: s100, s150, s200

Redefinimos la calidad de imagen como imágenes de alta calidad e imágenes de baja calidad, y el formato de convergencia es q90 y p50s150

De esta manera, más de 2000 formatos pueden converger en seis formatos principales, y la limpieza de caché de CDN se vuelve factible.

Limpiar la caché de CDN con varias copias

A través de la convergencia del tamaño de la imagen, cada imagen solo necesita borrar 6 URL diferentes. ¿Puede mejorar aún más la eficiencia de actualización?

Con este fin, Alibaba Cloud CDN nos proporciona una solución de actualización de múltiples copias: cada imagen con diferentes sufijos se usa como una copia de la imagen, y se agrega una estructura KV a la capa rápida de la CDN para almacenar la relación de mapeo entre URL y diferentes copias. Al borrar la caché, todas las copias se pueden encontrar a través de esta estructura y todas las copias se pueden borrar rápidamente. De esta manera, solo necesitamos llamar a la interfaz de caché clara de CDN una vez para cada imagen, lo que mejora en gran medida la eficiencia de actualización de la caché de CDN.


Convergencia de dominio de imagen

Hay más de 300 tipos de dominios de imagen en el Departamento de Tao, principalmente debido a las siguientes 2 razones:

  1. El enlace completo de la imagen es demasiado largo, por lo que cuando se almacena, a menudo solo se almacena el último párrafo. La empresa utiliza el nombre de dominio y muchas empresas solicitan un nombre de dominio de imagen.

  2. En la era de las PC, los navegadores tenían un límite en la cantidad de solicitudes simultáneas bajo el mismo nombre de dominio. Los diferentes navegadores son diferentes, generalmente alrededor de 6. Para romper esta restricción, algunas empresas solicitarán múltiples nombres de dominio y deletrearán diferentes nombres de dominio al azar.

Como mencionamos anteriormente, la caché de CDN está vinculada a un nombre de dominio, y ya sea que se acierte o borre la caché, solo puede apuntar a un nombre de dominio.

Obviamente, es imposible para nosotros cambiar una imagen y llamar a CDN refresh para 300 nombres de dominio. Por lo tanto, consideramos la convergencia del nombre de dominio de la imagen para que todo el acceso de los usuarios a la imagen se enrute al mismo nombre de dominio. Esperamos que todos los accesos a la imagen converjan en picasso.alicdn.com. La implementación específica es la siguiente:

  1. Tanto para los clientes de Taobao como de Maoke, el acceso a las imágenes se cierra en la biblioteca de imágenes. Impulsamos la transformación de la biblioteca de imágenes, y las URL que se ajustan a ciertas reglas se unifican a picasso.alicdn.com, logrando un nombre de dominio único para todos.

  2. Para el lado del navegador de PC, es más problemático, no hay lugar para un cierre unificado. Solo podemos llegar al segundo mejor Para los 6 nombres de dominio más visitados, configure las reglas de reenvío de nombres de dominio en cdn y redirija a los nombres de dominio picasso.

De esta manera, nos hemos dado cuenta de que más del 99% del tráfico de acceso a imágenes en toda la red se enruta al nombre de dominio picasso.Cuando el contenido de la imagen cambia, al borrar la caché cdn del nombre de dominio picasso, puede asegurarse de que básicamente todas las escenas puedan ver el nuevo Contenido de la imagen.

Caché de cliente y navegador

Mediante copias múltiples y la convergencia de nombres de dominio de imágenes, se ha resuelto el problema de almacenamiento en caché de CDN. Pero en la CDN, el acceso a la imagen del usuario proviene primero del cliente o del navegador, y también habrá una capa de caché.

Como todos saben, la caché del navegador sigue el protocolo estándar http max-age. Después de especificar el encabezado, la imagen dejará de ser válida y se accederá a nuevas imágenes. Entonces, podemos agregar el encabezado del protocolo max-age al devolver la fuente a cdn desde el sitio de origen img-picasso, el valor es 1 minuto y la cdn se pasará intacta al navegador, de modo que el navegador pueda realizar la invalidación de la memoria caché de la imagen en 1 minuto , Vaya a cdn para extraer nuevos recursos de imágenes.

Para los clientes móviles de Taobao, estamos en la parte superior del mecanismo de almacenamiento en caché LRU original y, además, admitimos el protocolo http estándar. De esta manera, el teléfono móvil Taobao también se dio cuenta de la invalidación de la memoria caché de imágenes en 1 minuto.

▐ Precaliente las  imágenes CDN por adelantado 


Al cambiar la imagen para mantener la URL de la imagen sin cambios, resolvimos el impacto del cambio de imagen en la caché de enlaces de productos básicos. Sin embargo, cuando la imagen cambia, aunque la URL no ha cambiado, borramos la caché de CDN, lo que hace que los usuarios regresen al sitio de origen de img-picasso cuando lo visitan, por lo que la presión sobre el sitio de origen de la imagen aún existe.

Descubrimos que la mayoría de los cambios de precio de los productos se produjeron en el momento de cambios importantes en el ritmo de la promoción. Con base en esta función, podemos sintetizar las imágenes por adelantado y calentarlas al CDN por adelantado, de modo que el cambio de imagen tenga efecto instantáneamente y no haya presión en el sitio de origen. El plan específico es el siguiente:

  • Sintetizar imágenes multibanda de antemano: una vez que conocemos los puntos de tiempo en los que los comerciantes se centran en cambiar las imágenes durante la gran promoción, dividimos la visualización de la imagen en varias bandas de acuerdo con estos puntos de tiempo. Cada imagen de banda se sintetiza por adelantado y la URL de la imagen se escribe en el centro de productos por adelantado. Estructura en expansión.

  • Enrutamiento de acceso a las imágenes: el sistema de marketing le dice a Luban el paquete de imágenes de la segunda parte de acuerdo con la gran atmósfera de promoción configurada, en qué banda se encuentra actualmente, y Luban devuelve la URL de imagen correcta a cada escena de acuerdo con la banda y la escena actuales.

  • Representación de imágenes: después de que cada escena obtenga la URL de la imagen, combinada con su propia lógica empresarial, decida si desea mostrar la imagen.

  • Precalentamiento de la imagen CDN: para evitar que el sitio de origen se destruya cuando las imágenes se cambian de manera centralizada, precalentaremos el contenido de estas imágenes frías en la CDN antes de la conmutación centralizada.

  • Cambios en las imágenes dentro de las bandas: después de sintetizar las imágenes en varias bandas por adelantado, los comerciantes pueden emitir cupones temporalmente / cambiar los precios, lo que hace que los precios de los productos básicos cambien nuevamente. Para este tipo de necesidades de cambio de imagen, para evitar actualizar la URL de la imagen del centro de productos, utilizamos el capítulo anterior de este artículo. Implementación de guardar caché CDN.



Resumen y perspectiva


La tecnología CDN se usa ampliamente en varios escenarios de Internet. Los proveedores de servicios CDN actuales brindan métodos de acceso al servicio muy simples, y el costo de CDN disminuye cada año. Todo esto hace que el costo de acceso y uso de CDN sea cada vez menor. .

Este artículo utiliza el ejemplo del negocio de imágenes de Taobao para explicar los problemas y las soluciones que se pueden encontrar en el proceso de uso de CDN.

Además de la gran cantidad de visitas al negocio de imágenes de Taobao, también se enfrenta a actualizaciones frecuentes. Las actualizaciones frecuentes de imágenes, por un lado, harán que la caché del producto deje de ser válida debido al cambio de la URL de la imagen en el producto, por otro lado, reducirá en gran medida la tasa de aciertos de la caché de acceso a imágenes de la CDN.

En respuesta al problema de invalidación de la caché del producto causado por el cambio de la URL de la imagen, actualizamos la caché de cdn y regresamos a la fuente cuando el usuario la visitó, y realizamos el cambio de la imagen para mantener la URL de la imagen sin cambios. En este proceso, resolvimos una serie de problemas, entre ellos : Actualización sincrónica de OSS en tres lugares, convergencia del tamaño de la imagen, convergencia del nombre de dominio de la imagen, almacenamiento en caché local del cliente y del navegador.

En vista del problema de reducir la tasa de aciertos de la caché de imágenes CDN cambiando la imagen, sintetizamos imágenes de diferentes bandas por adelantado de acuerdo con las características del negocio, y las calentamos al CDN para garantizar la seguridad del sitio de origen.

Actualmente, las imágenes que ven los usuarios en Taobao están todas sintetizadas de antemano. En el futuro, consideramos sintetizar imágenes en tiempo real cuando los usuarios accedan a las imágenes. A través de esta tecnología, es posible percibir más información en tiempo real del negocio en tiempo real. A partir de esta información, es posible sintetizar contenidos como redacción / elementos más adecuados para el usuario actual o el entorno en base a esta información, y traer más sorpresas a los usuarios.

Por supuesto, la combinación de imágenes en tiempo real también enfrentará más desafíos, como la potencia de cálculo y el rendimiento de combinación de imágenes. Además, para CDN, dado que el contenido al que accede cada usuario se sintetiza temporalmente, la estrategia de almacenamiento en caché de CDN también es un gran desafío.

Tao Department Technical Department-Luban Team-Recruiting Talents

¡Tecnología para impulsar el negocio! ! ! El equipo de Luban del departamento técnico del Departamento de Tao se ha centrado durante mucho tiempo en el campo de las imágenes y los videos. A través de la innovación tecnológica, se ha mejorado la eficiencia comercial y la experiencia del usuario de las empresas. Si está interesado en la tecnología de imagen o video, o desea estar expuesto a sistemas de ingeniería de alta concurrencia, Espero cambiar el mundo a través del código, ¡bienvenido a unirse a nosotros! ! ! [email protected]

✿ Más   lecturas

Autor | Yang Wentao (Zhaoming)

Editar | Naranja

Producido | Nueva tecnología minorista de Alibaba

Supongo que te gusta

Origin blog.csdn.net/Taobaojishu/article/details/110458820
Recomendado
Clasificación