This protocol describes the process when a new node is registered in the cluster, or a failover is detected, and stored entities must be migrated to a new node to keep consistency.

1. Triggering of migration
Migration should be initiated, when
  • A new node enters the ring - in this case, any data that should be stored or replicated on that node, must be submitted to it
  • A node leaves the ring (fails to respond to Ping message) - in this case, data that was stored on the node, must be replicated to a new node

2. Calculation of data to be sent

If we have N nodes, and the store count of M (see HotShot Architecture for explanation of the numbers), we the active nodes that are within distance of M to the triggering node (distance is measured in the hash ring) should examine the data.

If on the node i a given data entity has a store index of mi (0<=mi<M), and the triggering node t is within the [i-mi;i+M-mi_) interval, the data should be shipped to the node, and store indexes updated for each affected node.

3. Sending data

Data sending must be low priority and interruptable. If a storage entity is updated while waiting for migration, it can be removed from the migration list (since the new node will correctly receive store message for it).

Last edited Jun 19, 2013 at 2:30 PM by delzubu, version 4


No comments yet.