Connection Management (Gestion des connexions)

Précédent Suivant

Afin d'éviter des demandes simultanées excessives aux serveurs d'approvisionnement et de flux, le lecteur doit mettre en place un schéma de gestion de connexion « raisonnable ». L'idée de départ est d'utiliser un schéma de relance de backoff exponentiel lors des tentatives de reconnexion, où le lecteur double son délai de relance à chaque tentative, jusqu'à une certaine limite. Un élément aléatoire est ajouté pour répartir la charge des tentatives de connexion dans le temps.

Le pire scénario est celui où un grand nombre de lecteurs (par exemple, des milliers) se déconnectent simultanément d'un serveur (par exemple, en raison d'une panne de serveur ou des conditions du réseau). Cet algorithme est conçu pour empêcher un grand nombre de clients de tenter de récupérer des informations d'approvisionnement ou de se connecter à un flux en même temps.

L'algorithme de reconnexion doit être mis en œuvre selon le processus ci-dessous. (Le lecteur interrompt cette boucle dès qu'une connexion valide est établie.)

Mise en œuvre de l'algorithme de reconnexion :

  1. Réglez d'abord le délai de relance avec une valeur aléatoire, de 1 à 5 secondes.
  2. Récupérez la configuration du flux via l'API d'approvisionnement décrite précédemment.
  3. En cas d'échec de la demande d'approvisionnement, doublez le délai de relance (jusqu'à un maximum de 1 minute). Ensuite, patientez le temps requis, puis relancez la demande d'approvisionnement (c'est-à-dire, recommencez à l'étape 2). Procédez de la sorte jusqu'à la réception des les informations relatives à l'approvisionnement.
  4. Essayez de vous connecter au premier serveur de la liste en utilisant le premier port.
  5. En cas de refus de connexion, essayez avec le port suivant. Répétez l'opération jusqu'à ce que tous les ports de ce serveur aient été testés.  Cette opération vise à tester des ports non standard, au cas où le lecteur se trouverait derrière un pare-feu strict.
  6. Si vous arrivez à la fin de la liste des serveurs, le lecteur doit doubler le délai de relance (jusqu'à un maximum de 1 minute), puis récupérer à nouveau les informations d'approvisionnement par le biais d'une nouvelle demande (c'est-à-dire, recommencez à l'étape 2).

Visuellement, le processus peut être représenté comme suit :