Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   3 Client 3 Server oder 1 Client 1 Server und Dienste (https://www.delphipraxis.net/136963-3-client-3-server-oder-1-client-1-server-und-dienste.html)

Jackie1983 11. Jul 2009 08:55


3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Servus,

wie würdet ihr das machen?
Bin dabei für uns eine Client Server Anwendung zu programmieren.
Wir brauchen mehrere Aufgaben das heist ich möchte die von den anderen Aufgaben auseinanderhalten.

Methode 1
Delphi-Quellcode:
ClientComputer          Servercomputer
   Client1        <->       Server1
   Client2        <->       Server2
   Client3        <->       Server3
Dabei gibt es vorteile sowie nachteile. Vorteil die last wird verteilt da 3 Server. Nachteil es müssen 3 Verbindungen bestehen.

Methode 2
Delphi-Quellcode:
 Dienst       ClientComputer          Servercomputer
Aufgabe1  <->    Client1        <->       Server1
Aufgabe2  <->
Aufgabe3  <->
Ich sende dann einen Befehl an den Client dieser schaut nach an welchen Dienst diese gerichtet ist und leitet den Befehl weiter an den Dienst, wenn der Dienst was zu senden hat, sendet er den Befehl an den Client und dieser wieder an den Server.
Vorteil es läuft nur ein Client und ein Server. Nachteil wenn der Client abschmiert war es das und ich kann gar nichts mehr machen. Hat auch den vorteil wenn ich ein update aufspiele brauche ich nur den einen Dienst zu erneuern und nicht den ganzen client anhalten.

Was meint ihr?

Mfg

jaenicke 11. Jul 2009 09:14

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Wenn die Ausfallsicherheit sehr wichtig ist, dann könnte man auch einfach zwei Clients parallel benutzen, die beide alle Aufgaben durchführen können. Und auf Serverseite gilt das selbe. Ist der eine Server nicht erreichbar, wird ein parallel laufender als Fallback benutzt. Die Clients bräuchten dann nur eine Liste der möglichen Server.

Die Anzahl der Clientcomputer hängt doch eigentlich davon ab, ob man mehrere braucht oder nicht. Aber wegen Client, was ich nicht so ganz verstehe:
Bei deiner Methode 2 sendest du an einen Clientcomputer, aber von wo? Auf weiteren Clientcomputern? Das heißt die hier genannten Clients wären eigentlich auch Server? :gruebel:

Jackie1983 11. Jul 2009 09:20

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von jaenicke
Bei deiner Methode 2 sendest du an einen Clientcomputer, aber von wo? Auf weiteren Clientcomputern? Das heißt die hier genannten Clients wären eigentlich auch Server? :gruebel:

Sorry das hätte ich noch was deutlicher beschreiben sollen.
Im grunde läuft es so ab

Delphi-Quellcode:
ClientComputer         ServerComputer         Manager
   Client        <->      Server1       
                            Server2       <->   Client
Möchte der Manager einen Befehl zum Client senden, sendet er den Befehl an den Server2. Server2 gibt den Befehl weiter an Server1 und dieser schaut nach welcher Client gemeint ist und sendet den Befehl zum Clientcomputer.

Jackie1983 11. Jul 2009 09:30

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von jaenicke
Die Anzahl der Clientcomputer hängt doch eigentlich davon ab, ob man mehrere braucht oder nicht.

Das ist es ja gerade. Erstellt man 3 Clients, dann laufen aber auf einem Computer 3 TClientSockets.
Und deswegen wollte ich mal hören wir ihr das findet wenn man nur einen TClientSockets erstellt.
Braucht man mehrer Aufgaben kann auf dem Computer noch ein Dienst installiert werden un der Dienst tauscht die Daten mit der Clientsocket aus und diese sendet die Daten zum server...

jaenicke 11. Jul 2009 09:47

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Ah, jetzt habe ich verstanden was du meinst. :idea:

Ein großer Vorteil einer einzigen Verbindung wäre, dass sich dieser eine Dienst auch darum kümmern kann, wenn der Server ausfällt. Das heißt es könnte zentral für alle Dienste ein Backupserver gesucht und dazu eine Verbindung hergestellt werden.
Ein Nachteil ist allerdings die zusätzliche Interprozesskommunikation auf dem Client. Dazu kommt, dass alles von dem einen zentralen Dienst abhängt. Fällt der aus irgendeinem Grund aus, geht gar nichts mehr auf dem Client.

Deshalb wäre meine Meinung, dass mehrere separate Dienste mit eigenen Verbindungen ausfallsicherer und robuster (nicht von IPC und einem anderen Dienst abhängig) zu programmieren wären. Die Logik der Verbindung kann man ja kapseln, insofern sollte auch der Aufwand bei der Entwicklung nicht viel höher sein bzw. im Vergleich mit der IPC eher niedriger.

Wobei ich dazu sagen muss, dass ich mit der Entwicklung verteilter Systeme keine große Erfahrung habe, vermutlich gibt es also auch noch andere Faktoren, an die ich jetzt gar nicht denke.

Jackie1983 11. Jul 2009 10:01

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von jaenicke
Ein großer Vorteil einer einzigen Verbindung wäre, dass sich dieser eine Dienst auch darum kümmern kann, wenn der Server ausfällt. Das heißt es könnte zentral für alle Dienste ein Backupserver gesucht und dazu eine Verbindung hergestellt werden.

Hmmm, das bringt mich auch eine Idee. Wie wäre es denn damit das ein Backupdienst schaut ob der Socketdienst noch läuft, wenn nicht einfach den Dienst neustarten und der Socketclient meldet sich wieder an den Server an.

Zitat:

Zitat von jaenicke
Ein Nachteil ist allerdings die zusätzliche Interprozesskommunikation auf dem Client. Dazu kommt, dass alles von dem einen zentralen Dienst abhängt. Fällt der aus irgendeinem Grund aus, geht gar nichts mehr auf dem Client.

Den Datenaustasuch könnte man ja über eine Datei machen. Sobal in der Datei was neues steht, nimmt der Dienst die Daten aus der Datei und gibt diese wieder frei für den Socketclient.

Zitat:

Zitat von jaenicke
Deshalb wäre meine Meinung, dass mehrere separate Dienste mit eigenen Verbindungen ausfallsicherer und robuster (nicht von IPC und einem anderen Dienst abhängig) zu programmieren wären.

Das Problem was ich sehe, oder nur meine ist, auf dem eigentlichen Server laufen 3 Serversockets. Diese müssen ja auch untereinader kommunizieren und jobs hin und her verlagern. Also Synchronisieren.

Ich denke so, lieber 3 oder 4 Dienste auf einem Computer wie 3 Socketclients auf einem Computer.

SirThornberry 11. Jul 2009 10:15

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
eine Methode fehlt auch noch im Ausgangspost:
Delphi-Quellcode:
 Dienst       ClientComputer          Servercomputer
Aufgabe1  <->    Client1        <->       Server1
Aufgabe2  <->                   <->       Server1
Aufgabe3  <->                   <->       Server1
So das man einen Client hat aber dort in den Einstellungen für die verschiedenen Aufgaben verschiedene Server eintragen kann. Das macht vor allem dann Sinn wenn der Client nur zur Bedienung ist und die eigentlichen Aufgaben (Prozessorlastige etc.) auf dem Server geschehen.

Jackie1983 11. Jul 2009 10:23

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von SirThornberry
So das man einen Client hat aber dort in den Einstellungen für die verschiedenen Aufgaben verschiedene Server eintragen kann. Das macht vor allem dann Sinn wenn der Client nur zur Bedienung ist und die eigentlichen Aufgaben (Prozessorlastige etc.) auf dem Server geschehen.

Jup stimmt. Habe aber dann ein Problem.
Der Client muss die Verbindung immer trennen.
Und wenn der Server 1 daten an den Client senden möchte dieser aber gerade mit Server 2 verbunden ist muss ich mit Server 1 warten solange bis der Client sich wieder an Server1 anmeldet...

jaenicke 11. Jul 2009 10:26

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Warum musst du da Verbindungen trennen? Es können doch auch mehrere parallele Verbindungen laufen. :gruebel:
(Je nach Client-Betriebssystem und Einstellungen zumindest 10.)

Jackie1983 11. Jul 2009 10:32

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Das stimmt schon, aber so wie du es oben in der Zecihnung dargstellt hast nur mit einem Client auf dem Computer.
Wie soll den ein Client die Verbindung mit 3 Server halten. Der Client meldet sich an Server 1 dann kann er ja nicht mit Server 2 kommunizieren, da dieser ja auf einen anderen Port läuft...

SirThornberry 11. Jul 2009 11:15

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Ich glaube wir stellen uns unter client gerade alle etwas anderes vor.
Wofür steht Client bei dir?
- für einen eigenen Computer
- für ein eigenes Programm
- für eine Clientcomponente

gleiches gilt für den Server. Wenn von Last die Rede ist spricht man in aller Regel direkt vom Computer. Wenn man von Diensten spricht redet man von Programmen (Webserver = Programm1, smtp-server = Programm2, ...) und dann gibt es auch dort die Möglichkeit innerhalb eines Programmes (zum Beispiel Mailserver allgemein) mehrere Servercomponenten zu verwenden (imap, pop, smtp)

Jackie1983 11. Jul 2009 11:31

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
ich meine es so
Delphi-Quellcode:
Computer1              Computer2              Computer3
Anwendung             Anwendung             Anwendung
  - Client1    <->      - Server1             
  - Client2    <->      - Server2
  - Client3    <->      - Server3
                         - Server4     <->     - Client4
Also auf irgend ein Computer läuft meine Clientanwendung. Die Clientanwendung baut 3 Verbindungen auf zu einem anderem Computer, hier Computer2. Auf Computer2 läuft meine Serveranwendung, diese hat 4 Server mit 4 Ports.

Computer1 irgend ein client im Netzwerk
Computer2 ist ein SBS 2003
Computer3 x belibiger Rechner im Netz für die Verwaltung

oder halt dann diese Methode
Delphi-Quellcode:
   Computer1                Computer2         Computer3
Dienste    Anwendung      Anwendung        Anwendung
Dienst1 <->  - Client1 <->  - Server1         
Dienst2 <->                  - Server2  <->   - Client2 
Dienst3 <->
Die Dienste die alle auch auf dem Computer laufen wo die Anwendung läuft, werden dann vom Client1 gesteuert, bzw bekommen da seine Befehle. Vorteil nur eine verbindung.

Ich glaube jetzt habe ich mich richtig ausgedrückt.

SirThornberry 11. Jul 2009 11:42

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
*g* ok, wir haben uns Missverstanden. Ich meinte es so:
Delphi-Quellcode:
Computer1                           
Anwendung            
  - Client1    <->    Computer1 - Anwendung1 - Server1/Dienst1             
  - Client2    <->    Computer2 - Anwendung2 - Server2/Dienst2             
  - Client3    <->    Computer3 - Anwendung3 - Server3/Dienst3
Und die Verwaltung dann als Extra Programm. Das macht aber eben nur Sinn wenn die eigentliche Last der Server zu tragen hat und die Clients nur zur Ein-/Ausgabe sind. Denn der Client hat nichts zu tun und die Server welche die Last tragen sind auf 3 Rechenmaschienen aufgeteilt.

Jackie1983 11. Jul 2009 11:45

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
aso ok, dann haben wir uns missverstanden :D
Was wäre also besser Methode 1 mit 3 Clients
oder Methode 2 mit nur einem Client?

mschaefer 11. Jul 2009 12:10

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Könnte man mal analysieren:

1. (a) Sind die Serverdienste unter Hochlast bereitzustellen oder (b) ist eher ihre dauerhafte Verfügbarkeit wichtig ?


Bei a würde ich zu der Aufteilung der Serverdienste auf mehrere Servercomputer neigen.
-------------------------------------------------------------------------------------------------------------

Bei b würde ich die Serverdienste auf einem Computer bündeln. Wenn besondere Ausfallsicherheit
bei b gewünscht wird, dann würde ich ein Heartbreaksystem einsetzten. Im Extremfall über mehrere Computer.
-------------------------------------------------------------------------------------------------------------

Jackie1983 11. Jul 2009 12:47

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von mschaefer
Könnte man mal analysieren:

1. (a) Sind die Serverdienste unter Hochlast bereitzustellen oder (b) ist eher ihre dauerhafte Verfügbarkeit wichtig ?


Bei a würde ich zu der Aufteilung der Serverdienste auf mehrere Servercomputer neigen.
-------------------------------------------------------------------------------------------------------------

Bei b würde ich die Serverdienste auf einem Computer bündeln. Wenn besondere Ausfallsicherheit
bei b gewünscht wird, dann würde ich ein Heartbreaksystem einsetzten. Im Extremfall über mehrere Computer.
-------------------------------------------------------------------------------------------------------------

So oder so habe ich dann aber am Clientcomputer auch 3 Socket verbindungen...

mschaefer 11. Jul 2009 17:33

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Ja! Das ist korrekt!

Du hast drei Dienste, die logischerweise auf drei unterschiedlichen Ports laufen. Das ist praktisch aber kein wirkliches Problem, da jetder Dienst unabhängig kommunizieren können muß. Da eine Bündellung über einen Port zu legen würde dann nur Rechenaufwand erfordern um das wieder zu entflechten, also gleich die Portnummer als Weiche nehmen ist wohl günstiger.

Viele Grüße // Martin

Jackie1983 13. Jul 2009 08:29

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
dachte mir halt nur das wenn eine Verbindung läuft das dass besser wäre.
Deswegen eine Anwendung die als Verteiler dient. Aber wenn jeder ne eigene Verbindung besser ist, werde ich es wohl so machen.

mschaefer 13. Jul 2009 09:03

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Moin, Moin,

in den meisten Fällen fährst Du damit gut, gibt natürlich auch Ausnahmen.

Nehmen wir an Du hast einen Datenbankserver, eine Zeitsynchronisation, eine Chatverbindung dann laufen die auf unterschiedlcihen Ports allemal besser, da dass Betriebssystem bei gleichzeitigen Anfragen das schon sauber in Zeitscheiben aufteilen kann und nicht intern noch ermittelt werden muß welches der Programme auf dem gleichen Port sich melden muß. Es ist vom Zeitverlauf am günstigsten.

Eine der "sagen wir mal Ausnahmefälle" wäre zum Beispiel ein SOAP-Server. Der stellt verschiedenen Funktionen und Rechenroutinen für externe Clients zur Verfügung. Der kann natürlich verschiedene Aufgaben/Anwendungen (sprich Proceduren und Funktionen) zur Verfügung stellen und entscheidet selbständig welche Routine angefordert wird. Also der SOAP-Server erfüllt verschiedene Aufgaben oder nacht Sichtweise ist er halt nur ein Soap-Dienst.

Grüße // Martin

Jackie1983 13. Jul 2009 10:11

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
hmm ok stimmt. Angenommen man hat 3 "Aufgaben" die dann ein Server abarbeiten muss von einem Client dann kann der Server leicht überfordert sein, oder verschlingt zu viele Ressourcen.

mschaefer 13. Jul 2009 10:32

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Auch hmm: Der Begriff Server wird leider oft für Serverdienst (Webserver Apache) und auch für Servercomputer (Rootserver) verwendet.

Nehemn wir an Du meinst einen Computer als Server. Bei Chatdiensten wird der sich wohl meist langweilen. Wenn man ihm mal eine schwierigere
SQL-Abfrage gibt, dann hat er schon eher was zu arbeiten. Bei Webinaren mit Filmübertragung merkt man schnell ob er etwas überfordert ist.


Grüße // Martin

Jackie1983 13. Jul 2009 11:04

Re: 3 Client 3 Server oder 1 Client 1 Server und Dienste
 
Zitat:

Zitat von mschaefer
Auch hmm: Der Begriff Server wird leider oft für Serverdienst (Webserver Apache) und auch für Servercomputer (Rootserver) verwendet.

Ok stimmt, aber ich meine eine TServerSocket Anwendung.

Die Serveranwendung bekommt auch SQL Strings oder abfragen, diesen Abfragen werden aber an einen Thread ausgelagert so das der Server nicht blockiert wird und somit keine Anfragen mehr annehmen kann.

gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz