Κοινή χρήση τεχνολογίας

7.11 Day Learning Check-in——Beginner’s Learning Redis (6)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

7.11 Ημέρες Check-in

Εισαγάγετε την περιγραφή της εικόνας εδώ

1. συναλλαγή redis

Η έννοια των συναλλαγών και των ιδιοτήτων ACID

Εισαγάγετε την περιγραφή της εικόνας εδώ
Συναλλαγές σε επίπεδο βάσης δεδομένων

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

Τέσσερα κύρια χαρακτηριστικά των συναλλαγών βάσης δεδομένων

  • A: Atomic, atomicity, εκτελεί όλες τις SQL ως ατομικές μονάδες εργασίας, είτε όλες εκτελούνται είτε καμία δεν εκτελείται.
  • Γ: Συνεπής, μετά την ολοκλήρωση της συναλλαγής, η κατάσταση όλων των δεδομένων είναι συνεπής, δηλαδή, εφόσον αφαιρεθεί το 100 από το λογαριασμό Α, το 100 θα προστεθεί στον λογαριασμό Β.
  • I: Απομόνωση, εάν πολλές συναλλαγές εκτελούνται ταυτόχρονα, οι τροποποιήσεις που γίνονται από κάθε συναλλαγή πρέπει να απομονώνονται από άλλες συναλλαγές.
  • Δ: Διάρκεια, επιμονή, δηλαδή μετά την ολοκλήρωση της συναλλαγής, οι τροποποιήσεις στα δεδομένα της βάσης δεδομένων αποθηκεύονται επίμονα.

Συναλλαγή Redis

Μια συναλλαγή Redis είναι ένα σύνολο εντολών Όλες οι εντολές σε μια συναλλαγή θα εκτελεστούν σειριακά και μια σειρά από εντολές θα εκτελεστούν με έναν εφάπαξ, διαδοχικό και αποκλειστικό τρόπο.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Τρία κύρια χαρακτηριστικά των συναλλαγών Redis

  • χωριστές εργασίες καραντίνας : Όλες οι εντολές στη συναλλαγή θα σειριοποιηθούν και θα εκτελεστούν με τη σειρά. Κατά την εκτέλεση της συναλλαγής, δεν θα διακόπτεται από αιτήματα εντολών που αποστέλλονται από άλλους πελάτες.
  • Καμία έννοια του επιπέδου απομόνωσης: Οι εντολές στην ουρά δεν θα εκτελεστούν πραγματικά μέχρι να υποβληθούν, επειδή δεν θα εκτελεστούν εντολές πριν από την υποβολή της συναλλαγής, επομένως δεν υπάρχει "ερώτημα εντός της συναλλαγής για να δείτε τις ενημερώσεις στη συναλλαγή και ερώτημα εκτός του συναλλαγή "Δεν μπορώ να δω".
  • Καμία εγγύηση ατομικότητας: Εάν μια εντολή αποτύχει να εκτελεστεί στην ίδια συναλλαγή redis, οι επόμενες εντολές θα συνεχίσουν να εκτελούνται χωρίς επαναφορά.

Τρία στάδια εκτέλεσης συναλλαγής Redis

Εισαγάγετε την περιγραφή της εικόνας εδώ

  • ανάβω:μεMULTIΞεκινήστε μια συναλλαγή.
  • Μπες στην ομάδα: Τοποθετήστε πολλαπλές εντολές σε μια συναλλαγή Αυτές οι εντολές δεν θα εκτελεστούν αμέσως μετά τη λήψη τους, αλλά θα τοποθετηθούν στην ουρά συναλλαγής σε αναμονή για εκτέλεση.
  • υλοποιώ, εφαρμόζω:Εξαρτάται απόEXECΗ εντολή ενεργοποιεί τη συναλλαγή.

Βασικές λειτουργίες των συναλλαγών Redis

Εισαγάγετε την περιγραφή της εικόνας εδώ
Multi, Exec, απόρριψη

εισαγωγή συναλλαγής απόMultiΌταν ξεκινήσει η εντολή, οι εισαγόμενες εντολές θα ωθηθούν στην ουρά προσωρινής αποθήκευσης εντολών μία προς μία και δεν θα εκτελεστούν έως ότουExec Στη συνέχεια, το Redis θα εκτελέσει τις εντολές στην προηγούμενη ουρά buffer εντολών με τη σειρά.Κατά τη διαδικασία σχηματισμού της ομάδας, μπορείς να περάσειςdiscardΈλα να παρατήσεις την ομάδα.

