缩放php + mysql网站的经济方式

时间:2011-12-12 08:53:14

标签: mysql ajax amazon-web-services scalability redundancy

我的合作伙伴和我正在尝试创建一个托管在云端的网站。它有非常重的ajax流量,后端处理货币交易,所以我们在一些数据库表中需要ACID。

目前一切都在单个服务器上运行。一些AJAX流量缓存在文本文件中。

问题:

  1. 扩展数据库服务器的最佳方法是什么?我想过将mysql移动到单独的实例并进行master-master复制。然而,这似乎很难,我听说即使使用InnoDB,我也可能失去ACID属性? Amazon RDS是一个很好的解决方案吗?

  2. 除了一些自定义日志文件和ajax缓存文件外,Web服务器相对无状态。扩展到多个Web服务器的好方法是什么?我想自定义日志文件可以移动到可靠的共享文件系统或数据库,但不知道如何处理多个服务器上的AJAX缓存文件一致性。 (如果网络服务器死了,我不关心丢失/ var / log / *)

  3. 对于性能而言,使用更多核心和内存的大型实例可能会更便宜,但最终我需要冗余,因此想知道最便宜的方法是什么。

  4. 感谢

2 个答案:

答案 0 :(得分:1)

查看this帖子。网上有很多关于可扩展性的演讲。我建议记住的一些事情:

  • 尽早计划数据分片[即使您不打算立即执行]
  • 尝试使用memcached等机制来限制发送到数据库的查询数量
  • 准备从其他域提供静态内容,从长期来看 - 从ngin-x-like服务器和后来的CDN

冗余 - 取决于您的需求。是否为您的网站可接受的“只读”模式?如果是这样 - 使用mysql复制+ rsync的静态文件,并且在故障转移的情况下,您的站点在该模式下工作,直到您恢复主节点。如果你需要高可用性 - 那么看看drbd复制[至少对于mysql]或者设置自动升级从属服务器成为主节点。

您可能会发现以下有趣内容:

答案 1 :(得分:0)

另一种选择是使用可扩展的平台,例如Amazon Web Services。您可以从微实例开始,并根据需要配置负载平衡以启动更多实例。

确定平均资源需求后,您可以根据需要将图片调整为更大或更小。

http://aws.amazon.com http://tuts.pinehead.tv/2011/06/26/creating-an-amazon-ec2-instance-with-linux-lamp-stack/ http://tuts.pinehead.tv/2011/09/11/how-to-use-amazon-rds-relation-database-service-to-host-mysql/

亚马逊允许您根据需求负载均衡或更改实例大小。