Client -Server -Modell

Ein Computer -Netzwerkdiagramm von Clients, die über die mit einem Server kommunizieren Internet

Client-Server-Modell ist ein verteilte Anwendung strukturieren, die Aufgaben oder Workloads zwischen den Anbietern einer Ressource oder eines Dienstes partitiert, genannt Server, und Serviceantragsteller, gerufen Kunden.[1] Oft kommunizieren Kunden und Server über a Computernetzwerk Auf separaten Hardware, aber sowohl Client als auch Server befinden sich möglicherweise im selben System. Ein Server Gastgeber führt ein oder mehrere Serverprogramme aus, die ihre Ressourcen mit Clients teilen. Ein Client teilt normalerweise keine seiner Ressourcen, sondern fordert Inhalte oder Service von einem Server an. Kunden initiieren daher Kommunikationssitzungen mit Servern, die auf eingehende Anforderungen warten. Beispiele für Computeranwendungen, die das Client-Server-Modell verwenden Email, Netzwerkdruck und die Weltweites Netz.

Client- und Serverrolle

Das Merkmal von "Client-Server" beschreibt die Beziehung kooperierender Programme in einer Anwendung. Die Serverkomponente bietet einem oder vielen Clients eine Funktion oder einen Dienst, die Anfragen für solche Dienste einleiten. Server werden nach den von ihnen erbrachten Diensten klassifiziert. Zum Beispiel a Webserver dient Webseiten und ein Dateiserver dient Computerdateien. EIN gemeinsame Ressource Kann eine der Software und elektronischen Komponenten des Servercomputers sein Programme und Daten zu Prozessoren und Speichergeräte. Die Freigabe von Ressourcen eines Servers ist a Service.

Unabhängig davon, ob ein Computer ein Client, ein Server oder beides ist, wird durch die Art der Anwendung festgelegt, die die Servicefunktionen erfordert. Ein einzelner Computer kann beispielsweise gleichzeitig eine Webserver- und Dateiserver -Software ausführen, um verschiedene Daten an Clients bereitzustellen, die unterschiedliche Arten von Anforderungen erstellen. Die Client -Software kann auch mit Server -Software auf demselben Computer kommunizieren.[2] Die Kommunikation zwischen Servern, z. B. um Daten zu synchronisieren, wird manchmal aufgerufen Inter-Server oder Server-to-Server Kommunikation.

Client- und Serverkommunikation

Im Allgemeinen ist ein Service ein Abstraktion von Computerressourcen und ein Kunde müssen nicht sein betroffen Mit der Ausführung des Servers während der Erfüllung der Anfrage und der Lieferung der Antwort. Der Client muss die Antwort nur auf der Grundlage des bekannten Anwendungsprotokolls verstehen, d. H. Der Inhalt und die Formatierung der Daten für den angeforderten Dienst.

Clients und Server tauschen Nachrichten in einem aus Request -Reaktion Messaging -Muster. Der Client sendet eine Anfrage und der Server gibt eine Antwort zurück. Dieser Austausch von Nachrichten ist ein Beispiel für Interprozesskommunikation. Um zu kommunizieren, müssen die Computer eine gemeinsame Sprache haben, und sie müssen Regeln befolgen, damit sowohl der Client als auch der Server wissen, was sie erwarten sollen. Die Sprache und die Kommunikationsregeln sind in a definiert Kommunikationsprotokoll. Alle Protokolle arbeiten in der Anwendungsschicht. Das Anwendungsschichtprotokoll definiert die grundlegenden Muster des Dialogs. Um den Datenaustausch noch weiter zu formalisieren, kann der Server eine implementieren Programmierschnittstelle (API).[3] Die API ist eine Abstraktionsschicht Für den Zugriff auf einen Dienst. Durch Einschränkung der Kommunikation auf eine bestimmte Inhaltsformat, es erleichtert Parsing. Durch den Abstrakten Zugriff erleichtert es den plattformübergreifenden Datenaustausch.[4]

Ein Server kann in kurzer Zeit Anfragen von vielen verschiedenen Clients erhalten. Ein Computer kann nur eine begrenzte Anzahl von durchführen Aufgaben jederzeit und verlässt sich auf a Planung System zur Priorisierung eingehender Anfragen von Kunden, um sie aufzunehmen. Missbrauch zu verhindern und zu maximieren VerfügbarkeitDie Serversoftware kann die Verfügbarkeit auf Clients einschränken. Denial -of -Service -Angriffe sind so konzipiert, dass sie die Verpflichtung eines Servers ausnutzen, Anforderungen zu verarbeiten, indem sie mit übermäßigen Anforderungsraten überlastet werden. Die Verschlüsselung sollte angewendet werden, wenn vertrauliche Informationen zwischen dem Client und dem Server kommuniziert werden sollen.

Beispiel

Wenn ein Bank Kundenzugriff Online-Banking Dienstleistungen mit a Webbrowser (Der Client) initiiert der Client eine Anfrage an den Webserver der Bank. Die Kunden Anmeldung Anmeldeinformationen können in a gespeichert werden Datenbankund der Webserver zugreift auf die Datenbankserver als Kunde. Ein Anwendungsserver interpretiert die zurückgegebenen Daten, indem Sie die Bank anwenden Geschäftslogik und liefert die Ausgang zum Webserver. Schließlich gibt der Webserver das Ergebnis an den Client -Webbrowser zur Anzeige zurück.

In jedem Schritt dieser Abfolge von Client-Server-Nachrichtenaustausch verarbeitet ein Computer eine Anforderung und gibt Daten zurück. Dies ist das Messaging-Muster für Anforderungsreaktion. Wenn alle Anfragen erfüllt sind, ist die Sequenz abgeschlossen und der Webbrowser präsentiert die Daten dem Kunden.

Dieses Beispiel zeigt a Designmuster anwendbar für das Client -Server -Modell: Trennung von Bedenken.

Frühe Geschichte

Eine frühe Form der Kunden-Server-Architektur ist Remote -Jobeintrag, zumindest ausgehen OS/360 (angekündigt 1964), wo die Bitte eins war, a zu führen Arbeitund die Antwort war die Ausgabe.

Während des Client -Server -Modells in den 1960er und 1970er Jahren formuliert, Informatiker Gebäude Arpanet (Bei der Stanford Research Institute) verwendeten die Begriffe Server-Host (oder Host) und User-Host (oder Verwenden), und diese erscheinen in den frühen Dokumenten RFC 5[5] und RFC 4.[6] Diese Verwendung wurde fortgesetzt Xerox Parc Mitte der 1970er Jahre.

Ein Kontext, in dem Forscher diese Begriffe verwendeten Computer -Netzwerk -Programmierung Sprache, die als Decode-Codes Language (Del) bezeichnet wird.[5] Der Zweck dieser Sprache bestand darin, Befehle von einem Computer (dem Benutzer-Host) zu akzeptieren, der dem Benutzer Statusberichte zurückgibt, da er die Befehle in Netzwerkpaketen codiert hat. Ein weiterer del-fähiger Computer, der Server-Host, hat die Pakete erhalten, entschlüsselt und formatierte Daten an den Benutzer-Host zurückgegeben. Ein DEL-Programm für den Benutzer-Host erhielt die Ergebnisse, die dem Benutzer vorgestellt wurden. Dies ist eine Client-Server-Transaktion. Die Entwicklung von DEL begann erst 1969, das Jahr, in dem die Verteidigungsministerium der Vereinigten Staaten etabliertes Arpanet (Vorgänger von Internet).

Client-Host und Server-Host

Client-Host und Server-Host subtil unterschiedliche Bedeutungen haben als Klient und Server. Ein Host ist jeder Computer, der mit einem Netzwerk verbunden ist. Während die Worte Server und Klient kann entweder auf einen Computer oder ein Computerprogramm verweisen, Server-Host und Client-Host Beziehen Sie sich immer auf Computer. Der Host ist ein vielseitiger, multifunktionaler Computer. Kunden und Server sind nur Programme, die auf einem Host ausgeführt werden. Im Client-Server-Modell ist ein Server mit größerer Wahrscheinlichkeit der Aufgabe des Servierens gewidmet.

Eine frühzeitige Verwendung des Wortes Klient tritt in "Daten von der Funktion in einem verteilten Dateisystem ab", einem 1978er Artikel von Xerox Parc -Informatikern Howard Sturgis, James Mitchell und Jay Israel. Die Autoren definieren den Begriff für die Leser und erklären, dass sie ihn verwenden, um zwischen dem Benutzer und dem Netzwerkknoten des Benutzers (dem Client) zu unterscheiden.[7] Bis 1992 das Wort Server hatte in die allgemeine Sprache eingetreten.[8][9]

