distributed-computing - K-Bucket 在 Kademlia DHT 中到底意味着什么?
问题描述
我想确认我对 Kademlia DHT 中存储桶的理解。Kademlia 有m 个 k-buckets,其中m是以比特为单位的网络大小,k是每个桶存储的键值对的数量。例如,假设m=4
我们可以有2^4
节点,即从 0 到 15。
+========+
| NodeId |
+========+
| 0000 |
+--------+
| 0001 |
+--------+
| 0010 |
+--------+
| 0011 |
+--------+
| 0100 |
+--------+
| 0101 |
+--------+
| 0110 |
+--------+
| 0111 |
+--------+
| 1000 |
+--------+
| 1001 |
+--------+
| 1010 |
+--------+
| 1011 |
+--------+
| 1100 |
+--------+
| 1101 |
+--------+
| 1110 |
+--------+
| 1111 |
+--------+
每个节点都有0位匹配、1位匹配、2位匹配等的路由表,这就是m
桶。此外,对于每个存储桶,它将存储k
代表而不是单个 NodeId。因此,如果我们说 k=2,节点 0101 的路由表将类似于:
┌──────────────────────┐
│ 0101 │
├──────────────────────┤
| |
| +==================+ |
| | xxxx | |
| +==================+ |
| | 1001, <value> | |
| +------------------+ |
| | 1010, <value> | |
| +------------------+ |
| |
| +==================+ |
| | 0xxx | |
| +==================+ |
| | 0000, <value> | |
| +------------------+ |
| | 0111, <value> | |
| +------------------+ |
| |
| +==================+ |
| | 01xx | |
| +==================+ |
| | 0110, <value> | |
| +------------------+ |
| | 0111, <value> | |
| +------------------+ |
| . |
| . |
| . |
└──────────────────────┘
我的假设正确吗?
解决方案
推荐阅读
- python - 在多行上打印消息的最佳方式
- tabs - 如何自动缩进在 github 上看起来不错,但在编辑器中缩进可怕的代码?
- sql-server - SQL Server - 将一个查询的结果连接到第二个查询的第一个匹配结果
- r - 添加注释文本以使用 as.Date x 轴进行绘图
- tensorflow - 基本 TPU 跨分片优化器不工作
- python - 将固定宽度文件转换为 .txt,然后将 .txt 转换为 .csv
- excel - If语句内的VBA嵌套countif
- liferay - Liferay 7 中的 StorageEngineUtil 类消失了
- c# - 在 C++ 中运行 C# dll 的函数时出现模糊错误
- go - 如何将正文标题添加到 Fprintf 输出?