Из любопытства я хотел узнать, как Wordpress.com масштабирует свою архитектуру, а именно:
как они обрабатывают поддомены.
Я думаю, у них миллионы поддоменов.CMIIW. Как они масштабируют свои DNS, чтобы справиться с этим?
Они также поддерживают пользовательские домены.
Как они справляются с переводом и как масштабируют запросы?
обратите внимание, я выбираювордпресстэг, потому что мне не разрешеноещесоздаватьwordpress.comярлык.
решение1
Возможно, это неподходящее место для этого вопроса, но:
1) Субдомены
Я бы предположил, что у них просто поддомен wildcard. Если вы запустите dig
инструмент, вы получите ответ вроде этого;
; <<>> 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
Это немного длинновато, но вот основная суть:
test.wordpress.com. 14400 IN CNAME lb.wordpress.com.
test.wordpress.com или любой поддомен wordpress.com — это CNAME для lb.wordpress.com (я предполагаю, что 'lb' — это 'load balancer'). lb.wordpress.com содержит некоторые записи A, которые указывают на их серверы. На стороне сервера у них, скорее всего, настроена конфигурация так, что *.wordpress.com CNAME для lb.wordpress.com, а затем, когда им нужно добавить/удалить/изменить серверы, они могут изменить настройки для lb.wordpress.com.
2) Пользовательские домены.
Это больше проблема со стороны приложения, каждый* HTTP-запрос отправляет HTTP-заголовок, содержащий хост. К нему можно получить доступ из приложения, например, в PHP вы можете получить это значение с помощью $_SERVER['HTTP_HOST']
. Затем нужно просто найти, какому «пользователю» принадлежит HTTP-хост, и вернуть содержимое. Чтобы понять это немного лучше, я бы посоветовал вам взглянуть на способWordpress MU,Сети Wordpress(MU был «прекращен»/был интегрирован в ядро стандарта Wordpress) иПлагин «Wordpress MU Domain Mapping»работа.
*В большинстве случаев, на самом деле, вы можете положиться на заголовок Host:, который отправляется. Любой клиент, который не отправляет заголовки Host, скорее всего, столкнется со многими другими проблемами.
решение2
Я предлагаю вам поискать наhttp://highscalability.com/blog/и следуйте ему.
У них мало статей о масштабируемости WordPress.
@SAM, вы никогда не узнаете, насколько масштабируется wordpress.com с помощью dig или DNS-brute-forcing.