uber / ringpop-go

Scalable, fault-tolerant application-layer sharding for Go applications
http://www.uber.com
MIT License
835 stars 83 forks source link

[Feature] Identity carry over part 5 / Multi ring checksum #192

Closed thanodnl closed 7 years ago

thanodnl commented 8 years ago

This PR is part 5 for identity carry over.

In this PR a new mechanism for calculating ring checksums is added. It aims to be forward compatible by naming checksums after the algorithm used so that new algorithms can be added and old algorithms can be removed when appropriate.

At the same time the old algorithm will start its EOL and all references to that are renamed to indicate legacy. The old algorithm does not capture all aspects of the hashring and will not warn about programmer error in the hashring.

The newly added replica checksummer will walk the ring from the beginning to the end and capture all significant datapoints of a replicapoint in its checksum that should prevent two rings that are out of sync to provide the same checksum.