Du hast eine Frage? Stell sie der t3n-Community!

? Beispielfragen

Um selbst eine Frage online zu stellen, melde dich bitte an.

Zur Anmeldung

Kommunikation zwischen zwei PHP-Servern

10 Punkte

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

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

  • ionic: 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?

    vor über 2 Jahren

Melde dich an, um einen Kommentar zu schreiben.

0 Punkte

von 218869 (abgemeldet)  Geek  vor über 2 Jahren

Du könntest z.B. Gearman [1] verwenden, um deine Jobs auf andere Server zu verteilen.

0 Punkte

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?

0 Punkte

von sec0nd  Rookie  vor über 2 Jahren

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.

0 Punkte

von gh0zt  Newbie  vor über 2 Jahren

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.

Zur Anmeldung

Kennst Du schon unser t3n Magazin?

t3n-Newsletter
Top-Themen der Woche für Web-Pioniere
Jetzt kostenlos
anmelden
Diesen Hinweis verbergen