Сен
30
В контакте: перезагрузка или техническая сторона проекта
Сентябрь 30, 2008 |
Людей, не знающих про социальную сеть “В контакте” становится все меньше. До не давних пор я и сам там был. Впрочем, удаление анкеты не мешает черпать некоторые идеи из данного проекта. Заинтересовавший сегодня вопрос - индексация данных поисковыми системами. На помощь пришел плагин SeoQuake для Мозиллы. Интересным оказалось большое количество страниц в индексе MSN. Впрочем, никаких интересных данных в индексе не нашлось. Заинтересовали только имена серверов, в виде csЧИСЛО.vkontakte.ru, где ЧИСЛО иногда было больше полутора тысяч. И тогда возник вопрос:
Сколько серверов используется для поддержания социальной сети “В контакте”?
Точных данных никто не даст, знакомых участников проекта не нашлось, потому пришлось использовать приближенные методы.
Первое предположение - все сервера имеют имена указанные выше.
Второе предположение – не все имена указанного формата могут быть прописаны в DNS, потому для каждого имени определяем IP адрес.
Третье предположение - могут быть сервера, прописанные в dns, но реально не существующие. Чтобы их исключить - пробуем пинговать каждый сервер
Четвертое предположение - несколько имен может быть завязано на один адрес, потому нужно убирать дублирующиеся адреса.
Далее стал вопрос выбора верхнего предела чисел, подставляемых в шаблон имени сервера. Методом тыка было определено что при именах с числами около двух тысяч выдается все время один адрес, что наводит на мысль что все имена по шаблону, но не имеющие привязки к физическим серверам привзываются к одному из серверов. потому в качестве верхнего предела чисел при переборе имен было взято 2000.
На этом теоретические рассуждения пока заканчиваются. Далее была практика. Была написана программа которая в цикле перебирала имена серверов, определяла его IP адрес и проверяла доступность сервера попыткой пинга. Если сервер отвечал - адрес писался в файл. Осталось в полученном файле удалить дубликаты и посчитать получившееся количество адресов. Тут на помощь пришла консоль линукса
sort iplist.txt | uniq | wc -l
В результате получилось число. 1022. Т.е. 1022 публичных IP адреса связано с живыми серверами контакта. Возможно часть серверов имеет несколько IP. Но с другой стороны - возможно часть backend-ов публичных адресов не имеет (и это кажется даже более вероятным чем несколько IP на сервер). Потому думаю можно цифру использовать как первое приближение количества серверов.
Следующий вопрос - много это или мало. Берем данные из раздела “о сайте”. 700 миллионов хитов в день. При равномерном распределении в пределах суток (чего не будет из-за того что аудитория русскоязычная и спит по большей части вся в одно время =) ), при равномерном распределении между 1022 серверами получаем около 8 страниц в секунду. С учетом объемов баз, прав доступа, динамических фрагментов страницы и пиковых нагрузок - весьма неплохо.
P.S. гугл вывел на комментарий за май 2008-го года, где человек пишет “Сейчас у них около полутора тысяч серверов”. Не знаю откуда данные у него, но цифры одного порядка с полученными в ходе эксперимента.
Можно задаваться вопросами откуда деньги на покупку и обслуживание такого парка серверов. Но это уже совсем другая история =)
Comments
3 Comments so far

Читаешь это и думаешь….
…Большой Брат следит за тобой…
Опутеть как интересно, во задвигаете. Класс!