Kommunikation zwischen zwei PHP-Servern
von ionic Rookie vor über 2 Jahren
Hi,
ich suche nach einer guten, alltags tauglichen Lösung für mein Problem.
Folgende Problemstellung existiert:
Ich habe eine Software welche aus diversen Gründen auf mehrere Server verteilt wird. Lastenverteilung und auch Instanzierung um nur zwei Gründe zu nennen.
Nun stehe ich vor dem Problem das ich teilweise Daten auf Server1 darstellen will, welche über ein Schnittstelle von Server2 bereitgestellt werden sollen. Ich möchte die Daten nicht nachträglich via JavaScripten einbetten, sondern idealerweise die Daten direkt via PHP vom Server erfragen und verwerten.
Das ganze sollte natürlich dann auch umgekehrt funktionieren. So das der User auf Server1 Daten eingibt, diese werden auf Server1 vorvalidiert und dann gesplittet und an die einzelnen Schnittstellen der Server2 und z.B Server3 gesendet. Dort werden die eigentlichen Validierungen durchgeführt und die Daten werden in den jeweiligen Datenbanken abgespeichert.
Habt ihr dort Vorschläge oder brauchbare Ideen/Ansätze?
Beste Grüße,
Daniel
Nachträglich bearbeitet am 27.05.11 13:47
- Tags:
- php 47
5 Antworten
TEAM
2 Punkte
von t.quensen Geek vor über 2 Jahren
Wenn du sofort eine Antwort vom anderen Server haben möchtest, wäre die einfachste Möglichkeit eine HTTP-POST-Anfrage von Server1 an Server2, z.B. über curl oder ganz simpel mit file_get_contents und als Antwort JSON oder ein serialisierten String zurückgeben.
Um das ganze abzusichern kannst du z.B. auf die (interne) IP des Servers prüfen und einen token mitschicken.
Nachträglich bearbeitet am 24.05.11 07:18
Kommentare
-
vor über 2 Jahrenionic: Das klingt gut!
Generell könnten die ausgelagerten Server eh so eingestellt werden, dass sie nur intern Antworten können. Zumindest die meisten.
Aktuell komme ich noch bei einigen Bestandteilen gut herum ohne das ich diesen Weg gehen muss, aber spätestens in ein paar Wochen muss ich wohl leider diese Splittung vornehmen.
Gibt es bekannte Probleme/Inkompatibilitäten was CURL angeht?
von tacker Geek vor über 2 Jahren
Du könntest z.B. Gearman [1] verwenden, um deine Jobs auf andere Server zu verteilen.
Links
von ionic Rookie vor über 2 Jahren
Wobei Gearman klingt fast eher wie ein Loadbalancer bzw. scheint sehr darauf optimiert zu sein oder?
Kann ich trotz der Auslagerung auf einzelne Maschinen damit auch meine Cronjobs laufen lassen?
Beispielweise füttert Server1 Server2 ständig mit Daten. Server2 bestätigt den Empfang bei jedem Job. Sobald 5 Minuten rum sind läuft z.B. ein Cronjob auf Server2 der Berechnungen durchführt und die Daten aus dieser Art temporären Tabelle, wegschreibt und verarbeitet. Oder kommt das mit Gearman in Konflikt?
Hast du schon einige Erfahrungen mit dem System gemacht? Wie sind so deine Erfahrungswerte?
von sec0nd Rookie vor ca einem Jahr
Ich würde das mit einer REST-API machen. Die ist universell auf n-Servern einzusetzen. Wenn Dein Anwendungsdesign der bestehenden Anwendung gut ist, sollte das relativ leicht in Form einer Erweiterung der bestehenden API funktionieren.
von gh0zt Newbie vor ca einem Jahr
Was du suchst wird normalerweise mit dem Begriff Middleware umschrieben. Wie aus den Vorschlägen meiner Vorredner schon ersichtlich, gibt es verschiedene Möglichkeiten. Ich habe sehr gute Erfahrungen mit XML-Rpc http://de.wikipedia.org/wiki/XML-RPC gemacht. Der Vorteil solcher Remote-Procedure-Calls ist es meiner Meinung nach das du lokal mit Proxy-Objekten arbeiten kannst die sich wie “normale” Objekte verhalten. Das ganze musst du natürlich nicht selbst implementieren sondern kannst beispielsweise die XML-RPC Client- und Serverkomponenten aus derm Zend Framework http://framework.zend.com/manual/de/zend.xmlrpc.html verwenden.
Antwort schreiben
Um eine Antwort schreiben zu können, sollest du dich zuvor anmelden.