παράδειγμα

127.0.0.1:6379> set t1 1
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set id 12
QUEUED
127.0.0.1:6379(TX)> get id
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> EXEC
1) OK
2) "12"
3) (integer) 2
4) (integer) 3
5) "3"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

εγκατάλειψη συναλλαγής

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> set age 29
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> DISCARD
OK
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Καθισμένοι όλοι μαζί

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name z3
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> get t1
QUEUED
127.0.0.1:6379(TX)> set email
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Ειδοποίηση
Το σύνολο εντολών περιέχει λανθασμένες οδηγίες (σημειώστε ότι είναι συντακτικά σφάλματα Είναι όλα συνδεδεμένα και όλα αποτυγχάνουν).

Κάθε αδικία έχει τον ιδιοκτήτη της, κάθε χρέος έχει τον ιδιοκτήτη του

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set age 11
QUEUED
127.0.0.1:6379(TX)> incr t1
QUEUED
127.0.0.1:6379(TX)> set email [email protected]
QUEUED
127.0.0.1:6379(TX)> incr email
QUEUED
127.0.0.1:6379(TX)> get age
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) (integer) 5
3) OK
4) (error) ERR value is not an integer or out of range
5) "11"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

2. συστάδα redis

αντιγραφή master-slave

Εισαγάγετε την περιγραφή της εικόνας εδώ
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Μεταξύ των υφιστάμενων επιχειρήσεων, το 80% των εταιρειών χρησιμοποιούν ως επί το πλείστον αυτόνομες υπηρεσίες Redis Σε πραγματικά σενάρια, το Redis σε έναν μόνο κόμβο είναι επιρρεπές σε κινδύνους.

αντιμετωπίζει προβλήματα:

  • δυσλειτουργία του μηχανήματος. Αναπτύσσουμε έναν διακομιστή Redis Όταν παρουσιάζεται μια αποτυχία του μηχανήματος, πρέπει να μεταφερθούμε σε άλλο διακομιστή και να διασφαλίσουμε ότι τα δεδομένα είναι συγχρονισμένα.
  • Συμφόρηση χωρητικότητας. Όταν πρέπει να επεκτείνουμε τη μνήμη Redis, από μνήμη 16G σε 64G, σίγουρα ένα μόνο μηχάνημα δεν θα μπορεί να την ικανοποιήσει. Φυσικά, μπορείτε να αγοράσετε ένα νέο μηχάνημα 128G.

Λύση

Για να επιτύχουμε μεγαλύτερη χωρητικότητα αποθήκευσης της κατανεμημένης βάσης δεδομένων και να αντέξουμε την υψηλή ταυτόχρονη πρόσβαση, θα αποθηκεύσουμε τα δεδομένα της αρχικής κεντρικής βάσης δεδομένων σε πολλούς άλλους κόμβους δικτύου.

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

Τι είναι η αναπαραγωγή master-slave

