Open raskchanky opened 5 years ago
Another optimization that I've been thinking about is a mechanism for a new member to request a bulk update of all rumors (basically the .rst file of another member) when joining, rather than relying on the gossip mechanism to bring them up to speed.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. We value your input and contribution. Please leave a comment if this issue still affects you.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. We value your input and contribution. Please leave a comment if this issue still affects you.
Right now when a new supervisor joins a butterfly network, there's a storm of network traffic as existing supervisors share their rumors with the new member and the new member shares its newly received rumors back to everyone else.
@baumanj @christophermaier and I have had some discussions on this topic and written up thoughts in a separate document. I will quote some of that discussion here.
This particular piece has gotten somewhat better with the introduction of the
HAB_RUMOR_SHARE_LIMIT
environment variable that allows users to tune how many times a rumor will be shared with a given member.It would be terrific if we had a way of optimizing network traffic so that only the relevant bits are sent. One easy win would be to only send rumors relevant to a service group to that specific group, instead of to the network as a whole.
Additionally, optimizations are possible to reduce network traffic in general. In the Xerox paper that discusses rumor mongering, the authors explain how when they switched to an active anti-entropy mechanism, they introduced the notion of exchanging hashes to cut down on network traffic. The idea here (as it relates to butterfly) would be for each peer to generate a hash that represents the sum total of all of the rumor stores (effectively butterfly's state) and exchange that hash with peers. If two peers exchange hashes and they match, then there's no need for any rumor exchange between those peers at all. Only if the hashes differ would there be a need for a rumor exchange.
There are probably other optimizations available as well. This issue should serve as a place to have those discussions before deciding on an overall direction.