Nichts für ungut, aber ich vermute stark, dass du weit überschätzt wie viele Impressionen wirst du bedienen.
Das heißt:
PHP oder andere in der Anwendungsebene verwendet Sprachen wirklich wenig mit Skalierbarkeit zu tun haben.Da die Anwendungsebene ihren Status an die Datenbank oder ein gleichwertiges Element delegiert, ist es einfach, so viel Kapazität hinzuzufügen, wie Sie hinter dem entsprechenden Lastenausgleich benötigen. Die Wahl der Sprache beeinflusst die Effizienz des Servers und damit die Kosten, aber das ist anders als die Skalierbarkeit.
Es skaliert den Zustand/Datenspeicher, der komplizierter wird.
Für Ihre App haben Sie drei grundlegende Jobs:
- welche ad zeigen wir?
- dient das Add
- Protokollierung der Eindruck
Jedes von ihnen Gedanken erfordern und wahrscheinlich verschiedene Werkzeuge.
Die zweite, die die Zugabe dient, ist am einfachsten: Verwenden Sie eine CDN. Wenn Sie tatsächlich das von Ihnen beanspruchte Volumen bedienen, sollten Sie in der Lage sein, günstige Raten auszuhandeln.
Die Entscheidung, welche Anzeige angezeigt wird, hängt sehr stark von Ihrem Netzwerk ab. Das kann so einfach sein wie das Lesen einiger Zeilen aus einer Datenbank, die für eine bestimmte Eigenschaft für einen bestimmten Kalenderzeitraum Anzeigen-Placements bereitstellen. Oder es kann komplexe kontextbezogene Werbung wie Google sein. Wenn man davon ausgeht, dass es eher die erstere ist und die Datenbank der Platzierungen klein ist, dann ist dies die einfache Aufgabe, die Datenbanklesevorgänge zu skalieren. Sie können Replikationsbäume oder alternativ einen Caching-Layer wie memcached verwenden.
Die letzte wird letztlich am schwierigsten sein: Wie skaliert man die Schreibvorgänge? Ein gängiger Ansatz wäre, Datenbanken weiterhin zu verwenden, aber eine skalierende Skalierungsstrategie zu übernehmen. Exotischere Optionen könnten die Verwendung eines Schlüssel/Wert-Speichers sein, der Zähleranweisungen unterstützt, beispielsweise Redis, oder eine skalierbare OLAP-Datenbank wie Vertica.
Alle oben genannten Annahmen gehen davon aus, dass Sie Platz im Rechenzentrum und die Netzwerkbereitstellung sicherstellen können, die diese Belastung bewältigen können, was bei den von Ihnen gesprochenen Nummern nicht trivial ist.
Und wie wäre es mit Cloud Computing? Und werden Sie Datenbanken benutzen? – Michiel
40 billon a month ... lol –
Wenn Sie mehrere Web-/Datenbank-Server-Combos verwenden, benötigen Sie eine Echtzeit-Kommunikation/Synchronisation zwischen ihnen oder wird ein rund-robbing DNS zu cpompleely trennen Systeme (mit vielleicht ein Datenbank-Update/Replikation einmal am Tag) genügen? – VolkerK