Aerospike是支持持久性的 key 存储数据库。
但是我是否可以足够相信这种持久性,以完全将其用作数据库?
据我了解,它首先将数据写入内存,然后将其持久保存。
我可以保持最终的一致性,但是我不想处于某种已提交的状态,但是由于机器故障,它永远不会被写入磁盘,因此也永远无法被检索到。
我尝试查看各种用例,但对此感到很好奇。
关于保存新记录,client.put还提供什么保证。

最佳答案

Aerospike提供了用户可配置的复制因子。大多数人使用2,如果您真的很担心,则可以使用3甚至更多。相应地调整群集的大小。对于RF = 3,当3个节点已将数据写入其内存中的写块时,put返回,该写块被异步刷新到持久层。因此,这取决于您要尝试防御的节点故障模式。如果您担心整个群集立即崩溃,那么可能会有1秒钟(默认)丢失数据的情况。一秒也可以配置得更低。 Aerospike还提供了机架感知的配置,可以防止整个机架出现故障时丢失数据。认沽权始终转到不同机架中的节点。最后,Aerospike提供了跨数据中心复制-它是异步的,但确实提供了跨地理区域复制数据的选项。当然,穿越地理区域确实会有延迟。最后,如果您完全关心整个集群的关闭,则可以连接到应用程序中的两个单独的集群,并始终将更新推送到两个单独的集群。当然,如果两次写入之间应用程序失败,您现在必须担心一致性。我不知道有人要诉诸于此。

关于aerospike - 我可以将Aerospike用作持久层吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45774437/

10-13 05:55