Comment le système de contenu des pages Turbo est organisé: schémas, faits et un peu d'histoire



Selon TelecomDaily , près de 30% des utilisateurs d'Internet mobile en Russie rencontrent quotidiennement des problèmes de téléchargement de sites. Cependant, la raison peut être non seulement d'une couverture inégale, mais aussi d'un trop grand "poids" de la page.

Nous ne pouvons pas influencer la qualité de la connexion, mais pour aider les webmasters à simplifier le contenu du site, rendez-le plus facile - pourquoi pas? Ainsi, la technologie des pages Turbo est apparue dans Yandex: notre système de contenu est passé tout ce qui est nécessaire pour le placement, et il convertit ces données en matériaux faciles et rapides.

Comment fonctionne cette magie? Quel est le chemin d'accès aux données avant de devenir une page Turbo complète? Je m'appelle Stas Makeev, je dirige le développement de la technologie Turbo pages. Maintenant, je vais essayer de tout expliquer.

Mais d'abord, c'est un peu un résumé pour que vous ne vous perdiez pas quand je commence à fouiller dans les détails.

Un avantage clé du système Turbo pages est la conversion rapide des données du formulaire original au formulaire final: les matériaux des sites d'actualités sont les plus demandés dans les premières minutes après leur publication, et les cartes de marchandises des magasins en ligne doivent être mises à jour rapidement et correspondre toujours à l'état actuel de disponibilité. Le deuxième paramètre important est la fiabilité: le système de contenu doit être aussi stable que possible, être capable de survivre à la panne de serveurs individuels ou même de centres de données entiers. Et, bien sûr, il était important d'éviter une charge excessive sur les hôtes de nos partenaires connectés aux pages Turbo. Autrement dit, lors de la conception du service, il était nécessaire de trouver en quelque sorte un équilibre entre la vitesse de traitement des données et l'augmentation du nombre de demandes.

Les propriétaires de sites ont plusieurs façons de se connecter au système:

  • . : YML — -, RSS – ;
  • API: ( );
  • : - .

Le système de contenu stocke les résultats de son travail dans un stockage spécial de type "valeur-clé" (stockage-valeur-clé ou stockage KV), où la clé est l'URL du site d'origine et la valeur stocke le contenu de la page Turbo. Dès que les données tombent dans ce stockage KV, la page Turbo suivante devient immédiatement disponible pour les utilisateurs de recherche, et dans les services Yandex, le document correspondant a une icône spéciale avec une fusée. De plus, pour accélérer le travail, nous mettons en cache des photos et des vidéos dans nos CDN.

Un schéma de travail général très simplifié ressemble à ceci:



Comment tout a commencé


La toute première version du système de contenu a été arrangée très simplement: toutes les quelques minutes, selon le calendrier, le même programme a été lancé sur le serveur cloud interne de Yandex. Il consistait en plusieurs étapes, chaque exécution suivante après que les données précédentes étaient prêtes pour tous les flux que nous connaissons:

  • La liste des flux RSS a été téléchargée, l'analyseur de documents a été lancé;
  • une liste d'images a été extraite des résultats de l'analyseur;
  • les images non mises en cache étaient encore chargées dans le CDN;
  • les documents traités ont été versés dans le référentiel KV.

Un tel système fonctionnait parfaitement lorsque le système traitait plusieurs milliers de flux RSS plutôt légers d'agences de presse (au total - informations sur un peu moins de 100 000 documents). Mais avec l'augmentation du nombre de flux, un problème a été rapidement découvert: chaque étape prenait de plus en plus de temps, il y avait un délai entre l'apparition d'un nouveau document dans la source d'origine et son affichage en mode Turbo.

Nous avons réussi à garder la situation sous contrôle à l'aide de diverses astuces: tout d'abord, nous avons distingué la première étape (téléchargement de flux RSS + un analyseur de documents) dans un processus distinct. Autrement dit, alors que l'un traitait des images pour l'itération précédente, l'autre processus téléchargeait déjà des flux pour la suivante. Après un certain temps, il est devenu clair: sous cette forme, le système est très difficile à mettre à l'échelle. Nous avons besoin de quelque chose de fondamentalement nouveau.

Traitement RSS, API et YML dans le nouveau système de contenu


Le principal problème de l'ancien système de contenu était que toutes les données étaient traitées en une seule pièce: il n'y avait pas de transition vers l'étape suivante jusqu'à ce que chaque document passe le précédent. Pour se débarrasser de cela, il a été décidé de construire un certain pipeline: laisser les flux et les documents individuels être traités de manière aussi indépendante que possible. Toutes les étapes ont été séparées en cubes de service distincts - au niveau supérieur, le schéma s'est avéré comme ceci:



  • le premier cube télécharge les flux RSS et les transmet;
  • le second - prend les flux un par un, analyse le contenu. A la sortie - documents séparés;
  • le troisième - prend les documents un par un, traite les photos et les vidéos, enregistre tout dans le stockage KV.

