我将管理一个特定事件的事件票务系统。我想我们可能会预期客流量一般会很低,不过当售票开始时,可能会出现一些突然的交通高峰(多达1000名试图同时购票的游客)。事件之前他们的web服务器崩溃,所以我们希望避免再次发生这种情况。
我正在考虑将它托管在亚马逊上,使用一个Apache (可能有一个前端Nginx代理)+ Redis服务器来服务请求,并为后端数据库提供一个MySQL服务器。这两个服务器可能每个都使用一个微实例。票务系统可能是内置的,由Laravel构建,其信息被频繁访问(如门票销售统计、表单提交内容),存储在Redis中以便于快速访问。这是否足以应付如此庞大的预期交通量?这会对这么大的音量造成太大的打击吗?我应该对web和数据库服务器进行何种形式的优化?
发布于 2016-02-28 19:09:37
设计问题并不是SF真正的意义,但我会回答,因为我是一个亚马逊架构师。
我不认为微实例能够满足您的需要,但这取决于您的性能测试结果。编写您的软件以扩展到一个ELB后面的多个服务器,记住会话状态,并假设单个服务器在任何时候都会停止工作。性能/负载测试将告诉您需要多少服务器。您可以自动缩放以设置新实例,但这可能不够快,因此,当您期望高负载时,您应该安排或手动启动实例。如果您使用负载均衡器,您可以很容易地让微实例在大部分时间运行,然后为预期的高负载添加更大的实例,从而关闭微实例。
使用Amazon,也就是托管的MySQL,而不是运行服务器。它更容易,而且可能更快,除非您需要RDS没有提供的东西。同样,您需要加载测试实例类型。
https://serverfault.com/questions/760364
复制相似问题