Aerospike 热键错误
Aerospike Hot Key error
基于此link,了解到当对同一键的并发操作请求过多时,会发生热键错误。
我目前的情况:
我有一条记录,每 5-10 秒更新一次,我将有大约 20 台机器,每台机器每秒有 10K 次查询尝试读取该记录
- 问题 1:仅当存在并发更新事务时才会发生热键错误,或者对于并发读取也可能发生?
- 问题2:上面提到的transaction-pending-limitlink是集群中的每个节点还是整个集群的限制?
- 问题 3:根据我的阅读,我们不应该增加 transaction-pending-limit 因为它会影响性能,你能告诉我一些性能数据来比较吗? transaction-pending-limit 可以使用的最大值是多少?
- 问题 4:对于我的场景,除了在服务器中缓存记录之外,是否有任何不影响性能的解决方法?
1- 两者 reads/updates.
2- 每个节点。所有事务都将转到保存该记录的主分区的节点以进行更新和读取,它也将转到保存该记录的主分区的节点,除非您有一个客户端策略也从保存副本分区的节点读取.
3- 很难给出数字。它会导致更多客户端连接到热键所在的节点,这反过来会降低性能,具体取决于设置。
4- 如果用例允许,最简单的方法是使用只读副本客户端策略来减少跨主分区和副本分区的读取。否则,创建多个密钥。
根据你的问题详情,你是说你有 20 台服务器,每台服务器查找相同的记录 10k times/sec?
我们将 transaction-pending-limit
设置为 0
以取消对未决操作的限制,并且能够在内存中的同一个键上执行大约 30k operations/sec。如果你想拥有 200k ops/sec,你可以使用具有更多节点的集群并使用从副本读取设置来获得吞吐量。
如果记录只是每 5-10 秒更改一次,那么为什么不每秒读取一次记录并将结果缓存在您的应用程序中呢?即使是不同的密钥,您应用程序中的智能缓存也将大大减少所需的操作和网络流量,并让您的系统更好地扩展。这是最好的选择。
基于此link,了解到当对同一键的并发操作请求过多时,会发生热键错误。
我目前的情况:
我有一条记录,每 5-10 秒更新一次,我将有大约 20 台机器,每台机器每秒有 10K 次查询尝试读取该记录
- 问题 1:仅当存在并发更新事务时才会发生热键错误,或者对于并发读取也可能发生?
- 问题2:上面提到的transaction-pending-limitlink是集群中的每个节点还是整个集群的限制?
- 问题 3:根据我的阅读,我们不应该增加 transaction-pending-limit 因为它会影响性能,你能告诉我一些性能数据来比较吗? transaction-pending-limit 可以使用的最大值是多少?
- 问题 4:对于我的场景,除了在服务器中缓存记录之外,是否有任何不影响性能的解决方法?
1- 两者 reads/updates.
2- 每个节点。所有事务都将转到保存该记录的主分区的节点以进行更新和读取,它也将转到保存该记录的主分区的节点,除非您有一个客户端策略也从保存副本分区的节点读取.
3- 很难给出数字。它会导致更多客户端连接到热键所在的节点,这反过来会降低性能,具体取决于设置。
4- 如果用例允许,最简单的方法是使用只读副本客户端策略来减少跨主分区和副本分区的读取。否则,创建多个密钥。
根据你的问题详情,你是说你有 20 台服务器,每台服务器查找相同的记录 10k times/sec?
我们将 transaction-pending-limit
设置为 0
以取消对未决操作的限制,并且能够在内存中的同一个键上执行大约 30k operations/sec。如果你想拥有 200k ops/sec,你可以使用具有更多节点的集群并使用从副本读取设置来获得吞吐量。
如果记录只是每 5-10 秒更改一次,那么为什么不每秒读取一次记录并将结果缓存在您的应用程序中呢?即使是不同的密钥,您应用程序中的智能缓存也将大大减少所需的操作和网络流量,并让您的系统更好地扩展。这是最好的选择。