Redis Sharding

Redis Sharding



Όταν ξεκινάτε για πρώτη φορά να χρησιμοποιείτε το Redis, είναι εύκολο να πιστέψετε ότι δεν θα χρειαστεί ποτέ να το κλιμακώσετε πέρα ​​από τις προεπιλεγμένες ρυθμίσεις. Το θέμα είναι ότι καθώς η αίτησή σας μεγαλώνει, θα χρειαστείτε τελικά περισσότερη μνήμη, CPU και χωρητικότητα διεκπεραίωσης για να υποστηρίξετε τις ανάγκες της επιχείρησής σας. Σε αυτό το άρθρο, θα σας δείξουμε πώς το σύμπλεγμα Redis κλιμακώνεται με διαμοιρασμό για να σας δώσει την επιπλέον χωρητικότητα που χρειάζεστε για την ομαλή λειτουργία της επιχείρησής σας και την ανάπτυξη στο μέλλον. Θα μάθουμε συγκεκριμένα πώς το σύμπλεγμα Redis παρέχει υψηλή απόδοση με διαμοιρασμό.

Επεκτασιμότητα

Υπάρχουν δύο κοινές προσεγγίσεις για την κλιμάκωση ενός διακομιστή: κάθετη κλίμακα και οριζόντια κλίμακα. Η κατακόρυφη κλιμάκωση ή η κλιμάκωση είναι το σημείο όπου προσθέτετε περισσότερη ισχύ και πόρους στον διακομιστή σας, όπως περισσότερες CPU, μνήμη και αποθήκευση, κάτι που είναι δαπανηρό. Από την άλλη πλευρά, η οριζόντια κλιμάκωση προσθέτει πολλούς κόμβους στην υπάρχουσα δεξαμενή πόρων σας. Αυτό ονομάζεται κλιμάκωση. Έτσι, με βάση τους περιορισμούς και τις απαιτήσεις σας, εξαρτάται από εσάς να έχετε ένα μεγαλύτερο παράδειγμα διακομιστή ή να αναπτύξετε πολλούς κόμβους διακομιστή.

Ας υποθέσουμε ότι έχετε 100 GB μνήμης RAM και πρέπει να κρατήσετε 200 GB δεδομένων. Σε αυτή την περίπτωση, έχετε δύο επιλογές:







  • Κάντε κλιμάκωση προσθέτοντας περισσότερη μνήμη RAM στο σύστημα
  • Κλιμακώστε με την προσθήκη άλλης παρουσίας διακομιστή με 100 GB μνήμης RAM

Εάν έχετε φτάσει το μέγιστο όριο της μνήμης RAM εντός της υποδομής σας, τότε η αποκλιμάκωση είναι η ιδανική προσέγγιση. Επιπλέον, η κλιμάκωση θα αυξήσει την απόδοση της βάσης δεδομένων κατά ένα τεράστιο περιθώριο.





Redis Sharding

Είναι γνωστό ότι το Redis λειτουργεί σε ένα μόνο νήμα. Έτσι, το Redis δεν είναι σε θέση να χρησιμοποιήσει πολλούς πυρήνες της CPU του διακομιστή σας για την επεξεργασία εντολών. Επομένως, η προσθήκη περισσότερων πυρήνων CPU δεν σας προσφέρει μεγάλη απόδοση ή απόδοση με το Redis. Δεν συμβαίνει με τον διαχωρισμό των δεδομένων σας σε πολλαπλές παρουσίες διακομιστή. Η προσθήκη πολλών διακομιστών και η διανομή του συνόλου δεδομένων μεταξύ αυτών επιτρέπει την παράλληλη επεξεργασία των αιτημάτων πελατών, γεγονός που αυξάνει την απόδοση. Επιπλέον, η συνολική απόδοση μπορεί να αυξηθεί σχεδόν γραμμικά.





Αυτή η προσέγγιση διαχωρισμού ή διανομής δεδομένων μεταξύ πολλών διακομιστών με γνώμονα την κλιμάκωση ονομάζεται τεμαχισμός . Καλούνται όλοι οι διακομιστές που αποθηκεύουν τμήματα δεδομένων θραύσματα .



Πώς γίνεται το Sharding — Αλγοριθμικός Sharding

Μία από τις κύριες ανησυχίες με τον διαμοιρασμό ήταν πώς να εντοπίσετε ένα δεδομένο κλειδί μεταξύ πολλών κόμβων Redis. Επειδή ένα δεδομένο κλειδί μπορεί να αποθηκευτεί σε οποιαδήποτε διαθέσιμα θραύσματα, η αναζήτηση σε όλα τα θραύσματα για την εύρεση ενός συγκεκριμένου κλειδιού δεν είναι η καλύτερη επιλογή. Επομένως, θα πρέπει να υπάρχει ένας τρόπος να αντιστοιχίσετε κάθε κλειδί σε ένα συγκεκριμένο θραύσμα και ο Redis χρησιμοποιεί μια στρατηγική Αλγοριθμικής κοινής χρήσης.

Η πιο κοινή προσέγγιση είναι ο υπολογισμός μιας τιμής κατακερματισμού χρησιμοποιώντας το όνομα και το modulo του κλειδιού Redis. Στη συνέχεια, διαιρέστε το με τα διαθέσιμα θραύσματα Redis στο σύστημα.