Η αναπαραγωγή Master-slave αναφέρεται στην αντιγραφή δεδομένων από έναν διακομιστή Redis σε άλλους διακομιστές Redis. Ο πρώτος ονομάζεται κύριος κόμβος και ο δεύτερος εξαρτημένος κόμβος Η αναπαραγωγή δεδομένων είναι μονόδρομη και μπορεί να είναι μόνο από τον κύριο κόμβο στον υποτελή κόμβο.

Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο ρόλος του master-slave replication

  • Πλεονασμός δεδομένων: Η αναπαραγωγή Master-slave υλοποιεί ζεστό αντίγραφο ασφαλείας δεδομένων, η οποία είναι μια μέθοδος πλεονασμού δεδομένων εκτός από την επιμονή.
  • Ανάκτηση: Όταν παρουσιάζεται ένα πρόβλημα στον κύριο κόμβο, ο υποτελής κόμβος μπορεί να παρέχει υπηρεσίες για την επίτευξη ταχείας ανάκτησης σφαλμάτων, στην πραγματικότητα είναι ένα είδος πλεονασμού υπηρεσίας.
  • εξισορρόπηση φορτίου: Με βάση την αναπαραγωγή master-slave, με τον διαχωρισμό ανάγνωσης και εγγραφής, ο κύριος κόμβος μπορεί να παρέχει υπηρεσίες εγγραφής και οι υποτελείς κόμβοι μπορούν να παρέχουν υπηρεσίες ανάγνωσης (δηλαδή, κατά την εγγραφή δεδομένων Redis, η εφαρμογή πρέπει να συνδεθεί στον κύριο κόμβο , και κατά την ανάγνωση δεδομένων Redis, η εφαρμογή θα πρέπει να συνδεθεί με τον υποτελή κόμβο), μοιράζοντας το φόρτο διακομιστή, ειδικά σε σενάρια όπου υπάρχει λιγότερη εγγραφή και περισσότερη ανάγνωση, η κοινή χρήση του φορτίου ανάγνωσης μέσω πολλαπλών υποτελών κόμβων μπορεί να αυξήσει σημαντικά τη συγχρονικότητα του διακομιστή Redis. .
  • Ακρογωνιαίος λίθος υψηλής διαθεσιμότητας: Εκτός από τις παραπάνω λειτουργίες, η αναπαραγωγή master-slave είναι επίσης η βάση για την υλοποίηση φρουρών και συμπλεγμάτων, επομένως, η αναπαραγωγή master-slave είναι η βάση για την υψηλή διαθεσιμότητα του Redis.

Ρύθμιση περιβάλλοντος αντιγραφής Master-slave

Εισαγάγετε την περιγραφή της εικόνας εδώ
Γράψτε το αρχείο διαμόρφωσης
Δημιουργία νέου redis6379.conf

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
  • 1
  • 2
  • 3
  • 4

Δημιουργήστε νέο redis6380.conf

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
  • 1
  • 2
  • 3
  • 4

Δημιουργία νέου redis6381.conf

include /usr/local/redis-7.2.4/redis.config
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
  • 1
  • 2
  • 3
  • 4

Ξεκινήστε τρεις διακομιστές redis

./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf
  • 1
  • 2
  • 3

Προβολή διαδικασιών συστήματος

[root@localhost src]# ps -ef |grep redis
root    40737    1  0 22:05 ?     00:00:00 ./redis-server *:6379
root    40743    1  0 22:05 ?     00:00:00 ./redis-server *:6380
root    40750    1  0 22:05 ?     00:00:00 ./redis-server *:6381
root    40758  40631  0 22:05 pts/0   00:00:00 grep --color=auto redis
  • 1
  • 2
  • 3
  • 4
  • 5

Ελέγξτε την κατάσταση λειτουργίας τριών κεντρικών υπολογιστών

#打印主从复制的相关信息
./redis-cli -p 6379
./redis-cli -p 6380
./redis-cli -p 6381
127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Εξοπλισμένο με βάση δεδομένων slave αλλά όχι με κύρια βάση δεδομένων

Μορφή σύνταξης:

slaveof  <ip> <port>
  • 1

Παράδειγμα:

Εκτελέστηκε στις 6380 και 6381.

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK
  • 1
  • 2

Γράψτε στον κεντρικό υπολογιστή και διαβάστε δεδομένα στο slave

set k1 v1
  • 1

Ανάλυση της αρχής της αντιγραφής master-slave

Εισαγάγετε την περιγραφή της εικόνας εδώ
Η αναπαραγωγή Master-slave μπορεί να χωριστεί σε 3 στάδια

  • Φάση δημιουργίας σύνδεσης (δηλαδή φάση προετοιμασίας)
  • Φάση συγχρονισμού δεδομένων
  • στάδιο διάδοσης εντολών

Η διαδικασία αντιγραφής χωρίζεται χονδρικά σε 6 διαδικασίες

Εισαγάγετε την περιγραφή της εικόνας εδώ

  1. Αποθήκευση πληροφοριών κύριου κόμβου (κύριος).
    Προβολή πληροφοριών κατάστασης μετά την εκτέλεση του slaveof
