I am struggling to get a correct algorithm for a leader election algorithm in a distributed system. My assumptions are as follows:
- Messages are sent unreliably with an at-most-once sending
- Nodes are only eligible if they are available and have the most current timestamp of all available nodes within the set. Each node has a timestamp, representing the last update operation.
- Each node has a weight, each weight is unique (= the nodes are strictly ordered in terms of the weight).
- The eligible node with the highest weight should win the election.
- My system uses timeouts to detect failures.
- Each node knows the weight of each other node in the set.
I had a look especially at Bully algorithms, originally given by Garcia-Molina and a modified version. I have no problem adapting them to the unreliable message sending using ACKs. However, I struggle as I have one assumption which is quite different: I do have timestamps at each node, which are not known to every node.