2

目前我在不同的服务器上运行了两个 Rails 应用程序。一个应用程序是后端抓取工具,它正在获取数据并将其保存到共享数据库(AWS RDS)。第二个应用程序是前端,它从共享数据库中获取数据并向用户显示结果。

我的问题是:

我想通过在多个 EC2 实例上运行它来扩展我的后端应用程序以加快抓取速度。

  • 我可以同时从多个 Rails 应用程序写入我的数据库而不会出现任何并发问题吗?
  • 会影响数据库写入速度吗?
  • 有没有更好的解决方案,例如扩展我的单个服务器(我个人认为它不会提高抓取性能)
4

1 回答 1

1

当然,您可以从多个服务器写入数据库。如果您要从多个线程更新相同的记录,那么您可能必须使用数据库事务,但听起来您并没有这样做。

一般来说,数据库服务器上的 CPU 核心数和服务器的磁盘速度会影响数据库可以处理多少并发插入。首先,您肯定要使用 SSD 支持的数据库实例。接下来,您希望缓慢增加写入数据库的服务器数量,同时监控 RDS 服务器上的 CPU、内存和 IOPS。您可以直接从 RDS 控制台或 CloudWatch 控制台监控这些指标。

如果 CPU 或内存开始成为瓶颈,您将需要增加服务器的大小(或横向扩展到多个数据库服务器)。如果磁盘 IO 成为瓶颈,您可以增加预置 SSD 卷的大小以获得更高的基线 IOPS(获得更多可用空间的额外好处),或直接预置 IOPS(可能很昂贵)。

于 2015-11-21T20:56:32.940 回答