实时活动流体系结构

时间:2010-12-30 15:17:12

标签: architecture stream social-networking

我之前发布过一个类似的问题,但我想知道让活动Feed实时工作的基础技术是什么?我正在设计它在MySQL中100%数据库驱动但遇到问题是有200多个活动要流出来,并且有不同类型的流+需要支持至少500,000个并发用户才能开始。有基于地理的流,网络流,朋友流,商业流等。所有流数据都是基于我网站上的活动自我托管的。我的平台是Linux,MySQL,PHP。

面临的问题: 1)不确定如何处理这个问题。我应该在AJAX,PHP和MySQL中这样做,还是通过RSS / XML完成,还是我需要使用从文本文件中读取的旧时尚? 2)流如何实时更新 - 将活动客户端存储在cookie或会话中,服务器到客户端推送,客户端到服务器拉动等等? 3)假设我需要支持500,000个并发用户,它是否与服务器相关,我需要一个专门的服务器才能这样做? 4)如果我需要使用专门的framkeworks,那么有没有开源框架?

样本架构/实施策略的任何链接都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我不明白你的意思是什么“活动流”;我之前没有做过这样的事情,但这就是我的想法:

  • 为50K用户服务可能意味着多个服务器 - 所以你不能使用或做任何会引入服务器亲和力的事情(使用会话变量等)。
  • 您希望尽可能提高效率 - 最小化数据交换(无论是大小还是频率)。
  • 避免不必要的解析(例如:XML)或昂贵的操作;处理大字符串等。
  • 仔细记录,经常进行性能测试。您可能希望从一些概念证明开始。
  • 使用内存:读取和写入磁盘非常昂贵,因此将数据分流到内存并在那里处理;例如,在应用程序启动时,您可能会将整个数据库(以及您需要提供请求的所有表/数据)分流到内存中,因此您无需建立数据库连接对于每个请求。这并不能阻止你对数据库进行异步写回(让服务器死机,丢失内存中的数据往往会很糟糕)。
  • 调查成熟的缓存技术。
  • 通过异步你可以 - 你想要最小的瓶子跪。