HASH_SLOT = CRC16(κλειδί) mod 16384

Είναι αρκετά καλή λύση αρκεί ο συνολικός αριθμός των θραυσμάτων να είναι σταθερός. Κάθε φορά που προσθέτετε μια νέα παρουσία διακομιστή Reids, η τιμή που προκύπτει για ένα δεδομένο κλειδί μπορεί να αλλάξει καθώς ο συνολικός αριθμός των θραυσμάτων έχει αυξηθεί. Θα καταλήξει να κάνει ερώτημα για το λάθος θραύσμα Redis. Ως εκ τούτου, θα πρέπει να ακολουθήσετε τη διαδικασία αναπροσαρμογής υπολογίζοντας το νέο θραύσμα για κάθε κλειδί και μεταφέροντας δεδομένα στον σωστό διακομιστή, κάτι που είναι επαχθές και όχι ασήμαντο, εάν ο συνολικός αριθμός των θραυσμάτων σας αυξάνεται από καιρό σε καιρό.

Ο Redis χρησιμοποιεί μια νέα λογική οντότητα που ονομάζεται a υποδοχή κατακερματισμού για να αποτρέψετε αυτό το πρόβλημα. Διάφορες υποδοχές κατακερματισμού είναι διαθέσιμες για ένα δεδομένο θραύσμα και μια μεμονωμένη υποδοχή κατακερματισμού μπορεί να χωρέσει πολλά κλειδιά Redis. Υπάρχουν 16384 υποδοχές κατακερματισμού σε ένα σύμπλεγμα βάσης δεδομένων Redis που παραμένει αμετάβλητο. Η διαίρεση modulo γίνεται με τον αριθμό των υποδοχών κατακερματισμού αντί για την καταμέτρηση θραυσμάτων. Παρέχει τη σωστή θέση της υποδοχής κατακερματισμού για το καθορισμένο κλειδί, ακόμη και όταν ο αριθμός των θραυσμάτων έχει αυξηθεί. Απλοποιεί τη διαδικασία αναδιαμοιρασμού μετακινώντας τις υποδοχές κατακερματισμού από το ένα θραύσμα στο νέο που διαχωρίζει τα δεδομένα σε διάφορες παρουσίες Redis σύμφωνα με την απαίτηση.

Οφέλη του Redis Sharding

Η κοινή χρήση Redis επιτρέπει πολλά οφέλη στο σύστημα βάσης δεδομένων σας με ελάχιστες αλλαγές.

Υψηλή απόδοση

Δεδομένου ότι το Redis είναι μονού νήματος, η επεξεργασία πολλαπλών αιτημάτων πελατών δεν μπορεί να διεκπεραιωθεί παράλληλα χρησιμοποιώντας πολλαπλούς πυρήνες CPU. Έτσι, η προσθήκη νέων θραυσμάτων ή παρουσιών διακομιστή εγγυάται ότι μπορείτε να εκτελέσετε λειτουργίες Redis παράλληλα. Αυξάνει τις λειτουργίες ανά δευτερόλεπτο στη βάση δεδομένων σας Redis, γεγονός που σας δίνει τελικά υψηλή απόδοση.

Μεγάλη διαθεσιμότητα

Με την προσέγγιση του διαμοιρασμού, το σύμπλεγμα Redis μπορεί να δημιουργήσει μια αρχιτεκτονική master-replica που εξασφαλίζει υψηλή διαθεσιμότητα και ανθεκτικότητα.

Διαβάστε αντίγραφα

Η κοινή χρήση σάς δίνει τη δυνατότητα να διατηρείτε ένα ακριβές αντίγραφο των δεδομένων σας και να παρέχετε λειτουργίες ανάγνωσης μέσω ξεχωριστών παρουσιών Redis, γεγονός που αυξάνει την απόδοση της εκτέλεσης του ερωτήματος ανάγνωσης.

Εκτός από αυτά τα πλεονεκτήματα, ο διαμοιρασμός μπορεί να προκαλέσει καταστάσεις διαίρεσης του εγκεφάλου όταν έχετε ζυγό αριθμό θραυσμάτων στο σύμπλεγμα Redis. Επομένως, συνιστάται να διατηρείτε έναν περιττό αριθμό θραυσμάτων στο σύμπλεγμα Redis.

συμπέρασμα

Συνοψίζοντας, η κοινή χρήση Redis κατανέμει δεδομένα σε πολλούς διακομιστές, γεγονός που επιτρέπει την κλιμάκωση και την υψηλή απόδοση για τη βάση δεδομένων σας. Όπως συζητήθηκε, το Redis χρησιμοποιεί μια αλγοριθμική στρατηγική διαμοιρασμού για να κατευθύνει τα αιτήματα πελατών στο σωστό θραύσμα. Αυτό έχει ορισμένα μειονεκτήματα όταν ο συνολικός αριθμός των θραυσμάτων αυξάνεται. Έτσι, αντί του συνολικού αριθμού θραυσμάτων, το Redis χρησιμοποιεί τον αριθμό των υποδοχών κατακερματισμού για να υπολογίσει το κατάλληλο θραύσμα. Με την εισαγωγή του διαμοιρασμού, οι βάσεις δεδομένων Redis παρέχουν υψηλή διαθεσιμότητα, υψηλή απόδοση και υψηλή απόδοση.