【问题标题】:Looking for solution to cloud data storage persistence issues寻找云数据存储持久性问题的解决方案
【发布时间】:2015-02-10 11:11:37
【问题描述】:

我正在寻找提供以下服务的云数据存储服务:

  • 数据存储一式两份(或多份)
  • 原始数据和副本之间的数据始终相同 (即同步原始->重复是即时或数据存储请求 在所有实例都成功返回之前不要返回)
  • 如果原件失败,我们应该能够使用副本作为 如果是原版

所以我的具体问题是:

  • 是否存在这样的存储解决方案?如果是这样,我们在哪里可以找到它?
  • 如果没有,是否有处理重复的最佳实践 实例中缺少原始代码中的数据?

许多云服务提供某种形式的持久性和复制,但实例之间通常存在延迟或同步时刻,这在许多情况下会导致副本不包含原始数据的所有数据。这通常是几秒钟到几分钟的数量级,但即使是这么小的时间范围也可能非常重要。我们希望完全消除这种延迟。

背景:
目前我正在为一个在线游戏开发一个匹配系统。这个系统必须非常可靠,并且必须有尽可能少的停机时间。到目前为止,我们的设置是使用任意数量的服务器,并让它们都连接到同一个存储单元,以便它们都可以使用同一个数据集。具体来说,目前我们的服务器是 Azure Webroles,我们的存储单元是 Azure Redis 缓存。但是,Redis 遇到了与上述相同的问题(延迟约 1 秒),因此我们正在寻找任何替代方案。

【问题讨论】:

    标签: cloud persistence datastore redundancy data-recovery


    【解决方案1】:

    Redis 网站上有一篇非常详尽的文章:

    Redis Persistence

    我们个人在我们的服务器上使用 RDB 和 AOF 的组合,这样做的好处是任何写入操作都会与写入磁盘的较小快照一起记录,这非常适合备份数据,缺点是需要更多存储空间需要空间,并且根据您实现 AOF 的方式,性能会受到很小的影响。有一个“everysec”选项,每秒刷新一次缓冲区,在速度和完整性之间取得了很好的平衡。

    【讨论】:

    • 感谢您的回复。我已经阅读了有关 Redis 持久性的信息。即使每隔一秒,仍然有可能在一秒钟内丢失数据。他们还有一个 fsync 设置“每个新命令”,它是“非常慢”所以我认为也不推荐。
    • 不幸的是其中之一,你想要持久性然后你依赖非常慢的磁盘 IO
    • 另外 - 您是否意识到从其中之一丢失数据的实际机会非常低?除非作业实际完成,否则不会从队列中删除。您可以设置多个服务器以实现冗余,甚至可以设置 Cluster Redis 以提供多点冗余。还有其他选项,例如 RabbitMQ 和 ActiveMQ,它们可能比 Redis 更适合您的用例,因为它们是完全设计的消息队列,而不仅仅是键值存储。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2022-10-24
    • 1970-01-01
    • 2020-02-25
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多