sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan håndterer en server webserviceanmodninger fra flere klienter

Det er for det generelle koncept, ikke et Android-specifikt

Normalt sender hver af brugerne en HTTP-anmodning til siden. Serveren modtager anmodningerne og uddelegerer dem til forskellige arbejdere (processer eller tråde).

Afhængigt af den angivne URL læser serveren en fil og sender den tilbage til brugeren. Hvis filen er en dynamisk fil, såsom en PHP-fil, udføres filen, før den sendes tilbage til brugeren.

Når den anmodede fil er blevet sendt tilbage, lukker serveren normalt forbindelsen efter et par sekunder.

Se på Sådan fungerer webservere

EDIT:

Til HTTP bruger TCP, som er en forbindelsesbaseret protokol. Det vil sige, at klienter etablerer en TCP-forbindelse, mens de kommunikerer med serveren.

Flere klienter har tilladelse til at oprette forbindelse til den samme destinationsport på den samme destinationsmaskine på samme tid. Serveren åbner bare flere samtidige forbindelser.

Apache (og de fleste andre HTTP-servere) har et multi-processing modul (MPM). Denne er ansvarlig for at allokere Apache-tråde/-processer til at håndtere forbindelser. Disse processer eller tråde kan så køre parallelt på deres egen forbindelse uden at blokere hinanden. Apaches MPM har også en tendens til at holde åbne "reserve"-tråde eller processer, selv når ingen forbindelser er åbne, hvilket hjælper med at fremskynde efterfølgende anmodninger.

Bemærk:

Et af de mest almindelige problemer med multi-threading er "race conditions"-- hvor I to anmodninger gør det samme ("racer" for at gøre det samme), hvis det er en enkelt ressource, vil en af ​​dem vinde. Hvis de begge indsætter en post i databasen, kan de ikke begge få det samme id - en af ​​dem vil vinde. Så du skal være forsigtig, når du skriver kode for at indse, at andre anmodninger foregår på samme tid og kan ændre din database, skrive filer eller ændre globaler.



  1. Ignorerer substitutionsvariabel, når betingelsen ikke er opfyldt

  2. Grundlæggende DB-forbindelsespulje med Java og Tomcat 7

  3. Bruger login system med mySQL database med Angular JS?

  4. Databasevalg til oprettelse af to forbundne tabeller?