sql >> Databáze >  >> NoSQL >> Redis

Konzistentní hašování jako způsob škálování zápisů

Existují dva důvody pro použití více uzlů v clusteru:

  • Sharding za účelem omezení množství dat uložených v každém uzlu
  • Duplikace pro snížení zátěže při čtení a umožnění odstranění uzlu bez ztráty dat.

Tyto dva se zásadně liší, ale můžete implementovat obojí – použijte konzistentní hash, abyste ukazovali na sadu uzlů se standardním nastavením master/slave spíše než na jeden uzel.

Pokud je cluster vaším primárním úložištěm dat, nikoli mezipamětí, budete potřebovat jinou strategii redistribuce, která zahrnuje kopírování dat.

Moje implementace je založena na tom, že si klient vybere jeden z 64k segmentů pro hash a má tabulku, která mapuje tento segment na uzel. Zpočátku se vše mapuje na uzel #1.

Když se uzel #1 příliš zvětší, jeho slave se stane hlavním uzlem #2 a tabulka se aktualizuje tak, aby mapovala polovinu klíčů uzlu #1 na uzel #2. V tomto okamžiku budou všechna čtení a zápisy fungovat s novým mapováním a vy stačí vyčistit klíče, které jsou nyní na nesprávném uzlu. V závislosti na požadavcích na výkon můžete zkontrolovat všechny klíče najednou nebo zkontrolovat náhodný výběr klíčů, jako to dělá systém s vypršením platnosti.




  1. Rozsah stránkování MongoDB

  2. Predis with laravel 5.5 Ve fondu nejsou k dispozici žádná připojení v Aggregate/RedisCluster.php:337

  3. Snížení velikosti souboru databáze MongoDB

  4. jaký je střední rozdíl mezi drahokamy Nest a redis-namespace, když používáme redis s rails/ruby