Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment un serveur gère-t-il les demandes de services Web de plusieurs clients

C'est pour le concept général, pas spécifique à Android

Habituellement, chacun des utilisateurs envoie une requête HTTP pour la page. Le serveur reçoit les requêtes et les délègue à différents workers (processus ou threads).

Selon l'URL donnée, le serveur lit un fichier et le renvoie à l'utilisateur. Si le fichier est un fichier dynamique tel qu'un fichier PHP, le fichier est exécuté avant d'être renvoyé à l'utilisateur.

Une fois le fichier demandé renvoyé, le serveur ferme généralement la connexion après quelques secondes.

Regardez Fonctionnement des serveurs Web

MODIF :

Pour HTTP utilise TCP qui est un protocole basé sur la connexion. Autrement dit, les clients établissent une connexion TCP pendant qu'ils communiquent avec le serveur.

Plusieurs clients sont autorisés à se connecter au même port de destination sur la même machine de destination en même temps. Le serveur ouvre simplement plusieurs connexions simultanées.

Apache (et la plupart des autres serveurs HTTP) ont un module multi-traitement (MPM). Ceci est responsable de l'allocation des threads/processus Apache pour gérer les connexions. Ces processus ou threads peuvent alors s'exécuter en parallèle sur leur propre connexion, sans se bloquer les uns les autres. Le MPM d'Apache a également tendance à garder des threads ou des processus "de réserve" ouverts même lorsqu'aucune connexion n'est ouverte, ce qui permet d'accélérer les requêtes ultérieures.

Remarque :

L'un des problèmes les plus courants avec le multithreading est les "conditions de concurrence" -- où vos deux requêtes font la même chose ("course" pour faire la même chose), s'il s'agit d'une seule ressource, l'une d'entre elles va gagner. S'ils insèrent tous les deux un enregistrement dans la base de données, ils ne peuvent pas tous les deux obtenir le même identifiant - l'un d'eux gagnera. Vous devez donc être prudent lorsque vous écrivez du code pour réaliser que d'autres requêtes sont en cours en même temps et peuvent modifier votre base de données, écrire des fichiers ou modifier des variables globales.