1

我很想知道像 Ning、SocialGo 这样的平台是如何设计的。不是特别关于社交网络平台,而是通常允许用户建立类似网站的平台。

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

我想知道当各个站点增长时它们将如何扩展。此外,如果他们引入了一项新功能,他们将如何将其整合到所有可用站点中?例如,需要更改数据库结构的新功能,如何对所有现有站点进行更改?

是的。我想创造类似的东西。但所有这些复杂性都浮现在我的脑海中。如果有人在开发这种复杂的东西方面经验丰富,可以分享他们的知识,那就太好了。

谢谢。

4

2 回答 2

3

很难猜出 foo 和 bar 公司的架构是什么,但是……我的愿景是让您选择的操作系统的虚拟化基础安装与您的惊人社交应用程序捆绑在一起,并在其上预先配置有自己的数据库设置或链接到主/从集群。

所以事情是每当用户来注册一个新的社交应用克隆时;您的系统通过基于您的模板创建一个全新的虚拟机来完成这项工作。这可能需要几秒钟的时间来自动配置......好吧,如果那个社交网络摇摆不定并且需要扩展;只需克隆其他一些虚拟机并将它们绑定在一起。vips、缓存、前端和主从数据库对。您可以为所有人提供模板。

特别注意,这个虚拟机不需要是一个完整的操作系统;您只能使用 OpenVZ 和朋友 (FreeBSD Jails) 等技术来构建用户空间。

也可以查看http://www.opennebula.org

好吧,这是我简单的 2 美分。我也在学习这个。

于 2010-11-17T15:02:13.710 回答
0

扩展到非常多用户的站点通常不使用关系数据库。不可能足够快地从关系数据库中提取数据,也不可能只有一个数据副本。

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

如果您以 facebook 为例,当您打开页面时,您会看到您的朋友在他们的墙上和其他人的墙上写的东西。

这里的重点是每个人都有一面墙,当您在墙上写字时,系统也会在您所有朋友的墙上写下相同的信息。因此,当您的朋友请求他的页面时,所有信息都在一个地方,返回速度非常快。

在数据库方面,数据库是名称/值对数据库。value 部分的内容可以是不同的版本,可以批量更新。(将一列添加到具有 1 亿行的关系表中可能会锁定该表一段时间)

于 2010-11-13T23:27:31.877 回答