diff options
author | Alex Auvolat <alex@adnab.me> | 2021-02-25 11:27:13 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2021-02-25 11:27:13 +0100 |
commit | 0522983aec2d7daccb47160bfcdf6c09c048a35e (patch) | |
tree | eb470acd7e288086aca34d0a41fa4f78f950160e /doc/Load_Balancing.md | |
parent | fdf908e8452fc57291c03eb85aa63de5c1b8093d (diff) | |
download | garage-0522983aec2d7daccb47160bfcdf6c09c048a35e.tar.gz garage-0522983aec2d7daccb47160bfcdf6c09c048a35e.zip |
precisions
Diffstat (limited to 'doc/Load_Balancing.md')
-rw-r--r-- | doc/Load_Balancing.md | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/doc/Load_Balancing.md b/doc/Load_Balancing.md index 808bb4b3..1d508fa0 100644 --- a/doc/Load_Balancing.md +++ b/doc/Load_Balancing.md @@ -8,7 +8,7 @@ I have conducted a quick study of different methods to load-balance data over di - *minimal disruption*: when adding or removing a node, as few partitions as possible should have to move around -- *order-agnostic*: the same set of nodes (associated with a datacenter name +- *order-agnostic*: the same set of nodes (each associated with a datacenter name and a capacity) should always return the same distribution of partition replicas, independently of the order in which nodes were added/removed (this is to keep the implementation simple) @@ -19,10 +19,12 @@ I have conducted a quick study of different methods to load-balance data over di This strategy can be used with any ring-like algorithm to make it aware of the *multi-datacenter* requirement: -- the ring is a list of positions, each associated with a single node in the cluster -- look up position of item on ring -- select the node for that position -- go clockwise, skipping nodes that: +In this method, the ring is a list of positions, each associated with a single node in the cluster. +Partitions contain all the keys between two consecutive items of the ring. +To find the nodes that store replicas of a given partition: + +- select the node for the position of the partition's lower bound +- go clockwise on the ring, skipping nodes that: - we halve already selected - are in a datacenter of a node we have selected, except if we already have nodes from all possible datacenters |