Erreur de chargement extrême

Il est important de garder à l’esprit que les implémentations de « chat » diffusent généralement le contenu réel aux abonnés.

Dans Discourse, nous avons un pipeline assez complexe qui rend l’implémentation naïve complexe et entraîne un trafic important.

  1. Un utilisateur publie une réponse
  2. Tous les utilisateurs consultent le sujet et découvrent via la diffusion qu’il y a du nouveau contenu
  3. Tous les utilisateurs demandent le contenu du post au serveur (100 spectateurs = 100 requêtes)
  4. Nous récupérons les images / optimisons les images
  5. Tous les utilisateurs consultent le sujet et découvrent via la diffusion qu’il y a du nouveau contenu
  6. Tous les utilisateurs demandent le contenu du post au serveur (100 spectateurs = 100 requêtes)

(nous avons diverses optimisations, limites de débit, nouvelles tentatives, etc., mais c’est l’essentiel)

Toutes ces requêtes doivent passer par notre pipeline de sécurité pour s’assurer que l’utilisateur a le droit de voir le post, etc.

Si le contenu était assez court et que nous pouvions trouver un moyen de mettre en œuvre la sécurité de manière plus légère pour la « voie rapide », nous pourrions distribuer les messages de chat via la diffusion. Cela entraînerait des performances nettement meilleures ; avec cette conception, nous pourrions probablement gérer 10 000 utilisateurs sur un seul petit droplet Digital Ocean de 2 Go.

La sécurité est très complexe. La mise en cache l’est aussi en raison des problèmes d’invalidation du cache.

Donc, oui, nous réfléchons absolument à ce problème. Mais pour l’instant…

Beaucoup de spectateurs connectés sur un sujet + beaucoup de nouveau contenu sur un sujet = des factures de serveur élevées.