Redis Sharding

Redis Sharding



Quan comenceu a utilitzar Redis, és fàcil creure que mai no haureu d'escalar-lo més enllà de la configuració predeterminada. El problema és que a mesura que la vostra aplicació creixi, eventualment necessitareu més memòria, CPU i capacitat de rendiment per donar suport a les vostres necessitats empresarials. En aquest article, us mostrarem com el clúster Redis s'escala amb la fragmentació per oferir-vos la capacitat addicional que necessiteu per gestionar el vostre negoci sense problemes i créixer en el futur. Aprendrem específicament com el clúster Redis proporciona un alt rendiment amb fragmentació.

Escalabilitat

Hi ha dos enfocaments comuns per escalar un servidor: escala vertical i escala horitzontal. L'escalat o l'escalat vertical és on afegiu més potència i recursos al vostre servidor, com ara més CPU, memòria i emmagatzematge, que és costós. D'altra banda, l'escala horitzontal és afegir diversos nodes al vostre grup de recursos existent. Això s'anomena escalada. Per tant, segons les vostres limitacions i requisits, depèn de vosaltres tenir una única instància de servidor més gran o desplegar diversos nodes de servidor.

Suposem que tens 100 GB de RAM i necessites contenir 200 GB de dades. En aquest cas, teniu dues opcions:







  • Amplieu l'escala afegint més memòria RAM al sistema
  • Amplieu l'escala afegint una altra instància de servidor amb 100 GB de RAM

Si heu assolit el límit màxim de RAM dins de la vostra infraestructura, l'escalada és l'enfocament ideal. A més, la ampliació augmentarà el rendiment de la base de dades per un gran marge.





Redis Sharding

És un fet conegut que Redis funciona en un sol fil. Per tant, Redis no és capaç d'utilitzar diversos nuclis de la CPU del vostre servidor per processar ordres. Per tant, afegir més nuclis de CPU no us ofereix gaire rendiment o rendiment amb Redis. No és el cas de dividir les vostres dades entre diverses instàncies del servidor. L'addició de diversos servidors i la distribució del conjunt de dades entre aquests permeten el processament de les peticions dels clients en paral·lel, la qual cosa augmenta el rendiment. A més, el rendiment global pot augmentar de manera gairebé lineal.





S'anomena aquest enfocament de dividir o distribuir dades entre diversos servidors tenint en compte l'escala fragmentació . S'anomenen tots els servidors que emmagatzemen porcions de dades fragments .



Com es fa el fragmentació: fragmentació algorítmica

Una de les principals preocupacions amb la fragmentació era com localitzar una clau determinada entre diversos nodes de Redis. Com que una clau determinada es pot emmagatzemar en qualsevol fragment disponible, consultar tots els fragments per trobar una clau específica no és la millor opció. Per tant, hi hauria d'haver una manera de mapar cada clau a un fragment específic i Redis utilitza una estratègia de fragmentació algorítmica.

L'enfocament més comú és calcular un valor hash mitjançant el nom i el mòdul de la clau Redis. A continuació, dividiu-lo pels fragments de Redis disponibles al sistema.

HASH_SLOT = CRC16(clau) mod 16384

És una solució bastant bona sempre que el nombre total de fragments sigui constant. Sempre que afegiu una nova instància del servidor Reids, el valor resultant per a una clau determinada pot canviar ja que el nombre total de fragments ha augmentat. Acabarà consultant el fragment de Redis incorrecte. Per tant, hauríeu de seguir el procés de redistribució calculant el nou fragment per a cada clau i transferint dades al servidor correcte, cosa que és feixuga i no és una tasca trivial si el vostre recompte total de fragments augmenta de tant en tant.

Redis utilitza una nova entitat lògica anomenada a ranura hash per prevenir aquest problema. Hi ha disponibles diverses ranures hash per a un fragment determinat i una única ranura hash pot contenir diverses claus Redis. Hi ha 16384 ranures hash en un clúster de bases de dades de Redis que es manté sense canvis. La divisió de mòdul es fa amb el nombre de ranures hash en lloc del recompte de fragments. Proporciona la posició correcta de la ranura hash per a la clau especificada fins i tot quan el nombre de fragments ha augmentat. Simplifica el procés de redistribució movent les ranures hash d'un fragment al nou que divideix les dades entre les diferents instàncies de Redis segons el requisit.

Beneficis de Redis Sharding

La fragmentació de Redis ofereix diversos avantatges al vostre sistema de bases de dades amb canvis mínims.

Alt rendiment

Com que Redis té un sol fil, el processament de diverses sol·licituds de client no es pot processar en paral·lel mitjançant diversos nuclis de CPU. Per tant, afegir nous fragments o instàncies de servidor garanteix que podeu realitzar operacions de Redis en paral·lel. Augmenta les operacions per segon a la vostra base de dades Redis, que finalment us ofereix un alt rendiment.

Alta disponibilitat

Amb l'enfocament de fragmentació, el clúster Redis pot configurar una arquitectura de rèplica mestra que garanteixi una gran disponibilitat i durabilitat.

Llegeix les rèpliques

La compartició us permet conservar una còpia exacta de les vostres dades i proporcionar operacions de lectura mitjançant instàncies de Redis separades, la qual cosa augmenta el rendiment de l'execució de la vostra consulta de lectura.

A part d'aquests avantatges, la fragmentació pot provocar situacions de trencament del cervell quan teniu un nombre parell de fragments al clúster Redis. Per tant, es recomana mantenir un nombre imparell de fragments al vostre clúster Redis.

Conclusió

En resum, Redis sharding és dividir les dades entre diversos servidors, cosa que permet l'escalat i un alt rendiment de la vostra base de dades. Com s'ha comentat, Redis utilitza una estratègia de fragmentació algorítmica per apuntar les sol·licituds dels clients al fragment correcte. Això té alguns inconvenients quan augmenta el nombre total de fragments. Per tant, en lloc del nombre total de fragments, Redis utilitza el nombre de ranures hash per calcular el fragment adequat. Amb la introducció de la fragmentació, les bases de dades Redis ofereixen una alta disponibilitat, un alt rendiment i un alt rendiment.