本文档给出一些学习建议和推荐资料。
建议先快速浏览 Go 语言官方教程 A Tour of Go。留个印象即可,之后可以边写边查相关语法。
你需要重点掌握的是 goroutine 并发编程 和 RPC 远程过程调用。
助教下发(并用以评分)的测试程序所做的事情是:在你的电脑上初始化若干个 DHT 节点,通过网络传输信息并维护结构,用以模拟在若干台分布的服务器运行效果。 你不应通过网络以外的途径通信(例如内存),你的程序应当能在真正的分布式场景下正确运行。
推荐阅读的综述 blog,对协议有个初步了解。
详细技术细节请翻阅两篇 paper:Chord 和 Kademlia (助教非常希望每位同学都阅读论文)
其他辅助参考资料:Kademlia in Go,Chord 解释,Kademlia 解释。
建议不要使用单步调试去调试整个 DHT(这是因为 DHT 依赖于时延,而单步调试会改变时延,实际运行结果与单步调试的结果不相同)。
推荐 Debug 方式:使用 logrus 库将每个节点的行为记录下来并分析。
生成的 log 文件可能非常大(几百 MB),许多文本编辑器不能正常地打开和浏览它。这里推荐使用 Klogg 软件浏览 log。
欢迎任何天马行空的想法。以下是示例:
一个好玩的 网站:嗅探 BT 网络中 IP 的资源请求。
P2P 资源分享应用:BitTorrent 及一些原理解释 blog。