根据这个link,我知道当同一个密钥的并发操作请求太多时会发生热键错误。
我目前的情况:
我有一条记录,每隔5-10秒就会更新一次,我会有大约20台机器,每台机器每秒10K查询,试着读取该记录
答案 0 :(得分:5)
1-读取/更新。
2-每节点。所有事务都将转到保存该记录的主分区以进行更新的节点,并且对于读取它还将转到保存该记录的主分区的节点,除非您有一个客户端策略也从保存副本分区的节点读取
3-很难给出数字。它将导致更多客户端连接到热键所在的节点,这反过来会降低性能,具体取决于设置。
4-如果用例允许,最简单的方法是使用只读副本客户端策略来缓解主副本分区的读取。否则,创建多个键。
答案 1 :(得分:1)
根据您的问题详细信息,您是说有20台服务器,每台服务器每次查询10k次/秒?
我们将transaction-pending-limit
设置为0
以删除待处理操作的限制,并且能够在内存中的相同密钥上执行大约30k操作/秒。如果您希望拥有200k ops / sec,则可以使用具有更多节点的群集,并使用read-from-replica设置来获取吞吐量。
如果记录仅每5-10秒更改一次,那么为什么不每秒读取一次记录并将结果缓存到您的应用程序中?即使它是不同的密钥,您的应用程序中的智能缓存也将大大减少所需的操作和网络流量,并使您的系统更好地扩展。这是最好的选择。