社交网络平台的体系结构

问题描述:

我很想知道Ning,SocialGo等平台是如何设计的。不是特别关注社交网络平台,而是通常允许用户构建类似网站的平台。社交网络平台的体系结构

我的理解是,当用户注册他们得到一个子域,他们的成员可以通过它注册和访问该特定用户生成的网站。我想有一个通用的数据库结构是克隆每个用户生成一个网站。

我想知道他们如何扩大个别网站的规模。此外,如果他们引入了新功能,他们将如何将其纳入所有可用的网站?例如,需要更改数据库结构的新功能,以及如何对所有现有的网站进行更改?

是的。我想创造类似的东西。但是我想到了所有这些复杂性。如果有人在开发这种复杂的东西方面有经验,可以分享他们的知识,那很棒。

谢谢。

猜测foo和bar公司的体系结构有多么困难,但是......我的愿景是:您的操作系统的虚拟化基础安装与您的惊人的社交应用程序捆绑在一起,与其自己的数据库集一起预先配置,或链接到主/从集群。

因此,事情是每当用户来到并注册一个新的socialapp克隆;您的系统通过基于您的模板创建新的虚拟机来完成这项工作。这可能需要几秒钟才能自动配置...以及该社交网络是否需要扩展;只需克隆其他几个虚拟机并将它们连接在一起即可。 vips,高速缓存,前端和成对的主从数据库。你可以有所有的模板。

请特别注意,此虚拟机不需要是完全操作系统;你可以设法使用OpenVZ和朋友(FreeBSD Jails)等技术来构建userland。

也检出http://www.opennebula.org

这是我的简单2美分。我也在学习这一点。

+0

谢谢。这很有帮助。 – Steve 2010-11-18 07:46:49

扩展到很多用户的网站通常不使用关系数据库。无法将数据从关系数据库中快速提取出来,也不可能只有一个数据副本。

我不知道他们是如何编写他们的系统,但这里猜测他们是如何做到的。

如果你拿脸书来说,当你打开你的页面时,你会发现你的朋友写在墙上和其他人墙上的东西。

这里的要点是,当你在墙上书写时,每个人都有一堵墙,系统也会在你所有的墙上写下相同的信息。所以当你的朋友请求他的页面时,所有的信息都在一个地方,很快就会返回。

在数据库端数据库是名称/值对数据库。值部分中的内容可以是不同的版本,并可以批量更新。 (向1亿行的关系表添加一列可能会锁定表格一段时间)

+0

感谢您的回答。但不是我所期望的。在Facebook中,我们创建了账户,但在Ning和SocialGo中,我们可以创建自己的社交网络。我正在考虑这种架构。 – Steve 2010-11-15 07:54:23