使用 SHA1 密钥避免 BigTable 或 HBase 中的热点

Avoiding hotspotting in BigTable or HBase by using SHA1 keys

我正在使用 Google BigTable 根据以下限制存储事件日志数据:

显然,我想避免在读取或写入时执行额外的步骤,因此我考虑在将用户名作为密钥添加到 BigTable 之前使用 SHA1 对其进行加密。因此,BigTable 中的所有键现在将被格式化为:

cf23df2207d99a74fbe169e3eba035e633b65d94_2018_01_30_15090001

我们知道 SHA1 是正态分布的,所以假设我的所有记录将均匀分布在节点之间,同时确保所有用户名都位于一起是否安全?这实际上会阻止热点吗?我错过了这种方法中的任何边缘情况吗?

假设 User Id 分布良好(即没有一个用户每秒操作超过 10K),这种方法应该没问题。

仅供参考,Cloud Bigtable 以每秒行数衡量操作,您希望在确定节点数时考虑峰值吞吐量。每个节点每秒可支持 10,000 次简单读取或写入。我们最小的生产配置是 3 个节点,每秒最多可以支持 30,000 行(如果最大连续使用,每天可以支持 26 亿行)。