Архитектура социальных сетей - PullRequest
1 голос
/ 12 ноября 2010

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

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

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

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

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

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

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

Выезд http://www.opennebula.org также.

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

0 голосов
/ 14 ноября 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...