[PHP] Muss hier etwas beachtet werden? (Mehre Server)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von xonic, 11. Januar 2010 .

  1. 11. Januar 2010
    Muss hier etwas beachtet werden? (Mehre Server)

    Hallo,
    ich wollte mal fragen ob beim Entwicklen von PHP Anwendungen irgendwas beachtet werden muss, wenn diese Anwendung mit ziemlicher Sicherheit später über mehre Server verteilt laufen muss, weil ein Server allein nicht die nötige Leistung bringen kann.

    Oder ist dies nachher alles eine Sache der Technik und man muss nichts beachten?

    Danke :]
     
  2. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hi,
    also apache und PHP anwendung sollte auf dem ersten Server normal lauffähig sein.
    Ich denke du willst wie bei uns, dein Datenbank auf dem Zweiten Server installieren.

    Was du beachten muss ist:
    - PHP Datenbank eistellung "Ip adresse von zweiten Server usw.."
    - Port freige von Server1 und Server2 Damit abfrgaen gehen
    - Absicherung der Server von unerlaubten Zugriff von außen

    Da gibt es schon paar Punkte, da kann ich dir ein paar Tipps geben.
    Aber PHP ansich solltest du nur Datenbank einstellung beachten,
    nicht localhost sonder SERVER2IP.
     
  3. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hallo,
    gibt es keine Möglichkeit, dass man einfach Server dazukauft und diese im Gesamtbild einen Server darstellen oder ist es nur möglich PHP Skript auf Server 1 laufen zu lassen und Datenbank auf Server 2...?

    Wäre vielleicht bei 2 Servern die einfachste Lösung aber mich würde interessieren wenn das nachher beispielsweise 8 Server sind und die Seite von unterschiedlichen Servern ausgeliefert wird usw.
     
  4. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    also du kannst nicht server zusammenfügen.
    Und es kommt drauf an, worum es sich genau handelt. Wenn die Daten nicht immer gleich sein müssen, kann man ja auch mehrere Datenbanken nehmen und die Scripte auf jedem Server einzeln laufen zu lassen, und dann nachts die Datenbanken abzugleichen...
    Nur gibt es sehr wenige Einsatzgebiete, wo das so gemacht werden kann. Also du kannst auf mehreren Servern die Scripte laufen lassen, aber die Datenbank sollte einheitlich sein, denk ich...
     
  5. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    es kommt ganz auf dein script an was gespeichert wird und was das script ausgibt. Sicher kannst du mehrere Server (nodes) zu einem verbinden (software oder hardware-technisch, stichwort clustering) aber wenn du nicht mal weißt wie man mit php auf ne externe db zugreift wird sich das thema sowieso erledigen (zu deiner anderen frage: natürlich kann man mit php auf externe datenbanken zugreifen).

    Ich kenn momentan kein mysql-eigenes tool womit sich DBs untereinander clustern lassen (höchstens synchronisieren), müsstest also entweder dein Script entsprechend anpassen (Alle Werte beginnend mit 'A' werden in DB1 gespeichert, Werte beginnend mit 'B' in DB2, ... damit du sie entsprechend Performant wieder auslesen kannst) oder ein anderes DB-System benutzen (gibt mit Sicherheit DBMS welche sich besser clustern lassen je nach Anwendungsfall [z.b. Hadoop] )

    Problematisch könnten im PHP-Script z.b. Sessions werden.
     
  6. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hallo,
    externe DB zu kontaktieren wird nicht das Problem werden. Nur bei dem Clustering .... hmm^^ mal schauen. Ich glaub ich fang an mir damit Sorgen zu machen, wenn der Stand erreicht ist. Momentan wird der eine Server reichen. :]
     
  7. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Darf man fragen um was es sich bei deinem Projekt handelt? Damit die SQL Datenbank nicht mehr zurecht kommt benötigt es schon einiges an Einträgen.. Da sprechen wir nicht von 100.000 sondern eine vielzahl mehr.


    Vllt solltest du auch das ganze erstmal versuchen so performant zu schreiben wie es nur geht?
     
  8. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    @ hacker5
    Es ist etwas ähnliches wie Google Adsense nur noch in vielen Formen anders .
     
  9. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hi,

    ich würde dich dazu bewegen such dir folgendes:

    - 1-3 webserver (loadbalancing)
    - 2 Datenbankserver (synchronisiere diese)

    Und schon hast du das perfekte rezept ohne das der user einen serverwechsel die verteilung mitbekommt
     
  10. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hallo,
    das wird nachher vielleicht so funktionieren, aber am Anfang habe ich sicherlich nicht das Geld dazu, gleich damit loszulegen. Muss bei der Programmierung nach obigem "Rezept" denn sonderlich etwas beachtet werden?

    Danke
     
  11. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Ansicht nicht )

    Du solltest hald nur OOP Programmieren - da performanter

    Ansich brauchst du nichts beachten das ist im endeffekt nur server als auch DNS einstellungs sache ebenfalls das synchronisieren von mysql (serversache).
     
  12. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Das ganze ist sicherlich nicht mal innerhalb ein Paar minuten erklärt oder?
    Das Thema ist auch für mich recht interessant.
     
  13. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Kurz gesagt du hast mal einen server kannst jederzeit aufstocken und machst das ganze über lighthttpd und nem squid so hast schonmal das www load balancing.

    Das ganze kombiniert mit einigen sicherheit Xtras damit auch ddos ein wenig gebremst werden.

    Und mysql benutzt du nur eine Db baust diese aber in einer master - slave replikation ein somit wird die db gespiegelt )


    --

    Das ganze kann man auf round robin auch machen dann funkt das ganze via heartbeat von den servern ) antwortet server1 nicht springt server2 ein ..
     
  14. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Hallo, danke für die Infos.

    Standard, wobei ich nicht gedacht hätt, dass es für den Server performanter ist, wenn man das interprierte Script nicht irgendwie als Bytecode cachet
     
  15. 11. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    das kann cih so nicht unterschreiben.

    oop = mehr code (klassen, vererbungen, interfaces pipapo) = mehr opcodes = längere ausführungszeit.

    die mischung machts: wenn du keine klasse brauchst -> lass sie weg
    PHP:
    class  Foo
    {
        public function 
    __construct ()
        {
            print 
    'bar' ;
        }
    }

    new 
    Foo ();

    //oder
    print  'bar' ;
    es gibt leute (wie ich anfangs) die schmeißen alles in klassen bis auf "index.php" da wurde dann der Controller initialisiert ^^

    mittlerweile bin ich davon aber weg und mache vieles wieder im old-school style. läuft schneller und wenn man schön formatiert isses genauso übersichtlich.

    java machts vor, zuviel oop verleitet zu endlosen abstraktionen und das is gift für eine zur laufzeit interpretierte sprache.

    --

    wegen bytecode-cache: klar macht der sinn.

    such dir einen aus: List of PHP accelerators - Wikipedia, the free encyclopedia
    ich würde eaccelerator oder apc verwenden.
     
  16. 12. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    @ Murdoc sehe ich genauso. Wenn es kleinere Sachen sind und ich weiß, dass ich es nicht mehre Male brauche usw dann mach ich es auch noch prozedural. Kommt immer drauf an für welche Verwendung usw es sein soll.

    Danke soweit für eure Tipps :]
     
  17. 12. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    ich dachte erst das wär nen ironischer beitrag aber anscheinend ist das ja dein ernst ... ?!
    ... bei 4 webservern mit 4 datenbanken würde das ganze noch 13,37% schneller laufen, dann hast du auch pärchen und am ende bekommen die vllt. noch einen fileserver ...


    Netzwerk-technisch stellst du nen Loadbalancer (ne kiste die nichts anderes machen sollte) hin (idealerweise sogar noch 2 oder mehr damit du ein komplettes redundantes ausfallsicheres System hast [wenn du eh schon mehrere Webserver und Datenbanken-Server verwendest], das i-Tüpfelchen wären dann sogar noch 2 oder mehr Leitungen ins Inet und wenn du richtig PG sein willst, stellst du deine Kisten in 2 oder mehr verschiedene RZs). Hinter diese hängst du dann X-beliebige Webserver (je nachdem wie viele du benötigst - es gibt keine Pauschallösung [1-3...]).

    Das ganze sieht dann etwa so aus
    [LB] [LB]
    | |
    --------
    | | | |
    [WS] [WS] [WS] [WS]

    Für DNS müsstest du auch nichts anderes einstellen als wie wenn du nur 1 Server hättest.

    Ob OOP performanter ist kommt auf das Script an und hat auch 0 mit dem Thema zu tun.

    Und zur Synchronisation:
    Synchronisation (Replikation, Master/Slaves) hat verschiedene Vor- und Nachteile und es ist totaler it zu sagen genau das wäre das richtige für dich und dein Script.

    Wenn dein Script zum Beispiel eine hohe Schreibrate hat ist es nur bedingt zu empfehlen da die Anzahl der Schreibzugriffe nur bedingt abnimmt (1 Eintrag wird auf 2 Systemen gespeichert => 2 Zugriffe). Da wäre auch direkt der nächste Fakt, nämlich dass alle Daten redundant vorhanden sind, was sich vllt. viel besser mit Raids oder einfachen Backups realisieren ließe wenn es denn gebraucht wird.

    Sinnvolle Anwendung ist zum Beispiel bei verschiedenen Standorten um die Latenz bei Abfragen möglichst niedrig zu halten.

    Eine andere Möglichkeit zum Abspeichern und Aufrufen der Daten wäre, wie schon geschrieben, irgendeine logische Gliederung der zu speichernen Daten.

    Wieder eine andere Möglichkeit wäre, die Daten in Rohform zu speichern und später aufzubereiten (z.B. durch Aggregation).

    Bei größeren Auswertungen aus einem großen Datenbestand (Terabyte+) empfiehlt sich zB Hadoop, da sich dieses Cluster-System automatisch managed und Aufgaben sowie Datenbestände geschickt auf den Nodes verteilt inkl. Redundanz (Google, Yahoo, Facebook, ...)

    Back 2 Reality:
    Eh du an dem Punkt angekommen bist an dem deine Seite mehrere Server benötigt, hast du wahrscheinlich schon 3mal den Code komplett neu geschrieben oder das Projekt aufgegeben.

    Und falls du doch an dem Punkt ankommst an dem der SQL-Server an seine Grenzen kommt, solltest du überlegen ob es nicht einfacher und billiger wäre, geschickte Abfragen, Indizierung, Partitionierung und einem gescheitem logischen Script-Aufbau zu benutzen
     
  18. 12. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    wozu eigentlich mehrere webserver? einer reicht völlig aus.

    schau dir mal computerbase an:
    1x Webserver mit vernünftigen Script
    2x DB (Master/Slave) + Mail
    1x Fileserver
     
  19. 12. Januar 2010
    AW: Muss hier etwas beachtet werden? (Mehre Server)

    Wenn das nur Ein Projekt ist und nicht viele verschiede Projekte.
    Dann würde ich sagen Statt 8 Server usw...
    auf zwei oder drei server zurück zugreifen und versuchen mit Hardware Raid zu realisieren.
    Datenbank Server >= Raid 5
    Hardware Raid.

    Da fehlt uns Natürlich die Information wie groß? oder wie leistungsfähig die datenbank sein soll? Beschreibe mal bitte wie groß die Datenbank ist oder sein wird.
     
  20. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.