info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. Ο υποτελής κόμβος (slave) διατηρεί τη λογική που σχετίζεται με την αναπαραγωγή μέσω προγραμματισμένων εργασιών που εκτελούνται κάθε δευτερόλεπτο Όταν η προγραμματισμένη εργασία ανακαλύψει ότι υπάρχει ένας νέος κύριος κόμβος, θα προσπαθήσει να δημιουργήσει μια σύνδεση δικτύου με τον κόμβο.
    Εισαγάγετε την περιγραφή της εικόνας εδώ
  2. Δημιουργήστε μια σύνδεση δικτύου μεταξύ του υποτελούς κόμβου και του κύριου κόμβου
    Ο υποτελής κόμβος θα δημιουργήσει μια υποδοχή Ο υποτελής κόμβος δημιουργεί μια υποδοχή με θύρα 51234, η οποία χρησιμοποιείται ειδικά για την αποδοχή εντολών αναπαραγωγής που αποστέλλονται από τον κύριο κόμβο.

Εισαγάγετε την περιγραφή της εικόνας εδώ
4. Στείλτε την εντολή ping

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

Εισαγάγετε την περιγραφή της εικόνας εδώ

αποτέλεσμα:

  • Εντοπίστε εάν η υποδοχή δικτύου μεταξύ master και slave είναι διαθέσιμη.
  • Εντοπίστε εάν ο κύριος κόμβος μπορεί αυτήν τη στιγμή να δέχεται εντολές
  1. ASD.
    Εάν η παράμετρος Requirepass έχει οριστεί στον κύριο κόμβο, απαιτείται επαλήθευση κωδικού πρόσβασης τερματίζεται και ο υποτελής κόμβος θα ξεκινήσει εκ νέου τη διαδικασία αναπαραγωγής.

  2. Συγχρονισμός συνόλων δεδομένων.
    Μετά την κανονική επικοινωνία της σύνδεσης αναπαραγωγής master-slave, όταν δημιουργηθεί η αναπαραγωγή για πρώτη φορά, ο κύριος κόμβος θα στείλει όλα τα δεδομένα που διατηρεί στον υποτελή κόμβο Αυτό το μέρος της λειτουργίας είναι το μεγαλύτερο βήμα.
    Εισαγάγετε την περιγραφή της εικόνας εδώ

Στρατηγική συγχρονισμού Master-Slave

Όταν το master και το slave είναι μόλις συνδεδεμένα, πραγματοποιείται πλήρης συγχρονισμός μετά την ολοκλήρωση του πλήρους συγχρονισμού, εκτελείται ο σταδιακός συγχρονισμός. Φυσικά, εάν είναι απαραίτητο, ο slave μπορεί να ξεκινήσει τον πλήρη συγχρονισμό ανά πάσα στιγμή. Η στρατηγική redis είναι ότι, ανεξάρτητα από το τι, θα επιχειρηθεί πρώτα ο σταδιακός συγχρονισμός, και εάν δεν είναι επιτυχής, η υποτελής μηχανή θα πρέπει να εκτελέσει πλήρη συγχρονισμό.

Για παράδειγμα

αποθηκεύστε μια κρυφή μνήμη

set name jjy
  • 1

Η εντολή εγγραφής είναι

$3 r n
set r n
$4 r n
name r n
$5  r n
jjy r n
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Αντισταθμίζεται100010011002100310041005100610071008
Τιμή byte$3rn$4nέναΜ

7. Η εντολή αντιγράφεται συνεχώς.
Όταν ο κύριος κόμβος συγχρονίζει τα τρέχοντα δεδομένα με τον εξαρτημένο κόμβο, η διαδικασία δημιουργίας αναπαραγωγής ολοκληρώνεται. Στη συνέχεια, ο κύριος κόμβος θα στέλνει συνεχώς εντολές εγγραφής στους υποτελείς κόμβους για να διασφαλίσει τη συνέπεια δεδομένων κύριου-υτελούς.

Παρακολούθηση φρουρού

Εισαγάγετε την περιγραφή της εικόνας εδώ
Μειονεκτήματα του Redis master-slave replication

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

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ζητήματα έκθεσης:
Μόλις ο κύριος κόμβος πέσει και η υπηρεσία εγγραφής δεν μπορεί να χρησιμοποιηθεί, πρέπει να κάνετε μη αυτόματη εναλλαγή, να επιλέξετε ξανά τον κύριο κόμβο και να ορίσετε με μη αυτόματο τρόπο τη σχέση master-slave.

Τεχνολογία μεταγωγής master-slave

