CS262B Reading Summary
Chord: A Scalable Peer-to-peer Lookup Service for
Internet Applications
Ion Stoica et al
Summary by Feng Zhou
3/17/04
Strong points of the paper are:
- One strong point of Chord is its simplicity, at least as long as
the
basic design is concerned. The basic algorithm is simpler than other
designs and achieves log(n) lookup distance. Every node only needs to
keep log(n) state including the finger table, a successor list and a
predecessor node. Then lookup involves following the finger table
entries to logarithmically approaches the destination. Joining involves
a lookup and updating states of neighbors.
- One key point about the robustness of Chord is that only the
successor list and the predecessor node are aggressively kept
up-to-date. Because the key space is a one-dimension space, the system
is guaranteed to find a key as long as these data structures are
correct. This minimalistic approach makes Chord robust to changes in
the network. Given the assured rebustness (at least in theory), the
finger table and other more complex data structures like the location
cache in current Chord implementation are free from ensuring absolute
correctness. Thus the whole system design is simplified.
- One interesting question about DHTs in general is how they
compare to centralize servers or clusters in real world. In terms of
scalability, DHT is the obvious winner. But in a lot of cases, we
simply do not need the scalability. Moreover, behavior of DHT-like
systems in a dynamic environment is neither accurately provable nor
well supported by existing implementations. My experience with Chord
and Tapestry implementations strongly suggest that building such a
system that always work as expected is very hard. This supports the
argument that simplicity, robustness and provable behavior may be more
important than scalability/performance for distributed
algorithms/systems. Following this line, building such a system that
simply always works may be an intersting project.