- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 Aerospike 的新手。
我想知道在所有可能的超时情况下,如该链接所述:
https://discuss.aerospike.com/t/understanding-timeout-and-retry-policies/2852
Client can’t connect by specified timeout (timeout=). Timeout of zero means that there is no timeout set.
Client does not receive response by specified timeout (timeout=).
Server times out the transaction during it’s own processing (default of 1 second if client doesn’t specify timeout). To investigate this, confirm that the server transaction latencies are not the bottleneck.
Client times out after M iterations of retries when there was no error due to a failed node or a failed connection.
Client can’t obtain a valid node after N retries (where retries are set from your client).
Client can’t obtain a valid connection after X retries. The retry count is usually the limiting factor, not the timeout value. The reasoning is that if you can’t get a connection after R retries, you never will, so just timeout early.
在所有提到的超时场景中,在什么情况下我可以绝对确定交易的最终结果是失败的?
Aerospike 是否提供任何东西,即如果客户端没有响应则回滚事务?
在最坏的情况下,如果我不能确定最终结果,我怎么能确定交易的最终状态?
非常感谢。
编辑:我们想出了一个临时解决方案:
为该记录保留一个 [generation -> value read] 的映射(可能是后台线程不断读取记录等),然后在超时时,我们会定期检查映射(key = 预期的生成)以查看是否真正的书面值(value)实际上是放在 map 上的值(value)。如果相同则表示写入成功,否则表示写入失败。
大家觉得有必要这样做吗?还是有别的办法?
最佳答案
首先,超时并不是您应该关注的唯一错误。较新的客户有一个'inDoubt ' 与错误关联的标志将指示写入可能已应用也可能未应用。
没有一种内置的方法可以将不确定的交易解决为确定的答案,如果网络被分区,则 AP 中没有一种方法可以严格解决不确定的交易。 ' Strong Consistency 确实存在严格的方法' 模式,可以使用相同的方法来处理常见的 AP 场景,但它们会在分区下失败。
我用过的方法如下:
还要考虑到在第 5 步中读取记录并且在 txns 中找不到交易 ID 并不能确保交易“肯定失败”。如果你想保持记录不变但有一个“绝对失败”的语义,你需要观察到这一代已经超过了前一个写入的 gen-check 策略。如果没有,您可以用触摸替换步骤 6 中的操作 - 如果它成功,那么初始写入“肯定失败”,如果您遇到生成错误,您将需要检查您是否与初始交易的应用程序竞争初始写入现在可能“绝对成功”。
同样,对于“强一致性”,提及“绝对成功”和“绝对失败”是准确的陈述,但在 AP 中,这些陈述具有失败模式(尤其是在网络分区周围)。
关于database - Aerospike ACID - 如何知道超时交易的最终结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801624/
如果两个连接试图创建同一条记录,aerospike 如何确保只有其中一个能够成功执行?Aerospike 为单个记录上的操作维护一个队列。因此,如果一条记录存在,则对该记录的所有操作都可以串行执行。但
我想知道如何在 Aerospike 中表示关系?我意识到这是一个键值存储,但有没有可以给出的例子? 例如:如果系统中有用户,我想获取与该用户关联的事物记录列表。 最佳答案 几个快速的想法: 1- 让每
我想在 aerospike 中导入以下 csv 文件数据,并希望触发简单的选择查询以使用 python 作为客户端显示数据 例如 policyID,statecode,county,eq_site_l
我目前有一个包含两个节点的工作集群。以下是 /etc/aerospike/aerospike.conf 的内容 - network { service { address an
我们有一个由 8 个节点组成的 aerospike 集群。我们看到,在高峰时段,与其他节点相比,其中一个节点的平均负载明显更高。同样在 AMC 仪表板中,我们看到该节点只有 30% 的读取成功率。在关
有什么办法可以从 aql 或 CLI 的命名空间(Aerospike)中删除一个集合??? 我的集合还包含 Ldts 。 请给我建议一种从 LDT 中删除整个 Set 的方法 最佳答案 您可以使用删除
Aerospike 是一个支持持久性的 key 存储数据库。 但是我可以完全信任这种持久性以将其用作数据库吗? 据我了解,它首先将数据写入内存,然后将其持久化。 我可以忍受最终的一致性,但我不想处于提
我正在考虑将 aerospike 用于我们的一个项目。所以我目前创建了一个 3 节点集群并在其上加载了一些数据。 示例数据 ns: 串号 设置:串号 +-------------------+----
我目前正在设计一个 Aerospike Cluster,它可以处理许多关系,并且会很快变得非常大。我在 aerospike 文档中发现了许多关于使用 python 客户端检索 key 时生成的摘要的引
我们配置了多个客户端来与这个 aerospike 节点集群进行通信。现在我们已经从我们知道的所有客户端中删除了配置,仍然有一些读/写请求传入该集群,如 AMC 中所示。 我查看了/var/log/ae
我正在尝试了解如何最好地构建我的 Aerospike 架构。当我尝试使用它时,我意识到部分问题是我没有完全理解 Aerospike 处理数据的方式,这似乎与 RDBMS 和 Cassandra 不同。
众所周知,Aerospike 服务器不支持某些数据类型,例如 Float。但它们是在客户端处理的。例如,1.0.40 版的 Python 客户端使用序列化支持不受支持的数据类型。 我想知道客户端在从服
我正在尝试了解如何最好地构建我的 Aerospike 架构。当我尝试使用它时,我意识到部分问题是我没有完全理解 Aerospike 处理数据的方式,这似乎与 RDBMS 和 Cassandra 不同。
众所周知,Aerospike 服务器不支持某些数据类型,例如 Float。但它们是在客户端处理的。例如,1.0.40 版的 Python 客户端使用序列化支持不受支持的数据类型。 我想知道客户端在从服
我在一组中有数百万条记录。我想检索所有匹配相同模式的记录。 例如我可能有: id=4444?mode=mode1?fieldA=abc id=4444?mode=mode1?fieldA=azerty
我想从命名空间的集合中选择随机“n”个容器的样本。有没有办法在 Aerospike 查询语言中实现这一点? 在 Oracle 中,我们通过以下查询实现了类似的功能: SELECT * FROM sa
我正在使用 Aerospike 4.8v 并将我的数据保存在磁盘上,并且我正在向 aerospike 发出并行写入请求,如果我发出 10 个并行请求,那么它工作正常,但是当我发出 100 个并行请求时
我想在 aerospike 中查看数据,但找不到任何 GUI 工具。像aql这样的控制台应用程序令人不舒服。有这样的GUI工具吗? 最佳答案 当前答案:2021 打电话过来,想让我更改语音信箱。 ht
HBase 的协处理器是“移动计算而不是数据”的一个很好的例子。不确定 Aerospike 是否支持类似的功能? 最佳答案 Aerospike 支持用户定义函数 (UDF),这些函数是用户加载到数据库
我有一个包含两个 bin 的现有记录,我需要使用 java 客户端 API 向它添加第三个 bin val client = new AerospikeClient("localhost",3000)
我是一名优秀的程序员,十分优秀!