有必要保留一个城市中排名前 10 位的列表,在任何给定的时刻,我们的食品服务需求都是从那里产生的。这座城市可能有数以万计的地方。如果必须在内存中创建一个近乎实时(延迟不超过 5 分钟)的数据存储,它将 - 按地区(地理哈希)计算传入的需求 - 每分钟读取数百个我们的供应商(ajax 刷新是每分钟)
我在想一个多线程同步的最大堆。这将是一个复杂的解决方案,因为树锁定本身就是一个复杂的实现。
对于可以在多线程环境中读取和更新的最佳内存(可复制主从)数据结构有什么建议吗?
我们预计每秒有 10K QPS 和 100K 更新。当我们扩展到其他城市和地区时,我们将需要每个城市实施前 10 名。
有现成的解决方案吗?
持久性不是必需的,因此没有基于 mySQL 的解决方案。如果您推荐 redis 或 mongo DB 解决方案,请注意查询不是按键指向的查询,而是 top-N 查询。
提前致谢。