performance - 多平台社交应用开发架构

标签 performance architecture scalability social-networking development-environment

我正在考虑一些社交媒体应用程序,例如 Facebook 或 linkedin。我在 http://highscalability.com/ 等网站上阅读了很多文章并没有找到正确答案。

因为,现在最大的应用程序都使用他们的自定义系统。他们使用自定义文件系统或自定义数据库引擎或自定义 Web 服务器。他们不使用原来的iis、apache、mssql、mysql、windows或linux。他们使用多种编程语言来解决不同的问题。由于他们的负担,这对他们来说没关系。他们必须计算每一点或某件事。他们从一些小环境开始,遇到了问题并看到了瓶颈。因此他们找到了新的解决方案。

现在,我们可以找到一些有关他们当前系统的文章。但我们没有关于最好的开始的答案。

我需要学习“什么样的架构是正确的开始?”的答案

我对此有一些想法,但我们需要确定。

我们认为,

使用mysql作为关系数据库。还有像 mysql 上的 memcached 这样的缓存机制。以及业务层的rest api。我们考虑使用Python来编码rest api。所有系统都在合适的 Linux 发行版上运行。当所有这些环境都OK之后,我们就可以使用任何语言或系统来进行UI了。它可以是用于 Web 的 PHP 站点,也可以是用于 IOS 或 Android 的 native 应用程序。

我们需要您的建议。非常感谢。

(我是一个很好的读者,但这是我的第一个问题。我希望没有问题。)

最佳答案

去年我提出了类似的问题 compiled一些较大的社交网站使用的技巧和技术。

以下架构概念在此类网站中很流行:

可扩展性

  • 缓存(大量缓存,跨多个层)
  • 数据分片(最好按照数据局部性标准)
  • 用于经常引用数据的内存数据库
  • 高效的线路级协议(protocol)(与企业通常认为的最先进的协议(protocol)相反)
  • 异步处理

灵活性

  • 以服务为导向的架构作为基准原则
  • 解耦和分层组件
  • 异步处理

可靠性

  • 异步处理
  • 复制
  • 小区架构(独立运行的子集,例如按照地理标准)

注意:如果您启动一个新站点,您不太可能遇到这些超大型站点所面临的扩展或可靠性要求。因此,最好的建议是从小事做起,但保持灵活性。一种方法是使用一开始很简单但以后可以灵活扩展的应用程序框架,例如 Django 。

关于performance - 多平台社交应用开发架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913206/

相关文章:

java - 什么时候必须关闭数据库?

php - 当成员也是分层结构时,如何构建类结构?

ide - Mercurial 做法 : use with IDEs and scalability

Mysql 一个大数据库或多个小表

performance - 是否有可能 `inline` a `method` ?

c++ - 提高 OpenCV 中 Mat 像素访问的性能

Java:在大字典中搜索字符串的非常快速的方法

c# - 一个大存储库与许多小存储库?

c# - Java 和 Windows 之间使用的软件架构风格的建议

sql-server - 为 SQL Server 群集准备数据库