Les mêmes flux peuvent être enregistrés non seulement dans Turbo, mais aussi sur nos autres services - dans les News ou sur le Marché, par exemple. Si chacun d'eux télécharge des données par lui-même, la charge sur le serveur des webmasters sera plusieurs fois supérieure à celle autorisée. Comment ça? Téléchargez le flux une fois, puis distribuez le contenu à tous les services aux consommateurs - Yandex.Robot le fait. Nous utilisons ses services pour télécharger du contenu: nous prenons de Yandex.Webmaster une liste des flux RSS et YML enregistrés dans Turbo, la transférons à Robot et souscrivons aux résultats du téléchargement.

Sur les données reçues, démarrez l'analyseur. Au cas où, permettez-moi de vous le rappeler: un flux RSS n'est qu'un fichier au format «.XML», accessible par une URL statique sur l'hôte du partenaire. Ce fichier contient des informations sur toutes les mises à jour du site - quels documents sont nouveaux, qui sont modifiés. Seules les informations les plus récentes des dernières heures seraient dans des flux idéaux: pas plus de 100 documents par plusieurs centaines de kilo-octets.

Morsures de la réalité: parfois, les fichiers sont dans le flux pendant très longtemps et ne changent jamais. Comment éviter le retraitement dans de tels cas? Nous calculons le hachage de chaque document, le stockons dans la base de données et ne faisons rien jusqu'à ce que le hachage change.

Le traitement des flux et des API YML du point de vue du système de contenu n'est pratiquement pas différent de l'interaction avec RSS: pour YML, nous démarrons un autre analyseur et les données transmises via l'API sont obtenues directement auprès de Yandex.Webmaster.



Traitement d'image et vidéo


Le document reçu à la sortie de l'analyseur est presque prêt à être écrit dans le stockage KV. La seule chose qui reste à faire avant l'envoi est de traiter les images et les vidéos: cachez dans le CDN et remplacez les liens dans le document. Là encore, nous nous tournons vers le robot pour obtenir de l'aide.

Tout d'abord, nous vérifions chaque image et vidéo: sont-elles dans le CDN? Si tout est déjà mis en cache, remplacez les liens et envoyez le document mis à jour au référentiel KV. Autrement:

  • nous envoyons la liste des URL manquantes au Robot pour la planification et le téléchargement;
  • le document lui-même est en stockage temporaire, donc après un certain temps, essayez de le vérifier à nouveau.

Un autre cube à ce moment reçoit les résultats du téléchargement, télécharge les données sur le CDN et met à jour la base de données.

Dans un tel schéma, un autre problème important lié à la planification peut être résolu: le robot comprend à quelle vitesse il est possible de télécharger des données à partir de différents hôtes, et ne permet pas les surcharges.



Chemin typique suivi par un nouveau document:

  • Le document apparaît dans le flux.
  • Le robot télécharge le flux;
  • l'analyseur découvre un nouveau document et l'envoie plus loin;
  • nous vérifions que les images du document ne sont pas mentionnées dans la base de données, commandons le téléchargement, le document est envoyé en stockage temporaire (Delay). Pendant que le document est là, le Robot télécharge les images, elles sont mises en cache dans le CDN et les liens apparaissent dans la base de données;
  • , CDN, KV-.
  • : , Delay.


Il existe une autre façon de se connecter aux pages Turbo, pour lesquelles le webmaster n'a rien à faire - Autoparser. Il crée des pages Turbo basées sur les données sources du site de contenu. Vous pouvez vous connecter, voir des exemples de pages finies, configurer des annonces et des analyses dans Yandex.Webmaster.

La principale difficulté rencontrée par l'AutoParser est de reconnaître par le balisage HTML quelles informations de base doivent être utilisées lors de la création d'une page Turbo. Pour ce faire, nous avons plusieurs processus hors ligne qui essaient de comprendre exactement comment analyser un hôte spécifique. Je me concentrerai sur deux principaux:

  • La première RSS- HTML- . — , RSS- ( ), . , . CatBoost , , . , , , . , . , , , HTML . ? : . – , .
  • : .. , , , , — . — .

Soit dit en passant, un obstacle plus fréquent - de nombreux sites bloquent la possibilité de télécharger des images par des robots dans robots.txt. Malheureusement, il est impossible de contourner ce problème et l'Autoparser n'est pas disponible pour ces pages.

En conséquence, le schéma complet du système de contenu ressemble à ceci:



Le système s'est avéré être bien évolutif: maintenant une quantité importante de ressources est utilisée pour entretenir la base de données, l'autoparser et d'autres composants du système (seul le cube responsable de l'analyse RSS, YML et API utilise plus de 300 processeurs noyaux), et en cas de charge accrue, il ne sera pas trop difficile de connecter des capacités supplémentaires.

Merci d'avoir lu jusqu'au bout! J'espère, après ce matériel, dans le travail des pages Turbo, vous obtiendrez plus de logique et moins de magie (au fait, ici- encore plus de détails sur les pages Turbo). Si quelque chose est encore incompréhensible, écrivez dans les commentaires - nous sommes en contact.

All Articles