Архитектура социальных сетей

Мне любопытно узнать, как спроектированы такие платформы, как Ning, SocialGo. Не особенно о платформах социальных сетей, но обычно о платформах, которые позволяют пользователям создавать подобные веб-сайты.

Насколько я понимаю, когда пользователи регистрируются, они получают поддомен, через который их участники могут зарегистрироваться и получить доступ к этому конкретному сайту, созданному пользователями. Я предполагаю, что существует общая структура базы данных, которая клонируется для каждого пользователя, который создает сайт.

Мне интересно, как они будут масштабироваться, когда отдельные сайты растут. Кроме того, если они вводят новую функцию, как они будут включать это на все доступные сайты? Например, новая функция, которая требует изменения в структуре базы данных, как это можно сделать для всех существующих сайтов?

Да уж. Я хочу создать нечто подобное. Но все эти сложности пришли мне в голову. Если кто-то имеет опыт в разработке чего-либо, этот комплекс мог бы поделиться своими знаниями, что было бы здорово.

Благодарю.

2 ответа

Решение

Довольно сложно догадаться, какова архитектура foo и bar компаний, но... мое видение состоит в том, чтобы установить виртуализированную базовую установку выбранной вами операционной системы в комплекте с вашим удивительным социальным приложением, предварительно настроенным на нем с собственной базой данных. установить или связать с главным / подчиненным кластером.

Так что все происходит, когда пользователь приходит и регистрирует новый клон socialapp; Ваша система выполняет свою работу, создавая новую виртуальную машину на основе вашего шаблона. Это может занять несколько секунд для автоматической настройки... хорошо, и если эта социальная сеть качается и нужно масштабировать; просто клонируйте несколько других виртуальных машин и свяжите их вместе. vips, кеш, внешние интерфейсы и пары баз данных master-slave. Вы можете иметь шаблоны для всех.

Обратите особое внимание, что эта виртуальная машина не обязательно должна быть полностью операционной системой; вы можете создавать пользовательские области только с такими технологиями, как OpenVZ и друзья (FreeBSD Jails).

Проверьте также http://www.opennebula.org/.

Ну это мои простые 2 цента. Я тоже учусь этому.

Сайты, которые масштабируются до очень большого числа пользователей, обычно не используют реляционные базы данных. Невозможно извлечь данные из реляционной базы данных достаточно быстро, также невозможно иметь только одну копию данных.

Я не знаю точно, как они запрограммировали свои системы, но вот предположение, как они это сделали.

Если вы возьмете, например, Facebook, когда вы открываете свою страницу, вы видите то, что написали ваши друзья, как на своих стенах, так и на стенах других людей.

Дело в том, что у всех есть стена, когда вы пишете на стене, система также записывает ту же информацию на всех стенах ваших друзей. Поэтому, когда ваш друг запрашивает свою страницу, вся информация находится в одном месте, и вы очень быстро возвращаетесь.

На стороне базы данных базы данных представляют собой базы данных пары имя / значение. То, что находится в части значения, может быть разных версий и обновляться партиями. (Добавление столбца в реляционную таблицу с 100 миллионами строк, вероятно, на некоторое время заблокирует таблицу)

Другие вопросы по тегам