DHT models in golang. Use gRPC for communication.
gRPC is used for communication between nodes. Chord and Kad RPCs are defined as
two different services in protobuf file. And here's an additional service called DHT,
through which clients control DHT node and modify keys in DHT.
Chord is a DHT protocol and algorithm. Here I use SHA-1 as hashing function, and select first
16 bits of hashing result as node identifier. You may change it in node/chord.go.
To run tests,
go test ./node -v -shortFor system test (build cluster and stabilize it, usually takes longer time),
go test ./node -vTo quickly setup a cluster of 50 nodes,
go run ./rpc_clusterTo run a single node,
go run ./rpc_nodeTo test key modification in cluster (put, query and delete 2000 entries),
go run ./rpc_clientKademlia is expected to be implemented.