sql >> Database >  >> RDS >> Sqlserver

Hoe gaat een server om met webserviceverzoeken van meerdere clients?

Het is voor het algemene concept, niet specifiek voor Android

Gewoonlijk stuurt elk van de gebruikers een HTTP-verzoek voor de pagina. De server ontvangt de verzoeken en delegeert ze aan verschillende werkers (processen of threads).

Afhankelijk van de opgegeven URL leest de server een bestand en stuurt het terug naar de gebruiker. Als het bestand een dynamisch bestand is, zoals een PHP-bestand, wordt het bestand uitgevoerd voordat het naar de gebruiker wordt teruggestuurd.

Nadat het gevraagde bestand is teruggestuurd, sluit de server de verbinding meestal na een paar seconden.

Kijk naar Hoe webservers werken

BEWERKEN:

Voor HTTP wordt TCP gebruikt, een op verbindingen gebaseerd protocol. Dat wil zeggen, clients brengen een TCP-verbinding tot stand terwijl ze communiceren met de server.

Meerdere clients mogen tegelijkertijd verbinding maken met dezelfde bestemmingspoort op dezelfde bestemmingsmachine. De server opent gewoon meerdere gelijktijdige verbindingen.

Apache (en de meeste andere HTTP-servers) hebben een multi-processing module (MPM). Dit is verantwoordelijk voor het toewijzen van Apache-threads/-processen om verbindingen af ​​te handelen. Deze processen of threads kunnen dan parallel lopen op hun eigen verbinding, zonder elkaar te blokkeren. Apache's MPM heeft ook de neiging om "reserve" threads of processen open te houden, zelfs als er geen verbindingen open zijn, wat helpt om volgende verzoeken te versnellen.

Opmerking:

Een van de meest voorkomende problemen met multi-threading is "race-voorwaarden"-- waar jullie twee verzoeken hetzelfde doen ("racen" om hetzelfde te doen), als het een enkele hulpbron is, zal een van hen winnen. Als ze allebei een record in de database plaatsen, kunnen ze niet allebei dezelfde id krijgen - een van hen zal winnen. U moet dus voorzichtig zijn bij het schrijven van code om te beseffen dat er tegelijkertijd andere verzoeken plaatsvinden en uw database kunnen wijzigen, bestanden kunnen schrijven of globals kunnen wijzigen.



  1. Hoe te SELECTEREN op MAX (datum)?

  2. Gegevens rechtstreeks vanuit Excel invoegen in Oracle Database

  3. Adaptieve dynamische statistieken verslechteren de prestaties in 12.1.0.2 RAC

  4. MySQL-kolommen met DEFAULT NULL - stilistische keuze, of niet?