Récemment, j'ai aidé un ami à résoudre un problème en ligne délicat : les images et les ressources statiques de son site de commerce électronique se chargent rapidement et lentement, surtout pendant les heures de pointe, et certaines zones de commentaires des utilisateurs ne peuvent pas s'ouvrir directement. Au début, j'ai pensé que la bande passante du serveur n'était pas suffisante, mais après la mise à niveau, le problème persiste. J'ai jeté un coup d'œil aux journaux d'accès en arrière-plan, bon gars, la source du trafic IP est variée, mais le retour à la source de la demande est concentré dans une ou deux machines - manifestement un problème de programmation du CDN.
De nos jours, même les CDN doivent “prévenir les coéquipiers”. De nombreuses équipes pensent que l'achat d'un CDN haute défense est une bonne chose, sans savoir que si la programmation des nœuds n'est pas intelligente, l'expérience de l'utilisateur est perturbée, ou que l'attaquant ouvre directement la porte de derrière. Aujourd'hui, nous allons parler de la planification intelligente du CDN haute défense, en particulier de la sélection automatique du nœud optimal en fonction de l'emplacement de l'utilisateur.
Tout d'abord, j'aimerais vous donner une leçon sanglante : ne faites pas confiance aux fournisseurs de services CDN qui ne font qu'allouer grossièrement les nœuds en fonction de l'emplacement géographique. J'ai découvert que la soi-disant “programmation intelligente” de certains fournisseurs de services n'est qu'un simple mappage basé sur les informations relatives au pays/à la province de l'IP de l'utilisateur, ou même une configuration statique. Par exemple, tous les utilisateurs du sud de la Chine sont dirigés vers le nœud de Guangzhou, le résultat est que le nœud est tombé en panne cette nuit-là, l'ensemble du sud de la Chine accède à tous les détours vers les États-Unis - cette programmation est simplement une optimisation négative.
Une programmation vraiment intelligente doit combiner dynamiquement une variété de facteurs : la localisation de l'utilisateur n'est que la première couche, mais aussi le calcul en temps réel de la charge du nœud, de la congestion du réseau, de la qualité du chemin de retour à la source, et même de l'existence d'une attaque en cours. À titre d'exemple, l'approche du fournisseur de CDN5 est un peu délicate : il utilise la technologie BGP Anycast + EDNS-client-subnet, au stade de la résolution DNS par le positionnement précis du préfixe IP du domaine autonome (AS) de l'utilisateur, tout en détectant parallèlement la latence de plusieurs nœuds POP et le taux de perte de paquets, et en sélectionnant finalement un nœud optimal pour renvoyer les résultats de la résolution.
Mais l'ordonnancement de la couche DNS ne suffit pas. Les attaquants ont depuis longtemps appris à résoudre directement les IP des nœuds et à cibler ensuite les attaques. Les CDN à haut niveau de défense doivent être en mesure d'effectuer un ordonnancement secondaire des requêtes HTTP lorsqu'elles arrivent aux nœuds périphériques - c'est le domaine de l'équilibrage intelligent de la charge. Par exemple, CDN07 a pour pratique de calculer le RTT (round-trip delay) du client au stade de la poignée de main TCP et, s'il constate que le délai du nœud actuel a soudainement augmenté, il transfère immédiatement l'utilisateur vers un nœud voisin plus sain via une redirection 302 ou une trame HTTP/3 ORIGIN.
Voici une comparaison de la latence de programmation (en ms) que j'ai enregistrée lorsque j'ai testé la pression de CDN07 l'année dernière :
Vous voyez la différence ? L'ordonnancement intelligent est littéralement une bouée de sauvetage dans les scénarios anormaux. En particulier en cas d'attaques DDoS, un bon système de planification peut rapidement détourner le trafic d'attaque vers le centre de nettoyage, tandis que les utilisateurs normaux sont dirigés vers les nœuds non affectés.
En ce qui concerne spécifiquement la planification basée sur la localisation de l'utilisateur, je recommande vivement l'informatique de pointe et l'apprentissage automatique pour la prédiction. Par exemple, la solution de 08Host déploie des sondes légères sur chaque nœud POP pour collecter en continu des données sur la qualité du réseau à travers les emplacements géographiques, puis prédit les tendances de latence pour les prochaines minutes à l'aide d'un modèle de prédiction de temps (par exemple, LSTM). Lorsqu'une demande d'utilisateur arrive, le système de planification appelle directement l'API du modèle de prédiction pour obtenir une liste de nœuds optimaux au lieu de s'appuyer sur une table de correspondance statique.
Il s'agit d'une version simplifiée de la logique de l'algorithme de programmation rendu public :
Bien entendu, l'environnement de production réel est beaucoup plus complexe que cela, mais il faut également tenir compte de la conservation des sessions, du basculement, du contrôle des coûts, etc. Par exemple, la demande de connexion de l'utilisateur du commerce électronique doit maintenir la session collante, et non pas à cause des nœuds de saut de programmation qui conduisent à la perte de la session - cette fois, on ne peut pas simplement regarder la qualité du réseau.
Autre problème : certains fournisseurs de services CDN, afin de réduire les coûts, remplacent secrètement le “meilleur nœud” par le “nœud le moins cher”. J'ai rencontré un fournisseur qui a programmé la demande d'un utilisateur de Shanghai vers le nœud de Mongolie intérieure, simplement parce que la bande passante du nœud est bon marché. Plus tard, nous avons ajouté une restriction de pondération des coûts à la stratégie de programmation pour résoudre le problème.
Enfin, une suggestion pratique : si vous choisissez un CDN à haute défense, veillez à tester la précision de sa programmation. Ma méthode habituelle consiste à effectuer des tests ping et HTTP en continu avec des hôtes en nuage dans plusieurs régions en même temps afin d'observer la stratégie de commutation des nœuds dans différentes périodes de temps et dans différentes conditions de réseau. Un bon CDN doit être capable d'effectuer un second changement de nœud et d'être insensible à l'utilisateur. À cet égard, CDN5 et CDN07 sont très performants, tandis que 08Host est plus rentable, ce qui convient aux équipes disposant d'un budget limité.
La planification intelligente n'est pas une solution miracle, mais c'est vraiment le cœur de la valeur d'un CDN de haute défense. La prochaine fois que vous verrez la carte des nœuds de la console CDN avec ces fleurs et ces verts, vous voudrez peut-être vous demander : comment définir ce qui est “optimal” en fin de compte ? L'autre côté de la réponse déterminera probablement le plafond de l'expérience utilisateur de votre entreprise au cours de l'année à venir.

