Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verarbeitet ein Server Webdienstanfragen von mehreren Clients?

Es handelt sich um das allgemeine Konzept, nicht um ein Android-spezifisches

Normalerweise sendet jeder Benutzer eine HTTP-Anforderung für die Seite. Der Server empfängt die Anfragen und delegiert sie an verschiedene Worker (Prozesse oder Threads).

Abhängig von der angegebenen URL liest der Server eine Datei und sendet sie an den Benutzer zurück. Wenn es sich bei der Datei um eine dynamische Datei handelt, z. B. eine PHP-Datei, wird die Datei ausgeführt, bevor sie an den Benutzer zurückgesendet wird.

Sobald die angeforderte Datei zurückgesendet wurde, schließt der Server die Verbindung normalerweise nach einigen Sekunden.

Sehen Sie sich Wie Webserver funktionieren an

BEARBEITEN:

Für HTTP wird TCP verwendet, ein verbindungsbasiertes Protokoll. Das heißt, Clients stellen eine TCP-Verbindung her, während sie mit dem Server kommunizieren.

Mehrere Clients dürfen sich gleichzeitig mit demselben Zielport auf derselben Zielmaschine verbinden. Der Server öffnet einfach mehrere gleichzeitige Verbindungen.

Apache (und die meisten anderen HTTP-Server) haben ein Multi-Processing-Modul (MPM). Dies ist für die Zuweisung von Apache-Threads/-Prozessen zur Verarbeitung von Verbindungen verantwortlich. Diese Prozesse oder Threads können dann parallel auf ihrer eigenen Verbindung laufen, ohne sich gegenseitig zu blockieren. Apaches MPM neigt auch dazu, "Ersatz"-Threads oder -Prozesse offen zu halten, selbst wenn keine Verbindungen offen sind, was hilft, nachfolgende Anfragen zu beschleunigen.

Hinweis:

Eines der häufigsten Probleme mit Multi-Threading sind „Race Conditions“-- wo Sie zwei Anfragen dasselbe tun ("Rennen", um dasselbe zu tun), wenn es sich um eine einzelne Ressource handelt, wird eine von ihnen gewinnen. Wenn beide einen Datensatz in die Datenbank einfügen, können sie nicht beide dieselbe ID erhalten – einer von ihnen gewinnt. Sie müssen also vorsichtig sein, wenn Sie Code schreiben, um zu erkennen, dass andere Anfragen gleichzeitig laufen und Ihre Datenbank modifizieren, Dateien schreiben oder Globals ändern können.