FAQ
What kind of failures do we need to support?
You only need to handle crash failures. Once a peer fails, it will
not rejoin the system. Therefore, you do not need to store the dictionary
contents on disk.
Can an item be inserted/deleted more than once?
No. Each item will be inserted and deleted at most once.
Should virtual nodes be handled differently than physical nodes?
The only reason we ask you to implement virtual nodes it so that we
can increase the number of nodes in the system without requiring a distinct
machine for each node. You probably don't want to exploit virtual nodes
in your broadcast implementation as it can only save you a constant fraction
of messages.
Do we need to use the finger tables for anything?
You are asked to implement a dictionary on top of Chord, and you can
assume that you get all of the features of Chord (successor and predecessor
pointers, finger tables, etc.) for "free". So you may want to make use
of these features to implement an efficient broadcast mechanism. If you
can come up with a more efficient protocol that does not use these features,
that is fine, but be sure to justify any overhead introduced by your protocol.
If you are not using the finger tables for anything, you do not need to
implement them.
|