Zentrales Computer

Das Client-Server-Modell schreibt nicht vor, dass Server-Hosts über mehr Ressourcen als Client-Hosts verfügen müssen. Vielmehr ermöglicht es jedem allgemeinen Computer, seine Funktionen durch die Verwendung der gemeinsam genutzten Ressourcen anderer Hosts zu erweitern. Zentrales ComputerZuordnet jedoch speziell eine große Anzahl von Ressourcen einer kleinen Anzahl von Computern zu. Je mehr Berechnung von Client-Hosts zu den zentralen Computern abgeladen wird, desto einfacher können die Client-Wirtschaften sein.[10] Es stützt sich stark auf Netzwerkressourcen (Server und Infrastruktur) für die Berechnung und Speicherung. EIN Diskloser Knoten lädt sogar seine Betriebssystem aus dem Netzwerk und a Computerterminal hat überhaupt kein Betriebssystem; Es handelt sich nur um eine Eingabe-/Ausgabeschnittstelle zum Server. Dagegen a Reicher Kunde, so wie ein persönlicher Computer, hat viele Ressourcen und stützt sich nicht auf einen Server für wesentliche Funktionen.

Wie Mikrocomputer Preis gesenkt und erhöhte die Macht von den 1980er bis Ende der neunziger Jahre, viele Organisationen wechselten die Berechnung von zentralisierten Servern, wie z. Mainframes und Minicomputeran reiche Kunden.[11] Dies lieferte eine größere, individualisierte Herrschaft über Computerressourcen, aber kompliziert, aber kompliziert Informationstechnologie Management.[10][12][13] In den 2000er Jahren, Web Applikationen gereift genug, um es mithalten zu können Anwendungssoftware entwickelt für eine spezifische Mikroarchitektur. Diese Reifung, erschwinglicher Massenspeicherund das Aufkommen von Serviceorientierte Architektur gehörten zu den Faktoren, die zu den geführt haben Cloud Computing Trend der 2010er.[14]

Vergleich mit Peer-to-Peer-Architektur

Zusätzlich zum Client-Server-Modell,, verteiltes Computer Anwendungen verwenden häufig die Peer-To-Peer (P2P) Anwendungsarchitektur.

Im Client -Server -Modell ist der Server häufig als zentrales System ausgelegt, das vielen Clients dient. Die Anforderungen an die Rechenleistung, Speicher und Speicher eines Servers müssen angemessen mit der erwarteten Arbeitsbelastung skaliert werden. Lastverteilung und Failover Systeme werden häufig verwendet, um den Server über eine einzelne physische Maschine hinaus zu skalieren.[15][16]

Lastausgleich ist definiert als die methodische und effiziente Verteilung des Netzwerk- oder Anwendungsverkehrs über mehrere Server in einer Serverfarm. Jeder Load Balancer sitzt zwischen Client -Geräten und Backend -Servern und empfängt und verteilt dann eingehende Anforderungen an einen verfügbaren Server, der sie erfüllen kann.

In einem Peer-To-Peer Netzwerk, zwei oder mehr Computer (Gleichaltrigen) Bühne ihre Ressourcen und kommunizieren in einem dezentrales System. Gleichaltrige sind koordinär oder ausgerüstet Knoten in einem nicht-hierarchischen Netzwerk. Im Gegensatz zu Kunden in einem Kunden-Server oder Client -Queue -Klient Netzwerk, Gleichaltrige kommunizieren direkt miteinander. In Peer-to-Peer-Netzwerken, an Algorithmus im Peer-to-Peer-Kommunikationsprotokollbilanzen Belastungund sogar Gleichaltrige mit bescheidenen Ressourcen können dazu beitragen, die Last zu teilen. Wenn ein Knoten nicht verfügbar ist, bleiben seine gemeinsam genutzten Ressourcen verfügbar, solange andere Kollegen ihn anbieten. Idealerweise muss ein Kollegen nicht erreichen hohe Verfügbarkeit Weil andere, überflüssig Gleichaltrige machen jede Ressource aus Ausfallzeit; Wenn sich die Verfügbarkeit und die Belastungskapazität von Gleichaltrigen ändert, fordern die Protokollanfragen um.

