2016-02-15 6 views
8

Nehmen wir an, Sie machen eine Website (so etwas wie Facebook). Sie schreiben Code, stellen ihn auf Servern bereit und erhöhen die Anzahl der Server, wenn die Last steigt. Diese Server sind hinter einem Load-Balancer und Anfragen können ziemlich zufällig zu jedem Server gehen.Wie architect eine Anwendung wie Firebase?

Aber sagen wir, Sie machen etwas wie Firebase. Jetzt können Sie auf Firebase ein application erstellen, und Sie erhalten eine Sub-Domäne <app_name>.firebase.com. Der Servercode ist für alle Anwendungen immer noch der gleiche, aber Anfragen für app1.firebase.com gehen an dedizierte Server, die sich von app2.firebase.com unterscheiden. Also, von einer App laden, kann nicht beeinflussen, wie es sein sollte.


Wie ist so etwas wie Firebase entwickelt, insbesondere im Interesse der Umfang der Frage zu beschränken, wie geroutet werden Anfragen an einen bestimmten Satz von Hosts für jeden application?

+1

Sehr interessante Frage, aber leider auch unglaublich breit (und damit wahrscheinlich außerhalb des Gültigkeitsbereichs auf Stack Overflow). Wenn Sie ein bestimmtes Stück haben, an dem Sie interessiert sind (z. B. wie Sie Verbindungen zum richtigen Server herstellen würden), sollten Sie Ihre Frage wahrscheinlich bearbeiten, um den Bereich auf dieses Stück zu beschränken. –

+0

@FrankvanPuffelen Ich habe den Umfang der Frage auf Anfrage Routing reduziert. – Jatin

+0

@FrankvanPuffelen Ich habe ein Kopfgeld auf diese Frage gestartet! In Anbetracht Ihrer Arbeit können Sie hier möglicherweise eine verbindliche Antwort geben. Vielen Dank! – Jatin

Antwort

3

Im Allgemeinen ist die "App", wie Sie sie aufrufen, tatsächlich eine Subdomain oder ein virtueller Host. Dies wird über einige Technologie-Stacks erreicht.

Zuerst benötigen Sie einen DNS-Eintrag für die Subdomain. Daher muss app.somedomain.com eine IP-Adresse haben, die im Internet aufgelöst werden kann, und ein Alias-Datensatz (oder A-Datensatz) wird erstellt, der auf diese Sub-Domain verweist. Sobald dies abgeschlossen ist, konfigurieren Sie einen Webserver, in der Regel Apache oder Nginx, um die Subdomäne über einen so genannten virtuellen Host zu verwalten. Sie sollten die spezifische Dokumentation für jede Technologie konsultieren, aber für Apache-Server seine Basiskonfiguration wie folgt aussehen würde:

<VirtualHost *:80> 
    ServerName app.somedomain.com 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/app.somedomain.com/ 
</VirtualHost> 
+1

Ich glaube nicht, dass es irgendeine manuelle dateibasierte Konfiguration so im Fall von etwas wie beteiligt wäre Firebase. – Jatin

+2

Ich benutze Firebase nicht, aber so funktioniert der Rest des Internets, – Griff