User:Mgruchal/LoadSharding

Load sharding jest metodą load balancingu, która polega na tym, że load balancer nie tylko wie jaki request ma do przeproxowania/przebalancowania ale także wie jakie dane się w nim znajdują.

Załóżmy, że mamy sobie 10000 shardów DB, 10000 maszyn typu worker i przed nimi load balancer. Każdy worker "gada" z każdą bazą... młyn.

Znane metody loadbalancingu tego nie ogarniają... i tu pojawia się load sharding, jako połączenie loadbalancingu oraz shardowania.

Load balancer tak kieruje ruchem, żeby requesty trafiające do workera numer 2 (na przykład) wymagały od tego workera "łączenia" się tylko z shardem 2, czyli load balancer do rozkładania ruchu na workery używa takiej samej funkcji jak worker przy odnajdywaniu sharda.

W ten sposób minimalizujemy liczbę połączeń (jeden worker "gada" z jednym shardem). Oczywiście worker 2 i shard 2 to umowne nazwy "grup" (bo nie chcemy miec tu SPOF).

Oczywiście zostaje nam pula workerów, która musi czasem wykonać cross-shard queries...