Aus Neugier wollte ich wissen, wie Wordpress.com seine Architektur skaliert, und zwar konkret:
wie sie mit Subdomains umgehen.
Ich glaube, sie haben Millionen von Subdomains.CMIIW. Wie skalieren sie ihr DNS, um damit umzugehen?
Sie unterstützen auch benutzerdefinierte Domänen.
Wie handhaben sie die Übersetzung und wie skalieren sie die Anfragen?
Beachten Sie, ich wähle dieWordPresstag, denn ich darf nichtnocherschaffenwordpress.comEtikett.
Antwort1
Dies ist wahrscheinlich nicht der richtige Ort, um diese Frage zu stellen, aber;
1) Subdomains
Ich könnte mir vorstellen, dass sie nur eine Platzhalter-Subdomäne haben. Wenn Sie das dig
Tool ausführen, erhalten Sie eine Antwort wie diese:
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> test.wordpress.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62954
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.wordpress.com. IN A
;; ANSWER SECTION:
test.wordpress.com. 14400 IN CNAME lb.wordpress.com.
lb.wordpress.com. 300 IN A 76.74.254.120
lb.wordpress.com. 300 IN A 76.74.254.123
lb.wordpress.com. 300 IN A 72.233.2.58
lb.wordpress.com. 300 IN A 72.233.69.6
lb.wordpress.com. 300 IN A 74.200.243.251
lb.wordpress.com. 300 IN A 74.200.244.59
;; Query time: 237 msec
;; SERVER: 192.168.16.103#53(192.168.16.103)
;; WHEN: Mon Nov 21 10:27:33 2011
;; MSG SIZE rcvd: 149
Das ist ganz schön viel, aber hier ist eine grundlegende Aufschlüsselung:
test.wordpress.com. 14400 IN CNAME lb.wordpress.com.
test.wordpress.com oder eine beliebige Subdomain von wordpress.com ist ein CNAME für lb.wordpress.com (ich nehme an, „lb“ steht für „Load Balancer“). lb.wordpress.com enthält einige A-Einträge, die auf ihre Server verweisen. Auf der Serverseite haben sie die Konfiguration höchstwahrscheinlich so eingestellt, dass *.wordpress.com CNAMEs für lb.wordpress.com sind. Wenn sie dann Server hinzufügen/entfernen/ändern müssen, können sie die Einstellungen für lb.wordpress.com ändern.
2) Benutzerdefinierte Domänen.
Dies ist eigentlich eher ein Anwendungsproblem, denn jede* HTTP-Anforderung sendet einen HTTP-Header, der den Host enthält. Dieser kann von der Anwendung aus abgerufen werden, in PHP können Sie diesen Wert beispielsweise mit abrufen $_SERVER['HTTP_HOST']
. Dann müssen Sie nur noch nachschauen, zu welchem „Benutzer“ ein HTTP-Host gehört, und den Inhalt zurückgeben. Um dies ein wenig besser zu verstehen, würde ich vorschlagen, dass Sie sich die Art und Weise ansehen, wieWordpress MU,Wordpress-Netzwerke(MU wurde 'eingestellt'/es wurde in den Kern des Wordpress-Standards integriert) und diePlugin „Wordpress MU Domain Mapping“arbeiten.
*Die meisten, tatsächlich können Sie sich ziemlich darauf verlassen, dass der Host:-Header gesendet wird. Jeder Client, der keine Host-Header sendet, wird wahrscheinlich auf viele andere Probleme stoßen.
Antwort2
Ich schlage vor, Sie suchen aufhttp://highscalability.com/blog/und folge ihm.
Sie haben einige Artikel zur Skalierbarkeit von WordPress.
@SAM, Sie können nie wissen, wie wordpress.com skaliert wird, wenn Sie Dig oder DNS-Brute-Force anwenden.