可扩展的Web应用架构

时间:2013-11-27 14:05:29

标签: mysql architecture amazon-web-services scalability stress-testing

我有一个用Spring框架编写的非常简单的书店web应用程序,只是为了测试它的可伸缩性。

我在一个EC2实例(t1.micro)上部署了这个书店,在Amazon RDS(t1.micro)上部署了数据库,主/从复制了一个主实例和3个从属实例(实际上读取的次数比写入多得多) 。一个t1.micro RDS实例最多可以有32个并发连接

Application deployment structure for AWS

然后我用JMeter进行压力测试,发现瓶颈在数据库中,因为你可以与t1.micro RDS实例最多有32个并发连接。

我是否应该自动扩展RDS数据库实例,因为创建新副本会修改master并且它确实需要很长时间才能使其可用?

我应该使用MySQL主/副本创建EC2实例,然后自动扩展这些实例,而不是使用RDS?

我应该对数据库进行分片而不是复制吗?

应用程序还使用com.mysql.jdbc.ReplicationDriver在主实例和从属实例之间进行负载平衡。我应该使用像HAProxy这样不同的东西吗?

1 个答案:

答案 0 :(得分:2)

你有没有考虑过缓存和分区?我们工作的Web应用程序使用了Memcache。它确实有助于解决性能问题。另一方面,如果您有具有如此多记录的表,则应考虑进行分区,在分区上访问这些表会产生显着影响。