繁体   English   中英

可扩展的Web应用

[英]Scalable web application

我们正在使用PHP(Zend Framework),MySQL,运行Apache的服务器构建一个社交网站。

有一个要求,在仪表板中,应用程序将获取不同事件的数据(大约有12个事件),用户的仪表板将在该事件上更新。 我们预计用户总数不会超过50万到70万。 虽然平均有一次约20%的用户会在线(高峰期我们预计50%的用户会在线)。

所以问题是根据我们当前设计的事件数据将被放置在MySQL数据库中。 我认为即使我们使用Amazon RDS,在MySQL上同时运行几十万个查询也不是一个好主意。 所以我们正在考虑使用DynamoDB(或Redis或任何NoSQL db选项)和MySQL。

所以问题是:在MySQL和任何NoSQL数据库中拥有数据会为我们的Web应用程序提供这种可伸缩性的优势吗? 或者我们应该考虑其他解决方案?

谢谢。

您无需复制数据。 一种选择是使用亚马逊提供的ElastiCache来提供内存缓存。 这将消除您的数据库调用,并在某种意义上消除了这个瓶颈,但这可能非常昂贵。 如果您可以牺牲关联时间更新,那么您可以放慢速度,只需减慢请求或为用户本地缓存数据。 比如说,如果可能的话,在浏览器上缓存下一个N个事件并显示它们,而不是向服务器发出另一个请求。

如果必须是实时的,那么请查看ElastiCache,然后调整您需要多少处理估计流量的缩放。 重复数据是没有意义的。 将它保存在单个数据库中如果有意义保留它,IE您有一些所需的关系信息,然后还有一个变量模式系统,那么您可以使用这两个数据库,但不能将它们加载到一起。

我也会开始考虑你的架构中的一些瓶颈,并想一想你的应用程序在达到你的估计数量时能够/可以扩展的程度。

我同意@sean,没有必要复制数据库。 您是否考虑过具有自动扩展性的内容,例如Xeround 当您有吞吐量峰值并稍后缩小时,这样的解决方案可以跨多个节点自动扩展,因此您不必仅因为季节性峰值而提交更大,更广泛的实例。

此外,如果我理解正确,则此自动可伸缩性不需要更改代码。 因此,除非您需要在MySQL和NoSQL DB上复制数据,除了与可伸缩性相关的问题之外的其他原因,请使用自动扩展的单个数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM