社交网络平台架构
Posted
技术标签:
【中文标题】社交网络平台架构【英文标题】:Architecture of Social Networking Platforms 【发布时间】:2010-11-12 20:34:38 【问题描述】:我很想知道像 Ning、SocialGo 这样的平台是如何设计的。不是特别关于社交网络平台,而是通常允许用户建立类似网站的平台。
我的理解是,当用户注册时,他们会获得一个子域,他们的成员可以通过该子域注册并访问该特定用户生成的站点。我想有一个为每个生成站点的用户克隆的通用数据库结构。
我想知道当各个站点增长时它们将如何扩展。此外,如果他们引入了一项新功能,他们将如何将其整合到所有可用站点中?例如,一个新功能需要改变数据库结构,如何对所有现有站点进行?
是的。我想创造类似的东西。但所有这些复杂性都浮现在我的脑海中。如果有人在开发这种复杂的东西方面有经验,可以分享他们的知识,那就太好了。
谢谢。
【问题讨论】:
【参考方案1】:很难猜出 foo 和 bar 公司的架构是什么,但是...我的愿景是为您选择的操作系统提供一个虚拟化基础安装,并与您预先配置的令人惊叹的社交应用程序捆绑在一起它是自己的数据库集,或链接到主/从集群。
所以事情是每当用户来注册一个新的社交应用克隆时;您的系统通过基于您的模板创建一个全新的虚拟机来完成这项工作。这可能需要几秒钟的时间来自动配置......好吧,如果那个社交网络摇摆不定并且需要扩展;只需克隆其他一些虚拟机并将它们绑定在一起。 vips、缓存、前端和主从数据库对。您可以拥有所有人的模板。
特别注意,这个虚拟机不需要是一个完整的操作系统;您只能使用 OpenVZ 和朋友 (FreeBSD Jails) 等技术来构建用户空间。
也请查看http://www.opennebula.org。
嗯,这是我简单的 2 美分。我也在学习这个。
【讨论】:
【参考方案2】:扩展到很多用户的网站通常不使用关系数据库。不可能足够快地从关系数据库中提取数据,也不可能只有一个数据副本。
我不知道他们是如何对他们的系统进行编程的,但这里猜测一下他们是如何做到的。
如果您以 facebook 为例,当您打开页面时,您会看到您的朋友在他们的墙上和其他人的墙上写的东西。
这里的重点是每个人都有一面墙,当您在墙上写字时,系统也会在您所有朋友的墙上写下相同的信息。因此,当您的朋友请求他的页面时,所有信息都在一个地方,返回速度非常快。
在数据库方面,数据库是名称/值对数据库。 value 部分的内容可以是不同的版本,可以批量更新。 (向一亿行的关系表添加一列可能会锁定该表一段时间)
【讨论】:
感谢您的回答。但并不完全符合我的预期。在 Facebook 中,我们创建帐户,但在 Ning 和 SocialGo 中,我们可以创建自己的社交网络。我正在考虑那种架构。以上是关于社交网络平台架构的主要内容,如果未能解决你的问题,请参考以下文章
社交网络架构、C++ Clients Neo4j 数据库之间有啥关系?