apple / swift-cluster-membership

Distributed Membership Protocol implementations in Swift
https://apple.github.io/swift-cluster-membership/
Apache License 2.0
201 stars 20 forks source link

Add anti-entropy mechanism ("state sync") #37

Open ktoso opened 4 years ago

ktoso commented 4 years ago

Because in the raw SWIM protocol we have here nodes may not be able to discover each-other in a very flaky network (esp. in the UDP implementation this is problematic).

The gossips are count limited when they are spread, and as such when cluster partitions happen the split may not be recovered from (in general raw SWIM is not great at dealing with this, and we don't necessarily want to solve it at this level entirely, but we should do better than just ignoring the topic in the UDP impl). A periodic triggered "sync all members" with some random nodes is used to avoid these problems; or a high level membership protocol sitting on top of SWIM can achieve the same results.

This is more of a shell details than an instance thing though perhaps?