Όταν ο κύριος διακομιστής σβήσει, ένας υποτελής διακομιστής πρέπει να μεταφερθεί χειροκίνητα στον κύριο διακομιστή, κάτι που απαιτεί χειροκίνητη παρέμβαση, είναι χρονοβόρο και εντατικό και θα προκαλέσει επίσης τη μη διαθεσιμότητα της υπηρεσίας για κάποιο χρονικό διάστημα.Αυτή δεν είναι μια προτεινόμενη προσέγγιση, πιο συχνά δίνουμε προτεραιότηταΛειτουργία φρουρού

Επισκόπηση Sentinel

Η λειτουργία Sentinel είναι μια ειδική λειτουργία. Η αρχή είναι ότι ο φρουρός παρακολουθεί πολλαπλές εκτελούμενες παρουσίες Redis στέλνοντας εντολές και περιμένοντας να απαντήσει ο διακομιστής Redis.

Εισαγάγετε την περιγραφή της εικόνας εδώ
Ρόλος φρουρού

  • Παρακολούθηση συμπλέγματος: Υπεύθυνος για την παρακολούθηση του εάν οι διεργασίες master και slave του redis λειτουργούν σωστά
  • Γνωστοποίηση: Εάν αποτύχει μια παρουσία επανάληψης, ο φρουρός είναι υπεύθυνος για την αποστολή μηνυμάτων ως ειδοποιήσεων συναγερμού στον διαχειριστή.
  • failover: Εάν ο κύριος κόμβος κλείσει, θα μεταφερθεί αυτόματα στον υποτελή κόμβο.
  • Κέντρο διαμόρφωσης: Εάν συμβεί failover, ειδοποιήστε τον πελάτη για τη νέα κύρια διεύθυνση

Κατασκευή περιβάλλοντος παρακολούθησης Sentinel

Εισαγάγετε την περιγραφή της εικόνας εδώ

Δημιουργήστε ένα νέο αρχείο sentinel-26379.conf

#端口
port 26379
#守护进程运行
daemonize yes
#日志文件
logfile "26379.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

παράμετρος:
Οθόνη φρουρού mymaster 192.168.92.128 6379 2 Το νόημα της διαμόρφωσης είναι: ο κόμβος φρουρός παρακολουθεί τον κύριο κόμβο 192.168.92.128:6379 Το όνομα του κύριου κόμβου είναι mymaster ο κύριος κόμβος: απαιτούνται τουλάχιστον 2 Μόνο όταν συμφωνούν δύο κόμβοι φρουρού, μπορεί να προσδιοριστεί η αποτυχία του κύριου κόμβου και να πραγματοποιηθεί failover.

Δημιουργήστε ένα νέο αρχείο sentinel-26380.conf

#端口
port 26380
#守护进程运行
daemonize yes
#日志文件
logfile "26380.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Δημιουργήστε ένα νέο αρχείο sentinel-26381.conf

#端口
port 26381
#守护进程运行
daemonize yes
#日志文件
logfile "26381.log"
sentinel monitor mymaster localhost 6379 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Εκκίνηση του κόμβου φρουρού

redis-sentinel sentinel-26379.conf
  • 1

Προβολή κατάστασης κόμβου φρουρού

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379> 
127.0.0.1:26379> 
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.66.100:6379,slaves=2,sentinels=3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Ανάλυση της αρχής λειτουργίας του Sentinel

Εισαγάγετε την περιγραφή της εικόνας εδώ
φάση παρακολούθησης
Εισαγάγετε την περιγραφή της εικόνας εδώ

Ειδοποίηση:

  • φρουρός (sentinel 1)-----&gt;Εκκινήστε πληροφορίες για τον κύριο (κύριο) και τον δούλο (slave) και λάβετε τις πλήρεις πληροφορίες.
  • φρουρός (sentinel 2)-----&gt;Εκκινήστε πληροφορίες στον κύριο (κύριο), θα γνωρίζετε τις πληροφορίες του υπάρχοντος φρουρού (sentinel 1) και θα συνδεθείτε στο slave (slave).
  • φρουρός (sentinel 2)-----&gt;Ξεκινήστε μια εγγραφή στο sentinel (sentinel 1).

Στάδιο ειδοποίησης

Ο Sentinel στέλνει συνεχώς ειδοποιήσεις στον κύριο και τον slave για συλλογή πληροφοριών.

φάση αποτυχίας

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

