PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   BRAINSTORMING PHP/SQL/HTML/JS/CSS (https://www.php-resource.de/forum/brainstorming-php-sql-html-js-css/)
-   -   Skalierbarkeit (https://www.php-resource.de/forum/brainstorming-php-sql-html-js-css/90167-skalierbarkeit.html)

Stonebreaker62 15-02-2008 12:33

Skalierbarkeit
 
Hallo,

angenommen, ein ASP Service, der auf PHP/MySQL basiert, bekommt mehr Zuspruch als erwartet und überfordert die üblichen Server, die man bei Strato etc. mieten kann.

Ich nehme an, dass die DB dann physisch von der Applikation getrennt werden muß - also mehrere Applikationsserver und ein DB-Server eingesetzt werden müssen.

Geht so etwas überhaupt mit MySQL?

Benötigt man in einem solchen Fall einen ApplicationServer wie Tomcat? Wenn ja, kann man Tomcat auch mit PHP einsetzen oder ist das nur mit Java möglich?

Ne Menge schwierige Fragen. Aber bevor ich noch mehr in PHP Code investiere, muß ich sicher sein, dass ich nicht in eine Falle laufe.

Skrok 15-02-2008 12:59

Klar kannst du Webserver und MySQL Server trennen.

H2O 15-02-2008 12:59

[list=1][*]Vielleicht bin ich zu blöd, aber was ist "ein ASP Service, der auf PHP/MySQL basiert"? [*]Selbstverständlich kannst du MySQL-Server vom Applikationsserver trennen.[*]Meines Wissens benötigt man tomcat nur für jsp-Programme- Mit PHP hat das gar nichts zu tun[/list=1]

jahlives 15-02-2008 13:08

Hast du ein konkretes PHP-Problem oder geht's hier mehr um allgemeine Tipps bei der Umsetzung? Falls zweiteres dann müsste man diesen Thread imho nach Brainstorming moven

Stonebreaker62 15-02-2008 13:12

Ein ASP (Application Service Provider) Service ist ein Anwendungsservice, der über das Internet angeboten wird. Sorry, wenn ich da einen Terminus benutze, der nicht allgemein verständlich ist.

Jetzt zur Technikfrage. Wenn ich die DB physisch von der Applikation trenne und mehrere Anwendungsserver habe, muß es doch irgendeine Verteilfunktion geben, die die Anfragen - die auf eine Domain zukommen - auf die AnwendungsServer gleichmäßig verteilt. Ich habe also eine Domain, aber mehrere Server die dahinter stehen.

Würde mich interessieren, welche Komponenten dazu benötigt werden, um ein solches Szenario zu implementieren.

Angenommen, so etwas ist mit PHP überhaupt zu machen, welche Hosting Anbieter unterstützen das?

jahlives 15-02-2008 13:14

Habe dich mal nach Brainstorming verschoben.
Zitat:

...muß es doch irgendeine Verteilfunktion geben, die die Anfragen - die auf eine Domain zukommen - auf die AnwendungsServer gleichmäßig verteilt. Ich habe also eine Domain, aber mehrere Server die dahinter stehen.
Das würde dann wohl ein Loadbalancer übernehmen müssen.

bla$ter 15-02-2008 13:18

Da mir kein Weg oder Grund einfällt, wie und warum man eine DB statisch an eine Applikation binden kann (oder sagen wir besser, kein sinnvoller ;)), ist es selbstverständlich möglich, sowohl Web- als auch mySQL Server auf mehreren Maschinen zu verteilen. Das würde ich aus Gründen des sinnvollen Speichermanagements sowieso empfehlen.

Ich möchte allerdings mal anregen, das du im Falle solcher Engpässe mal über einen sinnvollen Caching Mechanismus nachdenken solltest. Durch geschicktes Caching kannst du deine DB Last mal gut und gerne um einen hohen zweistelligen Prozentsatz reduzieren und dem Webserver erhebliches an Rechenzeit sparen.

Du kannst auch PHP über Tomcat laufen lassen, allerdings erfüllt mod_php diese Aufgabe genau so gut oder besser, wenn du keine speziellen Tomcat Features brauchst.

Zitat:

Das würde dann wohl ein Loadbalancer übernehmen müssen.
So ist es, allerdings auch wirklich erst bei 2 oder mehr Webservern sinnvoll. Dann wird das ganze allerdings noch etwas komplizierter, du brauchst zum beispiel einen Mechanismus, der dafür sorgt, das auf jedem Applikationsserver immer jede Datei in der aktuellen Version vorhanden ist, du musst dir also Gedanken über Netzwerkdateisysteme machen.

Das ganze ist vom Hoster unabhängig, denn wenn du bei einem Hoster mehrere root Server mietest kannst du damit machen, was du willst.

Wenn ich mit hier allerdings deine Fragen ansehe wäre es vielleicht nicht das Schlechteste, sich einen Fachmann an Board zu holen, der sich mit diesem Thema beschäfigt.

Stonebreaker62 15-02-2008 15:35

Erstmals herzlichen Dank für Eure Tips.

Klar werde ich mir dann externe Hilfe beschaffen, wenn ich in die Problemsituation komme. Fürs erste war es für mich nur mal wichtig, dass es Möglichkeiten gibt, mit PHP/MySQL auch Produktionsumgebungen zu realisieren, die hohe Last ertragen können und auf mehreren Servern basieren.

Wäre der Loadbalancer denn ein Server, auf dem meine Domain angemeldet ist und müßte ich die Loadbalancing-Funktion selbst kodieren oder gibt es da schon fertige Software, auf die man zurückgreifen kann?

jahlives 15-02-2008 15:48

Zitat:

Wäre der Loadbalancer denn ein Server, auf dem meine Domain angemeldet ist und müßte ich die Loadbalancing-Funktion selbst kodieren oder gibt es da schon fertige Software, auf die man zurückgreifen kann?
Dafür gibt es spezielle Hardware, die sicherlich performanter ist als jede SW-Lösung.

bla$ter 15-02-2008 15:58

Zitat:

Original geschrieben von jahlives
Dafür gibt es spezielle Hardware, die sicherlich performanter ist als jede SW-Lösung.
In dem Fall brauchst du aber auch schon wieder deutlich mehr als nur ein paar gemietete Server. :D

Stonebreaker62 15-02-2008 16:33

Verstehe ich das so richtig:

1. alle Requests die in Richtung meiner Domain abgefeuert werden landen auf dem Loadbalancer.

2. der Loadbalancer hat eine Liste von IP-Adressen hinter denen sich meine Applikationsserver verbergen und gibt die Requests an diese weiter. Auf jedem dieser Server wird meine Domain eingerichtet. Auf jedem dieser Server ist ein Apache installiert. Alles ist identisch, nur die IP-Adresse nicht.

3. Datenbankzugriffe der Anwendung landen alle zentral auf einem DB-Server (Kommunikation über IP). Die Konsistenz und Sicherheit der Daten ist damit gewährleistet. Ich muß mir nur Gedanken machen, wie das bei File-Zugriffen ohne DB läuft.

4. Die Ausgaben der einzelnen Apachen gehen direkt raus ins Web.

Habe mir übrigens bei zend.com die Zend Plattform angeschaut. Das schaut sehr gut aus, weil die Plattform dafür sorgt, dass die SESSION-Daten jeweils beim richtigen Server landen und dass Server-Ausfälle aufgefangen werden.

Wenn es soweit ist, brauche ich aber sicher externe Hilfe, Gibt es hier jemanden, der als Freelancer in diesem Bereich (Aufbau und Management einer PHP/MySQL Produktionsplattform) Unterstützung anbietet?


tontechniker 15-02-2008 19:28

Zitat:

Verstehe ich das so richtig:
Verstehst du richtig ... der Loadbalancer kommuniziert natürlich auch mit den Servern um eine optimale Verteilung zu gewährleisten.
Zitat:

Ich muß mir nur Gedanken machen, wie das bei File-Zugriffen ohne DB läuft.
Am besten stellst du für Dateien und Bilder eigene Server ab.
Zitat:

Auf jedem dieser Server ist ein Apache installiert.
Bei viel Load solltest du dir Gedanken darüber machen wesentlich performantere Server wie lighttpd zu installieren.

bla$ter 15-02-2008 21:05

Zitat:

Original geschrieben von tontechniker
Verstehst du richtig ... der Loadbalancer kommuniziert natürlich auch mit den Servern um eine optimale Verteilung zu gewährleisten. Am besten stellst du für Dateien und Bilder eigene Server ab. Bei viel Load solltest du dir Gedanken darüber machen wesentlich performantere Server wie lighttpd zu installieren.
Das würde ich so nicht unterschreiben, denn gegen die Rechenzeit großer Applikationen gestellt ist die schnellere Auslieferung der Seite durch den Webserver ehr marginal, da er genau so auf die auszuliefernden Daten warten muss wie der Apache oder der Cherokee oder [setze beliebigen Webserver ein].
Bei kleinen und/oder statischen Seiten trumpft der lighttpd groß auf, dafür knickt er beim Funktionsumfang ein. Für mich verhält sich das wie bei vielem anderen auch, sei es AMD und Intel, Nvidia und ATI, oder aber Apache und Lighty.

tontechniker 17-02-2008 16:21

Zitat:

Bei kleinen und/oder statischen Seiten trumpft der lighttpd groß auf, dafür knickt er beim Funktionsumfang ein
Es gibt afaik nichts was man nicht machen kann, mal von speziellen Erweiterungen abgesehen. Zumal letztendlich auch die Auslieferungszeit eine Rolle spielt, auch wenn die Applikation länger braucht.

bla$ter 17-02-2008 16:45

Zitat:

Original geschrieben von tontechniker
Es gibt afaik nichts was man nicht machen kann, mal von speziellen Erweiterungen abgesehen. Zumal letztendlich auch die Auslieferungszeit eine Rolle spielt, auch wenn die Applikation länger braucht.
Gerade die Erweiterungen sind ja das große Problem.
mod_python oder WebDAV sind zum Beispiel noch arg buggy oder bedürfen je nach Anwendungsfall schon mal einige Frickelarbeit bis hin zur Notwendigkeit eigener Patchsets, was immer wieder unnötig Arbeitszeit und -aufwand kostet. Ich jedenfalls werde lighty erst wieder in betracht ziehen, wenn sich die Qualität der des Apachen zumindest annähert.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:08 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG