Amélioration de la fiabilité de Netflix avec une gestion de charge priorisée par niveau de service
Netflix a mis en œuvre une technique de gestion de charge par palier pour améliorer l'expérience utilisateur et la résilience du système. Cette technique priorise les requêtes critiques initiées par l'utilisateur par rapport aux requêtes de pré-lecture non critiques au sein du même service. En mettant en place un limiteur de concurrence avec partitionnement, PlayAPI, un service backend critique, attribue 100% de la capacité de traitement aux requêtes critiques et utilise la capacité excédentaire pour les requêtes non critiques. Cette priorisation garantit que les requêtes initiées par l'utilisateur conservent une haute disponibilité même pendant les pics de trafic ou les hautes latences. Le succès de cette approche a conduit au développement d'une bibliothèque générique pour la priorisation des services, permettant aux services de définir plusieurs niveaux de priorité. Cette bibliothèque utilise l'utilisation du CPU comme mesure de la charge du système, éloignant progressivement le trafic de priorité inférieure pour maintenir l'expérience utilisateur et donner plus de temps pour l'auto-scaling. Les expériences ont montré que cette approche éloigne efficacement le trafic non critique et critique dans des conditions de charge extrêmes, maintenant des latences raisonnables et une stabilité de la capacité de traitement. Netflix souligne l'importance d'éviter les anti-modèles tels que l'absence de shedding ou la congestion de fail, qui peuvent détériorer l'expérience utilisateur ou provoquer une instabilité du système.