2011-12-12 40 views
3

我和我的合作伙伴正在尝试启动一个托管在云中的网站。它有相当繁重的ajax流量,后端处理金钱交易,因此我们需要在某些数据库表中使用ACID。缩小php + mysql网站的经济方式

目前,所有内容都运行在单台服务器上。一些AJAX流量被缓存在文本文件中。

问:

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

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

  3. 对于性能来说,使用更多内核和内存的更大实例可能会更便宜,但最终我需要冗余,所以想知道最好的方法这样做便宜。

感谢

+0

我应该搬到Serverfault – emaillenin

回答

1

看看this岗位。讨论可扩展性的网络上有很多演示。几件事情,我建议要记住:

  • 计划早期的数据分片[即使你不打算这样做,马上]
  • 尝试使用类似memcached的机制来限制发送到数据库的查询数量
  • 准备为来自其他域静态内容,从长远来看 - 从NGIN-X-服务器一样,后来CDN

冗余 - 取决于你的需要。是您的网站可接受的“只读”模式?如果是这样 - 请使用mysql复制+ rsync静态文件,如果发生故障转移,您的站点将以该模式运行,直到恢复主节点。如果您需要高可用性 - 那么请查看drbd replication [至少对于mysql]或者设置自动升级slave服务器以成为主节点。

你可能会发现以下有趣:

+0

谢谢。如果我运行drdb,是否写入ACID兼容?事实上,我甚至不确定云实例中的磁盘是否真的符合ACID标准。当块设备说完成写作真的完成了?每个用户都有相当大的写入空间,所以只读模式不可接受。目前,ACID和高可用性是我最关心的问题。在最糟糕的情况下,可以通过支付更多的美元和提高实例来购买性能。 thx再次 – Limbeh

+0

取决于你是多么偏执。事实上,使用虚拟化[云]你的安全性更低,存储可以骗你[[你自己的RAID控制器在物理服务器上有电池支持的缓存对你来说也是..] - 哦 - 恐怖它可以丢失你的数据..我最近失去了〜128MB的数据..因为控制器崩溃]。如果你主要关心保持数据安全 - 考虑组提交和同步复制......在不同的可用区域之间[你会得到很大的性能提升]。这是在性能/意愿与松散数据/成本以及复杂程度之间的所有权衡。 – pQd

+0

@Limbeh:DRBD有3个协议,A到B.一个确认立即写入。 C等待远程磁盘。与往常一样,无论您的所有层(文件系统,卷管理......)是否支持磁盘障碍,以及设备是否实际完成了它所说的工作,都是另一回事。请参阅http://www.drbd.org/users-guide/s-replication-protocols.html – ninjalj

0

Ano其他选项正在使用可伸缩平台,如亚马逊网络服务。您可以从一个微型实例开始,并配置负载平衡以根据需要启动更多实例。

确定平均资源需求后,您可以根据自己的需要调整图像大小。

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/

亚马逊允许你负载平衡或基于需求改变实例大小。

+0

但是AWS不具有巨大的学习曲线吗? – Pacerier