Αυτή τη στιγμή, ο κύριος πρέπει να αντικατασταθεί.

Πώς να ψηφίσετε

Τρόπος:

Όποιος φρουρός λάβω πρώτος την προκήρυξη εκλογών θα την ψηφίσει.

Εξάλειψη ορισμένων περιπτώσεων:

  • Όχι διαδικτυακά
  • Αργή ανταπόκριση
  • Αποσυνδέθηκε από την αρχική κύρια μονάδα για μεγάλο χρονικό διάστημα
  • αρχή της προτεραιότητας

failover

Εισαγάγετε την περιγραφή της εικόνας εδώ
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Επιδεικνύει τις δυνατότητες παρακολούθησης και αυτόματης ανακατεύθυνσης του Sentinel όταν αποτυγχάνει ο κύριος κόμβος.

Επίδειξη αποτυχίας
Χρησιμοποιήστε την εντολή kill για να σκοτώσετε τον κύριο κόμβο

ps aux |grep redis
kill -9 pid
  • 1
  • 2

Προβολή πληροφοριών κόμβου φρουρού

Εάν χρησιμοποιήσετε αμέσως την εντολή info Sentinel στον κόμβο φρουρού για να την προβάλετε.

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6381,slaves=5,sentinels=3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

Επανεκκινήστε τον κόμβο 6379

[root@localhost src]# ./redis-cli info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6381
master_link_status:down
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Τα αρχεία διαμόρφωσης θα ξαναγραφούν
Κατά τη φάση της ανακατεύθυνσης, τα αρχεία ρύθμισης παραμέτρων των κόμβων φρουρού και master-slave θα ξαναγραφούν.

include /usr/local/redis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
# Generated by CONFIG REWRITE
daemonize yes
protected-mode no
appendonly yes
slowlog-max-len 1200
slowlog-log-slower-than 1000
save 5 1
user default on nopass ~* &* +@all
dir "/usr/local/redis"
replicaof 127.0.0.1 6381
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Συμπερασματικά

  • Οι κόμβοι master-slave στο σύστημα Sentinel δεν διαφέρουν από τους συνηθισμένους κόμβους master-slave Η ανακάλυψη και η μεταφορά σφαλμάτων ελέγχονται και ολοκληρώνονται από τον Sentinel.
  • Οι κόμβοι Sentinel είναι ουσιαστικά κόμβοι redis.
  • Κάθε κόμβος φρουρού χρειάζεται μόνο να διαμορφώσει τον κύριο κόμβο παρακολούθησης για να ανακαλύπτει αυτόματα άλλους κόμβους φρουρού και υποτελείς κόμβους.
  • Κατά τις φάσεις εκκίνησης και ανακατεύθυνσης του κόμβου φρουρού, τα αρχεία διαμόρφωσης κάθε κόμβου θα ξαναγραφούν (επαναγραφή διαμόρφωσης).

Λειτουργία συμπλέγματος

Το Redis έχει τρεις λειτουργίες συμπλέγματος

  • λειτουργία master-slave
  • Λειτουργία φρουρού
  • Λειτουργία συμπλέγματος

Μειονεκτήματα του Sentry Mode
Εισαγάγετε την περιγραφή της εικόνας εδώ
έλλειψη

  • Όταν ο κύριος κλείσει το τηλέφωνο, ο φρουρός θα εκλέξει έναν κύριο Κατά τη διάρκεια των εκλογών, δεν υπάρχει τρόπος πρόσβασης στο Redis και θα υπάρξει προσωρινή διακοπή της πρόσβασης.
  • Στη λειτουργία φρουρού, μόνο ο κύριος κόμβος μπορεί να γραφτεί εξωτερικά και ο υποτελής κόμβος μπορεί να χρησιμοποιηθεί μόνο για ανάγνωση. Αν και ένας μεμονωμένος κόμβος Redis υποστηρίζει έως και 10 W QPS, κατά τη διάρκεια των προωθήσεων ηλεκτρονικού εμπορίου, όλη η πίεση της εγγραφής δεδομένων είναι στον κύριο.
  • Η μνήμη ενός κόμβου του Redis δεν μπορεί να ρυθμιστεί πολύ μεγάλη.

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

