98% du trafic sur l'accès aux images de Taobao va au cache CDN, et seulement 2% reviendront au site source, économisant ainsi beaucoup de ressources serveur.
Cependant, si le contenu de l'image change en grande quantité pendant la période de pointe des visites des utilisateurs, les visites d'un grand nombre d'utilisateurs pénètreront dans le CDN, provoquant une pression énorme sur le site d'origine.
Cette année, sur Double 11, le principal projet de mise à niveau de l'expression des prix de l'image de Taobao Luban a été confronté à ce type de défi. Voyons comment le résoudre.
Comment fonctionne CDN
Le réseau de distribution de contenu (CDN) est un réseau distribué qui est établi et couvert sur un réseau support et est composé d'un cluster de serveurs de nœuds périphériques répartis dans différentes régions.
CDN est largement utilisé et prend en charge l'accélération du contenu dans plusieurs secteurs et dans plusieurs scénarios, tels que: petits fichiers image, téléchargements de fichiers volumineux, vidéo et audio à la demande, diffusion multimédia en direct, accélération à l'échelle du site et accélération de la sécurité.
Empruntez l'exemple du site officiel d'Alibaba Cloud pour présenter brièvement le principe de fonctionnement du CDN.
En supposant que le nom de domaine accéléré par CDN est www.a.com, après avoir accédé au réseau CDN et avoir commencé à utiliser le service accéléré, lorsque l'utilisateur final (Pékin) lance une requête HTTP, le flux de traitement est le suivant:
Lorsqu'un utilisateur final (Pékin) lance une demande à une ressource spécifiée sous www.a.com, il lance d'abord une demande de résolution de nom de domaine à LDNS (DNS local).
LDNS vérifie s'il existe un enregistrement d'adresse IP de www.a.com dans le cache. Si tel est le cas, retournez directement à l'utilisateur final; sinon, interrogez le DNS autorisé.
Lorsque le DNS autorisé résout www.a.com, il renvoie l'adresse IP correspondant au nom de domaine CNAME www.a.tbcdn.com.
La demande de résolution de nom de domaine est envoyée au système de planification DNS Alibaba Cloud et la meilleure adresse IP de nœud est attribuée à la demande.
LDNS obtient l'adresse IP résolue renvoyée par DNS.
L'utilisateur obtient une adresse IP résolue.
L'utilisateur lance une demande d'accès à la ressource à l'adresse IP obtenue.
-
Si le nœud correspondant à l'adresse IP a mis la ressource en cache, il renvoie les données directement à l'utilisateur. Par exemple, aux étapes 7 et 8 de la figure, la demande se termine.
Si le nœud correspondant à l'adresse IP ne met pas en cache la ressource, le nœud lance une requête pour la ressource à la station source. Une fois la ressource obtenue, combinée à la stratégie de mise en cache définie par l'utilisateur, la ressource est mise en cache sur le nœud, par exemple, le nœud Beijing sur la figure, et renvoyée à l'utilisateur, et la demande prend fin.
Vous pouvez apprendre de cet exemple:
Les ressources d'accélération du CDN sont liées au nom de domaine.
Pour accéder aux ressources via le nom de domaine, la première consiste à trouver l'IP du nœud CDN (serveur de périphérie) le plus proche de l'utilisateur via DNS
Lors de l'accès aux ressources réelles via IP, s'il n'y a pas de ressource mise en cache sur le CDN, la ressource sera demandée au site d'origine et mise en cache sur le nœud CDN. De cette manière, le nœud CDN disposera du cache de ressources correspondant lors de la prochaine visite de l'utilisateur.
Taobao Luban Photo Contexte des affaires
L'image principale du produit passe par l'ensemble du guide d'achat et du lien de transaction. Par rapport au texte, l'image est plus accrocheuse, et l'image principale a une grande influence sur la décision d'achat des consommateurs. Le contenu exprimé sur l'image principale est varié, mais l'un d'eux doit être l'expression du prix.
Pendant longtemps, l'expression des prix sur la carte principale a été maintenue par les marchands, et après les changements de prix des produits de base, la carte est modifiée manuellement. Cela entraînera trois problèmes:
Précision du prix: le prix de l'image renseigné manuellement par le marchand peut être incompatible avec le prix d'achat réel, ce qui entraîne une mauvaise expérience utilisateur.
Actualité des prix: parfois, en raison de l'invalidité des coupons / bons de catégorie, le prix des marchandises changera fréquemment et les commerçants n'auront pas le temps de changer de photo.
Le coût d'exploitation du commerçant: Modifiez manuellement le prix de l'image, le coût est toujours très élevé, vous devez modifier l'image via un logiciel tel que ps, re-télécharger, éditer le produit.
Sur Double 11 cette année, l'équipe Luban du département technique du département Tao a tenté de résoudre ces problèmes par des moyens techniques. Lorsque le prix des produits change, le système calcule automatiquement le nouveau prix, synthétise automatiquement l'image, puis met à jour l'image principale de la marchandise.
Nous savons que Taobao a des centaines de millions de produits et Everbright a des dizaines de millions de produits, ce qui fait que la fréquence des changements d'image causés par les changements de prix est très élevée. Le point culminant est à 0 heures sur Double 11, les prix de toutes les promotions majeures passeront des prix quotidiens aux prix des promotions majeures.
Cela signifie que pendant la période de promotion de pointe, des dizaines de millions de photos seront consultées par les utilisateurs dès leur création. Ensuite, quels problèmes se poseront dans cette situation, comprenons d'abord l'espace d'image de Taobao et la structure CDN, ce sera clair.
Espace image Taobao et architecture CDN
L'ensemble du lien d'accès aux images de Taobao a un cache à trois niveaux (client local, CDN L1, CDN L2), et toutes les images sont stockées en permanence dans OSS. Le véritable traitement de l'image est le système img-picasso, ses fonctions sont plus complexes, y compris la lecture de fichiers depuis l'OSS, la mise à l'échelle de la taille de l'image, l'encodage et le décodage, de sorte que le coût de la machine est relativement élevé.
Le cache CDN est divisé en deux niveaux et le rapport entre L1 et L2 est raisonnablement alloué. D'une part, le hachage cohérent peut être utilisé pour mettre en cache plus de contenu sous la même ressource afin d'améliorer le taux de réussite global du cache; d'autre part, il peut être Équilibrez le calcul et les E / S, et utilisez pleinement les capacités des machines avec différentes configurations.
Le processus permettant aux utilisateurs d'accéder aux images est le suivant:
Les utilisateurs peuvent rechercher des marchandises ou vérifier les détails du bébé via Taobao sur leurs téléphones portables.
Détails / recherche / recommandation renvoie l'URL de l'image du produit en appelant le centre de produits.
S'il existe un cache de l'image localement sur le client, l'image est directement rendue, sinon l'étape suivante est exécutée.
Revenez à l'image source à partir du CDN L1. Si L1 dispose d'un cache pour l'image, le client restitue l'image et la met en cache localement. Si L1 n'a pas de cache, passez à l'étape suivante.
De retour à l'image source à partir du CDN L2, si L2 a un cache de l'image, le client rend l'image, tandis que CDN L1 et le client mettent en cache le contenu de l'image, si CDN L2 ne met pas en cache l'image, passez à l'étape suivante.
De l'espace image à l'image source, l'espace image extraira le fichier source image de l'OSS, redimensionnera la taille selon les besoins, puis exécutera le codec et renverra le contenu d'image que le client peut prendre en charge. Après cela, le client peut rendre l'image et le CDN L1 , L2 et le client mettront en cache le contenu de l'image.
Défis techniques liés aux changements d'image fréquents
Lorsque le prix du produit change, nous synthétisons à nouveau l'image avec le nouveau prix et met à jour l'URL de l'image stockée dans le centre de produits. Cela apportera 2 problèmes:
Le contenu de l'image d'origine en cache de CDN et du mobile Taobao n'est pas valide et toutes les images auxquelles les utilisateurs accèdent seront renvoyées à img-picasso.
En raison de la modification du champ produit, le cache de l'application principale (panier et centre de produits) de la transaction est également invalide. Lorsque l'utilisateur navigue et effectue un achat, l'accès au produit ira à la base de données.
La station source img-picasso qui traite les images et interroge la base de données du produit est très gourmande en ressources. Une fois que le taux de succès du cache du CDN et de la marchandise est réduit, une pression énorme sera exercée sur le site d'origine img-picsasso et db.
Prenons l'exemple de la mise en cache CDN et calculez-la simplement. Le taux de succès habituel de CDN est de 98%. En supposant que le taux de succès est réduit de 1 point, la pression sur la station source augmentera de 1/3 (supportant à l'origine 2% du trafic, elle doit maintenant supporter 3 % Du trafic), ce qui signifie que img-picasso doit être étendu de 1/3. Si la moitié des images de l'ensemble du réseau changent en même temps, le taux de succès de cdn tombe à 50%, et le nombre de visites à img-picasso sera multiplié par 25. Ce coût d'extension est définitivement inacceptable.
Il existe 2 façons de résoudre ces 2 problèmes:
Modifiez l'image pour conserver l'URL de l'image inchangée, ce qui peut éviter l'échec du cache du lien de marchandise.
Avant le pic de visite, préchauffez les images sur le CDN à l'avance pour éviter la pression de l'échec du cache CDN sur le site d'origine.
Ensuite, je présenterai comment nous avons fait ces deux points.
Solutions pour les changements d'image fréquents
▐ Modifiez l'image pour conserver l'URL de l'image inchangée
Lorsque le contenu de l'image change, effectuez les 2 opérations suivantes:
Mettre à jour le contenu OSS: remplacez l'ancien contenu d'image dans OSS par un nouveau contenu d'image
Actualiser le cache CDN: effacez le contenu de l'image mis en cache avant CDN
De cette façon, lorsque l'utilisateur accède à nouveau à l'image et constate que le CDN n'est pas mis en cache, il retourne à l'img-picasso et extrait le nouveau contenu d'image de l'OSS.
Étant donné que l'URL de l'image n'a pas changé, il n'est pas nécessaire de mettre à jour le lien de l'image dans le centre produit, afin que le cache du lien du produit puisse rester inchangé.
Dans le processus de mise en œuvre réelle de ce programme, j'ai rencontré plusieurs problèmes, partagez simplement avec vous:
Synchronisation OSS trois places
L’espace image de Taobao garantit la stabilité en amont et en aval de toutes les images Taobao. Afin d’assurer une haute disponibilité, une ressource sera stockée dans les trois OSS. Lorsque les images sont téléchargées, un seul emplacement est téléchargé par défaut, et il est automatiquement synchronisé avec les deux autres emplacements en utilisant les capacités d'OSS.
Mais en utilisant le schéma d'URL inchangé, une fois que le cache CDN a été effacé, si l'OSS des deux autres emplacements n'a pas été synchronisé, l'utilisateur reviendra à l'ancien contenu d'image après y avoir accédé et constatera que le contenu d'image n'a pas changé.
En réponse à ce problème, nous avons changé le mode de synchronisation asynchrone des chaînes logicielles OSS aux trois emplacements pour créer des chaînes logicielles de manière synchrone. Une fois les trois emplacements renvoyés avec succès, nous effaçons le cache CDN, ce qui garantit que les images auxquelles les utilisateurs accèdent doivent être le dernier contenu.
Convergence de la taille de l'image
La même image du produit sera utilisée dans différentes scènes pour montrer les fosses, et différentes fosses ont des exigences différentes pour la taille de l'image. À cette fin, l'espace image fournit une fonction permettant de générer facilement des vignettes de différentes tailles. Il vous suffit d'ajouter différents suffixes aux images lorsque vous accédez aux images, et la station source img-picasso peut agrandir les images selon les besoins.
Pour des raisons historiques, il n'y avait aucune restriction sur les types de tailles agrandies auparavant, ce qui se traduisait par jusqu'à 2400 formats de suffixes d'image sur CDN +, avec un taux de couverture de 46% pour le format TOP6 et de 64% pour le format TOP15. Cela signifie qu'une image peut avoir au plus 2 400 URL différentes sur le CDN. Lorsque le contenu de l'image change, ces caches doivent être effacés pour garantir que toutes les images vues par les utilisateurs sont nouvelles.
Pour résoudre ce problème, nous avons convergé le format du nom de domaine.
Les règles de l'espace d'image pour les paramètres de compression de qualité d'image sont les suivantes:
Les paramètres de qualité d'image ont généralement les 8 formes suivantes: Q90, Q75, Q50, Q30, q90, q75, q50, q30
Les paramètres de netteté de l'image ont généralement trois formes: s100, s150, s200
Nous avons redéfini la qualité d'image en tant qu'images de haute qualité et images de basse qualité, et le format de convergence est q90 et p50s150
De cette façon, plus de 2 000 formats peuvent être convertis en six formats principaux, et l'effacement CDN du cache devient possible.
Effacer le cache CDN avec plusieurs copies
Grâce à la convergence de la taille de l'image, chaque image n'a besoin que d'effacer 6 URL différentes. Peut-elle encore améliorer l'efficacité de l'actualisation?
À cette fin, Alibaba Cloud CDN nous fournit une solution de rafraîchissement multi-copie: chaque image avec un suffixe différent est utilisée comme copie de l'image, et une structure KV est ajoutée à la couche rapide du CDN pour stocker la relation de mappage entre les URL et les différentes copies. Lorsque vous effacez le cache, toutes les copies peuvent être trouvées via cette structure et toutes les copies peuvent être rapidement effacées. De cette manière, nous n'avons besoin d'appeler l'interface d'effacement du cache CDN qu'une seule fois pour chaque image, ce qui améliore considérablement l'efficacité d'actualisation du cache CDN.
Convergence du domaine de l'image
Il existe plus de 300 types de domaines d'images dans le département de Tao, principalement pour les 2 raisons suivantes:
Le lien complet de l'image est trop long, donc lors de son stockage, seul le dernier paragraphe est souvent enregistré. L'entreprise utilise le nom de domaine, et de nombreuses entreprises demandent un nom de domaine d'image pour l'épeler.
À l'ère des PC, les navigateurs ont une limite sur le nombre de requêtes simultanées sous le même nom de domaine. Les différents navigateurs sont différents, généralement environ 6. Afin de briser cette restriction, certaines entreprises demanderont plusieurs noms de domaine et épelleront au hasard différents noms de domaine.
Comme nous l'avons mentionné précédemment, le cache CDN est lié à un nom de domaine, et qu'il s'agisse d'un accès au cache ou d'un effacement du cache, il ne peut cibler qu'un seul nom de domaine.
Évidemment, il nous est impossible de changer une image, c'est pourquoi nous appelons l'actualisation CDN pour 300 noms de domaine. Nous envisageons donc de faire converger le nom de domaine de l'image afin que l'accès de tous les utilisateurs à l'image soit acheminé vers le même nom de domaine. Nous espérons faire converger tous les accès aux images vers picasso.alicdn.com. La mise en œuvre spécifique est la suivante:
Pour les clients Taobao et Maoke, l'accès aux images est fermé dans la bibliothèque d'images. Nous promouvons la transformation de la bibliothèque d'images et les URL conformes à certaines règles sont unifiées vers picasso.alicdn.com, obtenant ainsi un nom de domaine unique.
Côté navigateur PC, c'est plus gênant, il n'y a pas de place pour la fermeture unifiée. On ne peut que prendre la deuxième place, pour les 6 noms de domaine les plus visités, configurer les règles de redirection de nom de domaine sur cdn et rediriger vers le nom de domaine picasso.
De cette manière, nous avons réalisé que plus de 99% du trafic d'accès aux images sur l'ensemble du réseau est acheminé vers le nom de domaine picasso. Lorsque le contenu de l'image change, en effaçant le cache cdn du nom de domaine picasso, vous pouvez vous assurer que pratiquement toutes les scènes peuvent voir le nouveau Contenu de l'image.
Cache du client et du navigateur
Grâce à de multiples copies et à la convergence des noms de domaine d'image, le problème de la mise en cache du CDN a été résolu. Mais sur le CDN, l'accès à l'image de l'utilisateur provient d'abord du client ou du navigateur, et il y aura également une couche de cache.
Comme vous le savez tous, le cache du navigateur suit le protocole standard http max-age. Une fois l'en-tête spécifié, l'image deviendra invalide à ce moment-là et de nouvelles images seront accessibles. Nous pouvons donc ajouter l'en-tête de protocole max-age lors du retour de la source à cdn à partir du site source img-picasso, la valeur est 1 minute, et le cdn sera transmis au navigateur intact, afin que le navigateur puisse réaliser l'invalidation du cache d'image en 1 minute , Accédez à cdn pour extraire de nouvelles ressources image.
Pour le client mobile Taobao, nous sommes au top du mécanisme de mise en cache LRU d'origine et prenons en charge le protocole http standard. De cette manière, le téléphone mobile Taobao a également réalisé l'invalidation du cache d'image en 1 minute.
▐Préchauffer les images CDN à l'avance
En modifiant l'image pour que l'URL de l'image reste inchangée, nous avons résolu l'impact du changement d'image sur le cache de lien de marchandise. Cependant, lorsque l'image change, bien que l'URL n'ait pas changé, nous avons effacé le cache CDN, obligeant les utilisateurs à retourner au site d'origine img-picasso lors de leur visite, de sorte que la pression sur le site d'origine de l'image existe toujours.
Nous avons constaté que la plupart des changements de prix des produits de base se produisaient au moment de changements majeurs dans le rythme de la promotion. Sur la base de cette fonctionnalité, nous pouvons synthétiser les images à l'avance et les réchauffer au CDN à l'avance, de sorte que le changement d'image prenne effet instantanément et qu'il n'y ait aucune pression sur le site d'origine. Le plan spécifique est le suivant:
Synthétiser les images multi-bandes à l'avance: une fois que nous connaissons les moments où les marchands se concentrent sur le changement des images pendant la grande promotion, nous divisons l'affichage de l'image en plusieurs bandes en fonction de ces moments. Chaque image de bande est synthétisée à l'avance et l'URL de l'image est écrite au centre de produits à l'avance Structure en expansion.
Acheminement d'accès aux images: le système de marketing indique à Luban le deuxième paquet d'images de fête en fonction de la grande atmosphère de promotion configurée, dans quel groupe se trouve actuellement, et Luban renvoie l'URL d'image correcte à chaque scène en fonction du groupe et de la scène actuels.
Rendu d'image: une fois que chaque scène obtient l'URL de l'image, combinée à sa propre logique métier, décidez si vous souhaitez afficher l'image.
Préchauffage d'image CDN: Afin d'éviter que le site source ne soit détruit lorsque les images sont commutées de manière centralisée, nous préchaufferons le contenu de ces images froides sur le CDN avant la commutation centralisée.
Changements d'image dans le groupe : après avoir synthétisé les images dans chaque bande à l'avance, le commerçant peut temporairement émettre des coupons / modifier le prix, ce qui entraînera une nouvelle modification du prix du produit. Pour ce type de demande de changement d'image, afin d'éviter de mettre à jour l'URL de l'image du centre produit, nous utilisons le chapitre précédent de cet article Implémentation de la sauvegarde du cache CDN.
Résumé et perspectives
La technologie CDN est largement utilisée dans divers scénarios Internet. Les fournisseurs de services CDN actuels proposent des méthodes d'accès aux services très simples, et le coût du CDN diminue chaque année. Tout cela rend le coût d'accès et d'utilisation CDN de plus en plus bas .
Cet article explique les problèmes et les solutions qui peuvent être rencontrés dans le processus d'utilisation de CDN à travers l'exemple de Taobao Picture Business.
En plus du grand nombre de visites dans l'entreprise d'image de Taobao, elle fait également face à de fréquentes mises à jour. Les mises à jour fréquentes des images, d'une part, rendront le cache du produit invalide en raison du changement de l'URL de l'image sur le produit, d'autre part, cela réduira considérablement le taux de succès du cache d'accès aux images du CDN.
En réponse au problème d'invalidation du cache produit causé par le changement de l'URL de l'image, nous avons actualisé le cache cdn et renvoyé à la source lors de la visite de l'utilisateur, et réalisé le changement de l'image pour conserver l'URL de l'image inchangée. Dans ce processus, nous avons résolu un certain nombre de problèmes, dont : Mise à jour synchrone des trois emplacements OSS, convergence de la taille de l'image, convergence du nom de domaine de l'image, mise en cache locale du client et du navigateur.
Compte tenu du problème de réduction du taux de réussite du cache d'images CDN en modifiant l'image, nous synthétisons au préalable des images de différentes bandes en fonction des caractéristiques de l'entreprise, et les réchauffons au CDN pour assurer la sécurité du site d'origine.
Actuellement, les images que les utilisateurs voient sur Taobao sont toutes synthétisées à l'avance. À l'avenir, nous envisageons de synthétiser des images en temps réel lorsque les utilisateurs accèdent aux images. Grâce à cette technologie, il est possible de percevoir plus d'informations en temps réel sur l'entreprise en temps réel. Sur la base de ces informations, il est possible de synthétiser des contenus tels que le copywriting / éléments qui sont plus adaptés à l'utilisateur actuel ou à l'environnement basé sur ces informations, et apporter plus de surprises aux utilisateurs.
Bien entendu, la combinaison d'images en temps réel sera également confrontée à plus de défis, tels que la puissance de calcul et les performances de combinaison d'images. De plus, pour CDN, puisque le contenu accédé par chaque utilisateur est temporairement synthétisé, la stratégie de mise en cache CDN est également un grand défi.
Département technique du département Tao - Recrutement d'équipe Luban Talents
La technologie au service des affaires! ! ! L'équipe Luban du département technique du département Tao s'est depuis longtemps concentrée sur le domaine des images et des vidéos. Grâce à l'innovation technologique, l'efficacité commerciale et l'expérience utilisateur des entreprises ont été améliorées. Si vous êtes intéressé par la technologie de l'image ou de la vidéo, ou si vous souhaitez être exposé à des systèmes d'ingénierie à haute concurrence, J'espère changer le monde grâce au code, bienvenue à nous rejoindre! ! ! [email protected]
✿ En outre la lecture
Auteur | Yang Wentao (Zhaoming)
Modifier | Orange
Produit | La nouvelle technologie de vente au détail d'Alibaba