备份持久性存储。我有什么选择?

时间:2009-02-04 02:47:00

标签: mysql performance architecture persistence uptime

我有一项接受来自提供商的回调的服务。 动机:我不想失去任何回调(当然除非我的网络无法访问)。

让我们假设不可能发生,我的mysql服务器在一段时间内无法访问, 一旦我多次重试并失败,我想回到辅助持久性存储。

我有什么选择?队列,内存缓存?

4 个答案:

答案 0 :(得分:1)

你说你正在收到“回调” - 你还没弄清楚它们是什么。协议是什么?是通过网络吗?

如果它是HTTP,那么我会说最好的方法是,如果你的应用程序无法将数据写入永久存储器,它应该返回一个错误(如果协议中存在,则“稍后再试”)来电者,谁应该稍后再试。

像回调这样的异步进程应始终能够处理下游故障并将其请求排队。

我曾与付款服务提供商合作(Paypal)。如果您无法完全处理请求,只需将错误发送回调用方。

答案 1 :(得分:0)

我推荐某种作业队列服务器。我个人使用Starling并且用它取得了很好的效果。它讲的是memcache协议,因此很容易用作持久队列。 Starling on Github

答案 2 :(得分:0)

我之前在SQLite中放了一个队列。虽然,在我的情况下,它是为了防止丢失到MySQL服务器的网络链接 - 数据是本地生成的。

答案 3 :(得分:0)

您可以拥有一个备份MySQL服务器,并将您的连接切换到该服务器,以防主要服务器发生故障。如果它只是故障转移存储,你可以在应用服务器上本地运行它。