![]() |
1
1
这个问题类似于 distributed hash table 键空间分区。解决这一问题的最佳方法是创建大量虚拟节点,在这些虚拟节点之间划分密钥空间,然后以特定的方式(循环、随机、按需等)将这些虚拟节点分配给物理节点。 实现键空间分区的最简单方法是确保每个节点生成这样一个id,即:
例如,如果只有3个V节点[0,1,2],那么:
然后,所有物理节点必须以已知和常见的方式映射到虚拟机,例如1:1映射:
按需映射:
我希望你能理解这个想法。
独特的 身份证件。
基本上,这意味着我们以这样或那样的方式在节点之间划分我们的id,即每个节点得到平均值
使用上述方法,我们仍然可以
不要期待奇迹。可能还有很多其他的技巧值得尝试。
或者我们可以尝试使用另一个字段来存储客户端id。例如,如果您有一个时间字段(HH:MM.SS),我们可以使用秒来存储客户端id。 举几个例子,我想你明白了。。。 |
![]() |
2
0
让
也:
在哪里?
使用此方案和16个节点,可以表示6*10^5+10^4个订单ID。 |
![]() |
3
0
您可以将10^6个可能的ID拆分为几乎相等的块,其中每个块的起始索引等于10^6除以块数(向下舍入)乘以块索引,块大小等于10^6除以块数(向下舍入)。在您的示例中,有16个块:
这样就可以使用基本上所有可用的索引,直到舍入误差。与节点间的I/O相比,整数的除法和模运算应该相对较快。 |
![]() |
4
0
既然您选择使用数字(而不是位,在这里我们可以将整个练习压缩为32位数字),那么下面是一种对节点id进行编码的方法。也许其他人能想出更多的主意。
将数字字母表扩展到
|
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |