Client Server (Einführung) | Informatik Lernvideo Lernvideos und Vorträge https://www.youtube.com/watch?v=z93mNKzIQIE Transkript (automatisch erstellt) 0:00 Heute ist das Thema Client Server. Äh da erinnern wir uns mal zurück an die letzte Vorlesenseinheit. Da hatten wir gesagt, Client Server funktioniert so, 0:09 ne? Es gibt hier so ein paar Rechner, die bestimmte Dienste einbieten und hier gibt's Client, ne? Da sitzen die Menschen davor. Also hier wird eine 0:17 Aktion ausgelöst und dann wird erwartet, dass auf der anderen Seite hier eben eine Reaktion passiert, also z.B., dass Daten abgespeichert werden oder dass 0:26 irgendwie Kommunikationseinheit fax benutzt wird oder dass eine Seite ausgedruckt wird und so weiter. Das heißt also hier auf der kleinen Seite, 0:34 das ist quasi der Kunde, der sagt, ich brauche mal das und der Server der stellt es dann eben bereit. Hier gibt's auch eine kleine Doppelung in der 0:41 Bedeutung, also Server nennen wir einmal diese Kiste, also das Gerät, aber eben auch die Software, die hier läuft und eben diese Funktion bereit steht, wird 0:49 als Server bezeichnet. So. Wie wie muss jetzt so ein Server implementiert sein? Also, der muss auf das Protokoll reagieren, was wir schon 0:58 festgelegt haben. Ja, der muss erkennt alle im Protokoll festgelegten Aktionen im Vorhinein. Ja, jede Aktion ist klar definiert. Ist also völlig klar, wenn 1:08 der Klient irgendeinen Befehl schickt, was der Server zu tun hat. Und jeder denkbaren Situation ist eine bestimmte Aktion zugeordnet. So, das heißt, im 1:18 Umkehrschluss, der Server reagiert immer auf das, was vom Kleinen geschickt wird und zwar eindeutig, das heißt, der Server muss ein Automat sein. Das können 1:28 Sie sich gleich mal merken. Wir werden uns nämlich noch mit der Automaten ähm Programmierung beschäftigen und dann passt es nämlich nachher auch wieder 1:36 zusammen. Also schauen wir uns mal ein paar Beispiele an. Einfache Beis einfache Datenhaltung. Ja, wir haben hier einen 1:42 Datenkonsumenten und auf der anderen Seite ein Datenspeicher. Ja, also hier das die Maschine hat ein Datenspeicher, das ist in die Rollen relativ leicht zu 1:51 identifizieren. Ja, das ist der Client, der möchte hier was abspeichern. Also die Zugriffsrichtung ist die und der macht es dann, ne, führt's dann einfach 1:58 aus, ne? Klein Server eindeutige Rollen. So, bei der verteilten Datenhaltung wird es schon schwieriger, ne? Nehmen wir mal an, wir haben mehrere 2:07 Datenspeicher, was weiß ich, verschiedene Netzlaufwerke auf verschiedenen Rechnern. Da gibt's ja mehrere Möglichkeiten. Also entweder der 2:14 Client macht jedes Mal macht er sich die Arbeit und durchsucht die Datenspeicher einzeln. Gibt's ganz oft. Ja, also ähm hier an der Hochschule haben wir auch 2:23 mehrere Laufwerke, das Gruppenlaufwerk, sie haben ihr Homeelaufwerk und so weiter. Wenn Sie was suchen, durchsuchen sie im Prinzip alle Datenspeicher 2:29 nacheinander, ne? Das macht der Client hier und er sucht, dann bleibt die Aufteilung wie gehabt. Ich auf der beim Datenkonsumenten den Klein, der 2:38 durchsucht den Server, der sucht auf dem Server, der sucht auf dem Server und irgendwann findet er das, was er sucht. Was man aber auch machen könnte, ist, 2:45 dass man sagt, na ja, ich mache zwar eine verteilte Datenhaltung hier hinten mehrere Rechner, aber für den kleinen selber sieht es nur aus wie ein 2:56 Filserver, ne? Dann würde man sagen, ich habe hier Datenspeicher, da Datenspeicher, da Datenspeicher, der ist verteilt, der ist renondant meinetwegen 3:02 oder ist auf verschiedene Rechenzentren verteilt oder einfach nur auf verschiedene Maschinen. Ja, und dann würden man nämlich hier einen kleinen 3:09 implementieren, der auf diesen Server zugreift und dieser Server hat intern wieder eine kleinen Komponente, mit derer eben die anderen Datenspeicher 3:17 z.B. durchsucht oder Daten abruft und die dann eben entsprechend an den Client ausliefert, ne? Dann sind die Rollen so, dass man im Prinzip auf in diesem 3:26 Rechner Server und Client vereint hat. Schauen wir uns mal den Anwendungsfall entferntes Rechnen an. Na, wenn man den ganz einfach betrachtet, 3:37 dann ist es einfach. Ich habe hier eine Aufgabe. Ich habe hier ein Rechner, der ganz viel Rechenkapazität hat. Ja, dann mache ich hier client Server. Ich 3:45 schiebe die Aufgabe hier hoch und warte einfach, bis das Ergebnis wieder zurückgepurzelt kommt. So, spätestens, wenn ich jetzt zum 3:54 Verteilten rechnen komme, ja, da können wir die Rollen anders verteilen. Also, wir können wieder den Klassiker machen. Wir sagen einfach, ich verteile das, es 4:01 gibt so ein Scheduler, der verteilt die Aufgaben. Manchmal bauen ja auch Aufgaben aufeinander auf. Das heißt, es wird eine Teilaufgabe berechnet, aus der 4:08 ergeben sich neue. Und der Scheduler, der verteilt es jetzt einfach hier, ne? Der ist auf dem kleinen implementiert und der verteilt es jetzt auf diese 4:15 verschiedenen Rechen Server. Wenn er ein Ergebnis hat, schickt er das zurück und dann macht er vielleicht eine neue Aufgabe und schickt die wieder an so ein 4:23 Server der Rechenkapazität bereitstell. Das hat jetzt den entscheidenden Nachteil, dass der Aufgabensteller hier im Prinzip seinen Client die ganze Zeit 4:32 zur Verfügung stellen muss, also im Prinzip anlassen muss. Ja, deshalb macht man das lieber anders, dass man sagt dann der Scheduler, der ist auf einem 4:39 Server implementiert. Ja, der klein nimmt die Aufgabe, schiebt die auf den Server und sagt, mach mal. interessiert mich jetzt das Ergebnis und das 4:46 Verteilen auf die anderen Server, das macht eben hier dieser Server entsprechend müsste hier dann auch wieder entsprechender Client 4:53 implementiert sein in dem Scheduler. Das geht aber auch umgekehrt, dass man es andersrum macht, dass man sagt, na ja, ich schiebe meine Aufgabe auf den 5:00 Server, ja, und der macht den hat den Scheduler, macht also verteilt die Teilaufgaben und es ist jetzt nicht so, dass der die 5:08 direkt auf die Server verteilt, sondern dass hier diese Rechenknoten auch wieder nur klein sind, die sagen, na, ich habe freie Rechenzeit, ich hole mir mal eine 5:15 Aufgabe vom Server, ne? Dann wären das hier oben ja zwei verschiedene Server, nämlich einmal ein Aufgaben Entgegennames Sererver und einmal ein 5:25 Teilaufgaben Bereitstellungsserver, ne? Beides sind Serveraufgaben, so dass ich hier verschiedene Clients habe, nämlich einmal den kleinen für ich stelle eine 5:32 Aufgabe und laste die hier in den Scheduler ein und einmal einen kleinen für ich hätte mal Rechenkapazität übrig, gibt mir doch mal eine Aufgabe, dann 5:41 rechnet er die und schiebt dann das Ergebnis auf den Server zurück und der Server wird dann das im Scheduler vermerken und sagen, ja, diese 5:47 Teilaufgabe wurde berechnet und dann entsprechend vielleicht eine andere Teilaufgabe dem Client übergeben. Ja, also so kann man mit diesen kleinen 5:56 Serverrollen da ein bisschen spielen, je nachdem was man für eine Anwendung hat. Ja, schauen wir uns mal ein berühmtes Beispiel an, was wir täglich benutzen. W 6:05 jetzt der Webserver, ja, haben hier ein Server, ja, und hier ist der Klein, da ist die Rolle völlig klar. Hier ist der Betrachter, der möchte auf der Webseite 6:12 was sehen. Und im Webserver drin, also der läuft jetzt hier auf dieser Maschine, da gibt's jetzt mehrere Möglichkeiten. Entweder der holt das, 6:18 was Sie da abrufen wollen, direkt aus dem Datenspeicher, aus dem Dateispeicher, also sprich aus dem Filsystem. Ja, oder der führt ein 6:24 Programm aus und holt die Daten aus der Datenbank, ne? Also, wenn Sie z.B. ihre personalisierte E-Mailseite hier äh in unserem Exchange System in der FH sehen, 6:35 dann wird die ja über ein auf dem Falls auf dem Webserver laufendes Programm berechnet. Also sprich werden die ihre E-Mails aus der Datenbank abgerufen und 6:43 dann entsprechend hier dem Klient übertragen. Und wenn Sie dann oben links das Logo z.B. das liegt einfach hier im Dateispeicher rum. Ja, und dann wird es 6:53 vom Server auch übertreibend. Klient ist es am Ende ja egal, wo die wo die Daten herkommen. Der Webserver wird dann immer entscheiden, ob er den Dateispeicher 7:02 nutzt oder ein Programm ausführt.