我的行键的初始开始部分看起来像“yyyymmddhhmmss”,其中“ss”总是00。示例:20170603162100,对应于2017年6月6日的16:21(不要问我为什么,但时间戳必须在键的开头!)
这显然是每分钟(显然每分钟都是唯一的)数据。
这会受到区域热点的影响。区域服务器上的行键如下所示:
我的阅读模式:获取一分钟的数据(不是一小时、一天、一个月、一年)
假设我有10个区域服务器。
下面是我正在考虑的一个解决方案,它看起来像一种盐(但是是确定的,而不是随机的):
我看到了mm的半分钟,并在此基础上分配了一个salt。00分钟:前缀a到行键01分钟:前缀b到行键。。09分钟:前缀j到行键10分钟:前缀a到行键
这样,所有的“a”密钥都应该分发到第一个区域服务器,以此类推。优点可能是:所有的单分钟请求到同一个区域服务器,这对我来说是可以忍受的。就在下一分钟,所有的请求都会发送到其他区域服务器。
另外,当检索时,我不必进行并行读取,因为我实际上知道盐。
有人能解释一下我哪里错了吗?
1条答案
按热度按时间ehxuflar1#
好吧,你只有27分钟的英文字母表,也许我会建议用两个字母salt,它仍然应该适当分配(你有多少个节点?)。
或者,您可以尝试从行键中删除秒数并将其反转。