我正在开发一个投票应用程序,它将处理来自不同用户的平均每秒1000-2000票。换句话说,它每秒会收到1k到2k个请求,每个请求都会将DB插入到存储投票数据的表中。
我正在使用RoR 4与MySQL并计划将其推送到Heroku或AWS。
我应该注意哪些与数据库和应用程序本身相关的性能问题?
如何将每秒插入的数据量计入数据库?
修改
我在考虑不为每个请求插入数据库,而是将插入数据写入内存流。所以我会有一个预定的作业每秒运行一次,从这个内存流中读取并生成一个批量插入,避免每个插入都是原子地进行的。但我无法以一种很好的方式来实现这一点。
答案 0 :(得分:0)
虽然您当然可以在AWS中执行您需要做的事情,但是高水平的I / O可能会花费您的成本。 RDS最多可支持30,000 IOPS;如果您想自己运行数据库,也可以使用不同配置的多个EBS卷来支持高IO。
根据您计划的使用模式,我可能会考虑推入内存数据存储,例如memcached或redis,然后从那里处理请求。您还可以查看DynamoDB,它可能会起作用,具体取决于数据的结构。
您是否会持续保持这种持续吞吐量水平,还是会突然爆发?您是否必须保留每一个投票,或者您只需要汇总数据?你需要多少规模 - 即你每秒能获得20,000票? 200000?
这些类型的问题将有助于确定正确的架构。