- A DHT can be viewed as a dictionary service distributed over a network: it provides access to a common shared key->value data-store, distributed over participating nodes with great performance and scalability.
- From a user perspective, a DHT essentially provides a map interface, with two main operations:
put(key, value)andget(key). Get will retrieve values stored at a certain key while put (often called announce) will store a value on the network. Note that many values can be stored under the same key. - There are many algorithms to implement DHT. For this project, you are required to implement at least Chord protocol. You are also required to implement an application of DHT or implement another protocol. Finally, you should write a report for about one page.
More info in Wiki: DHT.
- Use Go to implement a Chord DHT with basic functions.
- Use this DHT to implement an easy application, or implement another protocol.
- Learn GoLang.
- Implement Chord protocol.
- Implement an application of DHT or implement another protocol.
GitHub repository for test: DHT-2020
- 70% for the Chord Test (60 + 10).
- 60% + 10%: 60% for basic test and 10% for advance test.
- Basic test: naive test without "force quit".
- Advance test: "Force quit" will be tested. There will be some more complex tests.
- 20% for the application/second protocol.
- 10% for a short report and code review.
- Learn Go A tour of Go Go package docs Books about Go
- DHT models Chord Pastry Kademlia
- Related project framework Dixie CMU MIT