1

背景

我正在编写一个计算量相当大的导入脚本,并导致许多插入和更新数据库查询。我的意图是将数据库存储在 EBS 卷上,并使用 EC2 的命令行工具启动 c1.xlarge 实例,执行导入(写入 EBS 卷)并在完成时自毁(以节省 $)。

在实例终止时,EBS 卷(包含所有导入的数据)然后以编程方式附加并安装到包含我的网络服务器的机器上。

通过使用这种方案,webserver 机器可以继续响应 HTTP 请求,而无需:

  1. CPU 和 RAM 过载。
  2. 在导入运行时提供不完整的数据。
  3. 浪费资源(作为一种昂贵的实例类型。)

问题

这是一种合理的方法吗?本质上,管理大量数据的公司如何能够在不停机的同时保持最新状态?关于这个主题的好书或博客文章?

4

1 回答 1

0

我假设如果您有一个网络服务器并且在短时间内担心 c1.xlarge 的成本,您可以容忍略高于零的停机时间。您描述的设置听起来不错,只需意识到您关闭了 c1.xlarge 上的数据库,您的停机时间开始计时,直到数据库启动并且您的应用程序重新配置为指向数据库的本地实例。估计这将是几分钟,因此请相应地计划 - 也许使用维护页面或者如果您的应用程序可以处理缓存数据/在只读模式下,请执行此操作。

或者,如果您使用受支持的数据库,只需使用 RDS。这可能会让您以更少的工作量更接近零停机时间。您会为此付出一些代价,但多可用区故障转移是物有所值的。

不,这不是拥有大量数据的大公司会这样做的方式。他们很可能会使用复制,确保数据在几个不同的服务器上,然后对主服务器进行故障转移。这也是您使用 RDS 所获得的。

于 2013-05-09T04:45:25.747 回答