Skalierbarkeit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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.

  • #2
    Klar kannst du Webserver und MySQL Server trennen.

    Kommentar


    • #3
      [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]
      Gruss
      H2O

      Kommentar


      • #4
        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
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          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?

          Kommentar


          • #6
            Habe dich mal nach Brainstorming verschoben.
            ...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.
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              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.

              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.
              Zuletzt geändert von bla$ter; 15.02.2008, 12:25.

              Kommentar


              • #8
                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?

                Kommentar


                • #9
                  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.
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    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.

                    Kommentar


                    • #11
                      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?

                      Zuletzt geändert von Stonebreaker62; 15.02.2008, 16:06.

                      Kommentar


                      • #12
                        Verstehe ich das so richtig:
                        Verstehst du richtig ... der Loadbalancer kommuniziert natürlich auch mit den Servern um eine optimale Verteilung zu gewährleisten.
                        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.
                        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.
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          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.

                          Kommentar


                          • #14
                            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.
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              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.

                              Kommentar

                              Lädt...
                              X