Πλεονεκτήματα του συμπλέγματος Redis

  • Το σύμπλεγμα Redis έχει πολλαπλούς κύριους, οι οποίοι μπορούν να μειώσουν τον αντίκτυπο των παροδικών προβλημάτων πρόσβασης.
  • Το σύμπλεγμα Redis έχει πολλαπλούς κύριους, οι οποίοι μπορούν να παρέχουν υψηλότερη ταυτόχρονη λειτουργία
  • Το σύμπλεγμα Redis μπορεί να αποθηκευτεί σε θραύσματα, ώστε να μπορούν να αποθηκευτούν περισσότερα δεδομένα

Κατασκευή λειτουργίας συμπλέγματος

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

Δημιουργήστε 6 διαφορετικούς κόμβους redis με αριθμούς θύρας 6379, 6380, 6381, 6382, 6383 και 6384 αντίστοιχα.

Ειδοποίηση: Τα αρχεία dump.rdb και appendonly.aof πρέπει να διαγραφούν πριν από την αντιγραφή.

1. Δημιουργήστε ένα νέο αρχείο διαμόρφωσης
Δημιουργήστε αρχεία redis6379.config, redis6380.config, redis6381.config, redis6382.config, redis6383.config, redis6384.config Τροποποιήστε τον αριθμό θύρας στο αρχείο διαμόρφωσης, ώστε να αντιστοιχεί στον αριθμό θύρας του αρχείου.

daemonize yes
dir /usr/local/redis-7.2.4/redis-cluster/6382/
bind 192.168.47.100
port 6382
dbfilename dump6382.rdb
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

παράμετρος

  • cluster-config-file: Το αρχείο διαμόρφωσης εμμονής συμπλέγματος, το οποίο περιέχει την κατάσταση άλλων κόμβων, μεταβλητές persistence, κ.λπ., θα δημιουργηθεί αυτόματα στον κατάλογο dir που διαμορφώθηκε παραπάνω. Κάθε κόμβος θα διατηρήσει ένα αρχείο διαμόρφωσης συμπλέγματος κατά τη λειτουργία κάθε φορά που αλλάζουν οι πληροφορίες του συμπλέγματος (όπως η προσθήκη ή η αφαίρεση κόμβων), όλοι οι κόμβοι του συμπλέγματος θα ενημερώνουν τις πιο πρόσφατες πληροφορίες στο αρχείο διαμόρφωσης, θα το ξαναδιαβάζουν το αρχείο διαμόρφωσης για να λάβετε πληροφορίες συμπλέγματος και μπορείτε εύκολα να επανέλθετε στο σύμπλεγμα. Το αρχείο διαμόρφωσης συμπλέγματος διατηρείται από τη Redis και δεν απαιτεί μη αυτόματη τροποποίηση.
  • Cluster-enabled: ενεργοποίηση του συμπλέγματος

ΔΗΜΙΟΥΡΓΩ φακελο

mkdir -p /usr/local/redis-7.2.4/redis-cluster/6379/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6380/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6381/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6382/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6383/
mkdir -p /usr/local/redis-7.2.4/redis-cluster/6384/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Ξεκινήστε έξι κόμβους

[root@bogon src]# ./redis-server ../redis6379.config
[root@bogon src]# ./redis-server ../redis6380.config
[root@bogon src]# ./redis-server ../redis6381.config
[root@bogon src]# ./redis-server ../redis6382.config
[root@bogon src]# ./redis-server ../redis6383.config
[root@bogon src]# ./redis-server ../redis6384.config
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Ελέγξτε εάν κάθε κόμβος ξεκινά με επιτυχία

[root@bogon src]# ps -ef | grep redis
root    3889    1 0 09:56 ?    00:00:03 ./redis-server 0.0.0.0:6379 [cluster]
root    3895    1 0 09:56 ?    00:00:03 ./redis-server 0.0.0.0:6380 [cluster]
root    3901    1 0 09:57 ?    00:00:03 ./redis-server 0.0.0.0:6381 [cluster]
root    3907    1 0 09:57 ?    00:00:02 ./redis-server *:6382 [cluster]
root    3913    1 0 09:57 ?    00:00:02 ./redis-server 0.0.0.0:6383 [cluster]
root    3919    1 0 09:57 ?    00:00:02 ./redis-server 0.0.0.0:6384 [cluster]
root    4247  2418 0 10:22 pts/0  00:00:00 grep --color=auto redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Διαμόρφωση του συμπλέγματος

Μορφή εντολών: --cluster-replicas 1 σημαίνει δημιουργία ενός slave node για κάθε master

Ειδοποίηση: Η IP εδώ είναι η πραγματική IP του μηχανήματος όπου βρίσκεται κάθε κόμβος.

[root@localhost src]# ./redis-cli --cluster create 192.168.47.100:6379 192.168.47.100:6380 192.168.47.100:6381 192.168.47.100:6382 192.168.47.100:6383 192.168.47.100:6384 --cluster-replicas 1
  • 1

Εισαγάγετε την περιγραφή της εικόνας εδώ

Επαλήθευση συμπλέγματος

Συνδεθείτε σε οποιονδήποτε πελάτη

./redis-cli -h 192.168.47.100  -p 6379 -c
  • 1

παράμετρος:

‐h: διεύθυνση κεντρικού υπολογιστή
-p: αριθμός θύρας
‐c: υποδεικνύει λειτουργία συμπλέγματος

Τεστ γραφής δεδομένων

[root@bogon src]# ./redis-cli -p 6379 -c
127.0.0.1:6379> set name zhangsan
-> Redirected to slot [5798] located at 192.168.47.100:6380
OK
192.168.47.100:6380> get name
"zhangsan"
192.168.47.100:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> get name
-> Redirected to slot [5798] located at 192.168.47.100:6380
"zhangsan"
192.168.47.100:6380>
[root@bogon src]# ./redis-cli -p 6383 -c
127.0.0.1:6383> readonly
OK
127.0.0.1:6383> get name
"zhangsan"
127.0.0.1:6383>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Ανάλυση της αρχής του μοτίβου συμπλέγματος

Συστάδα Redis Όλα τα δεδομένα χωρίζονται σε 16384 υποδοχές (slots) και κάθε κόμβος είναι υπεύθυνος για ένα μέρος των θυρίδων. Οι πληροφορίες υποδοχής αποθηκεύονται σε κάθε κόμβο. Μόνο στον κύριο κόμβο θα εκχωρηθούν υποδοχές και στον υποτελή κόμβο δεν θα εκχωρηθούν υποδοχές.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αλγόριθμος τοποθέτησης αυλακώσεων: k1 = 127001

Από προεπιλογή, το Cluster θα χρησιμοποιήσει τον αλγόριθμο crc16 για να κατακερματίσει την τιμή κλειδιού για να αποκτήσει μια ακέραια τιμή και, στη συνέχεια, να χρησιμοποιήσει αυτήν την ακέραια τιμή στο modulo 16384 για να αποκτήσει τη συγκεκριμένη υποδοχή.

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

Ανάκτηση
Προβολή κόμβων

192.168.66.103:8001> cluster nodes
  • 1

Σκοτώστε τον κύριο κόμβο

lsof -i:8001
kill -9 pid
  • 1
  • 2

Παρατηρήστε τις πληροφορίες κόμβου

Εισαγάγετε την περιγραφή της εικόνας εδώ

Java που λειτουργεί σύμπλεγμα Redis

Εισαγάγετε την περιγραφή της εικόνας εδώ
Τροποποίηση αρχείου διαμόρφωσης

spring.data.redis.cluster.nodes=192.168.47.100:6381,192.168.47.100:6383,192.168.47.100:6380
  • 1

Ειδοποίηση
1. Το σύμπλεγμα Redis απαιτεί τουλάχιστον 3 κόμβους για να εξασφαλίσει υψηλή διαθεσιμότητα.
2. Θα πρέπει να προσπαθήσετε να αποφύγετε την προσθήκη ή τη διαγραφή κόμβων ενώ εκτελείται το σύμπλεγμα Redis, επειδή αυτό μπορεί να προκαλέσει μετεγκατάσταση δεδομένων και συνεπώς να επηρεάσει τη συνολική απόδοση του συμπλέγματος Redis.

Κώδικας γραμμένος σε Java

@SpringBootTest
public class CluseterTest {

  @Autowired
  private RedisTemplate<String,Object> redisTemplate;

  @Test
  void string() {
    //  保存字符串
    redisTemplate.opsForValue().set("itbaizhan","itbaizhan123");

    System.out.println(redisTemplate.opsForValue().get("itbaizhan"));

   }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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