Sowohl Client -Server als auch Master -Lave werden als Unterkategorien verteilter Peer-to-Peer-Systeme angesehen.[17]

Siehe auch

Anmerkungen

  1. ^ "Verteilte Anwendungsarchitektur" (PDF). Sun Microsystem. Archiviert von das Original (PDF) am 6. April 2011. Abgerufen 2009-06-16.
  2. ^ Das X Fenstersystem ist ein Beispiel.
  3. ^ Benatallah, b.; Casati, F.; Toumani, F. (2004). "Web-Service-Konversationsmodellierung: Ein Eckpfeiler für die E-Business-Automatisierung". IEEE Internet Computing. 8: 46–54. doi:10.1109/mic.2004.1260703. S2CID 8121624.
  4. ^ Dustdar, S.; Schreiner, W. (2005). "Eine Umfrage zur Komposition von Webdiensten" (PDF). Internationales Journal of Web and Grid Services. 1: 1. Citeseerx 10.1.1.139.4827. doi:10.1504/ijwgs.2005.007545.
  5. ^ a b Rulifson, Jeff (Juni 1969). Del. Ietf. doi:10.17487/rfc0005. RFC 5. Abgerufen 30. November 2013.
  6. ^ Shapiro, Elmer B. (März 1969). Netzwerk Zeitplan. Ietf. doi:10.17487/rfc0004. RFC 4. Abgerufen 30. November 2013.
  7. ^ Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "Daten von der Funktion in einem verteilten Dateisystem trennen". Xerox Parc. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  8. ^ Harper, Douglas. "Server". Online -Etymologie -Wörterbuch. Abgerufen 30. November 2013.
  9. ^ "Daten von der Funktion in einem verteilten Dateisystem trennen". Informationen bekommen. Deutsche Nationalbibliothek für Wissenschaft und Technologie. Archiviert von das Original am 2. Dezember 2013. Abgerufen 29. November 2013.
  10. ^ a b Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "Ein Vergleich von Thin-Client-Computerarchitekturen". Akademische Commons. doi:10.7916/d8z329vf. Abgerufen 28. November 2018.
  11. ^ D'Amore, M. J.; Oberst, D. J. (1983). "Mikrocomputer und Mainframes". Verfahren der 11. jährlichen ACM Siguccs -Konferenz zu User Services - Siguccs '83. p. 7. doi:10.1145/800041.801417. ISBN 978-0897911160. S2CID 14248076.
  12. ^ Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (März 2006). "Quantifizierung der interaktiven Benutzererfahrung auf dünnen Clients" (PDF). Computer. IEEE Computer Society. 39 (3): 46–52. doi:10.1109/mc.2006.101. S2CID 8399655.
  13. ^ Otey, Michael (22. März 2011). "Ist die Cloud wirklich nur die Rückkehr von Mainframe Computing?". SQL Server Pro. Penton Media. Archiviert von das Original am 3. Dezember 2013. Abgerufen 1. Dezember 2013.
  14. ^ Barros, A. P.; Dumas, M. (2006). "Der Aufstieg der Webdienst -Ökosysteme". Computerspezialist. 8 (5): 31. doi:10.1109/Mitp.2006.123. S2CID 206469224.
  15. ^ Cardellini, V.; Colajanni, M.; Yu, P.S. (1999). "Dynamisches Lastausgleich auf Webserver-Systemen". IEEE Internet Computing. Institut für Elektro- und Elektronikingenieure (IEEE). 3 (3): 28–39. doi:10.1109/4236.769420. ISSN 1089-7801.
  16. ^ "Was ist Lastausgleich? Wie funktionieren Lastbalancer". Nginx. 1. Juni 2014. Abgerufen 21. Januar, 2020.
  17. ^ Varma, Vasudeva (2009). "1: Software -Architektur -Primer". Softwarearchitektur: Ein Fallbasisansatz. Delhi: Pearson Education India. p. 29. ISBN 9788131707494. Abgerufen 2017-07-04. Verteilte Peer-to-Peer-Systeme [...] Dies ist ein generischer Stil, dessen beliebte Stile die Client-Server- und Master-Slave-Stile sind.