Dieser Artikel stellt Ihnen den Sentry-Modus in Redis vor. Ich hoffe, er wird Ihnen hilfreich sein!
Redis-Master-Slave-Modus Sobald der Master-Knoten ausfällt, kann der Slave-Knoten zum Master-Knoten aktualisiert werden. Dies ist im Allgemeinen nicht möglich . Daher stellt Redis den Redis Sentinel
哨兵机制 来解决这个问题。【相关推荐:Redis视频教程】
psync
。此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时,可能会造成毫秒或秒级的 卡顿
Sentinel
节点集合一般来说,每个 Sentinel
节点会不断的 对其他 Sentinel
节点和 Redis
节点发送 PING
,通过是否回复来确认是否在线
down-after-milliseconds
毫秒内,Sentinel
没有收到目标节点的有效回复,则会判定该节点为主观下线。Sentinel
节点会通过 sentinel is-master-down-by-addr
命令,向其它 Sentinel
节点询问对该节点的状态判断。如果超过 <quorum></quorum>
个数的节点判定主节点不可达,则该 Sentinel
Sentinel-Mechanismus psync
. Wenn die Synchronisierung zu diesem Zeitpunkt fehlschlägt, wird eine vollständige Synchronisierung durchgeführt, während die Hauptdatenbank eine vollständige Sicherung durchführt. Dies kann zu einer Verzögerung von Millisekunden oder einer zweiten Ebene führen. Sentinel
-Knoten🎜🎜Sentinel
-Knoten kontinuierlich andere Sentinel
-Knoten und Redis
-Knoten sendet PING
und bestätigt, ob er online ist, indem er antwortet oder nicht 🎜 Wenn <code>Sentinel
innerhalb von Down-after-milliseconds Millisekunden keine gültige Antwort vom Zielknoten erhält, wird festgestellt, dass der Knoten subjektiv offline ist. 🎜Sentinel
-Knoten sentinel is-master-down-by-addr
Befehl zum Abfragen anderer Sentinel
-Knoten zur Statusbeurteilung dieses Knotens. Wenn mehr als <quorum></quorum>
-Knoten feststellen, dass der primäre Knoten nicht erreichbar ist, stellt der Sentinel
-Knoten fest, dass der primäre Knoten objektiv offline ist. 🎜🎜🎜🎜2. Funktionsprinzip🎜🎜🎜🎜🎜Sentinel
sendet mit einer Frequenz von 1 Mal/s
an andere Sentinel
-Knoten und Redis
-Master-Slave-Knoten > PING
-Befehl. Sentinel
以 1次/s
频率,向其他 Sentinel
节点、Redis
主从节点发送 PING
指令。PING
命令超过 down-after-milliseconds
,这个实例被 Sentinel
标记为 主观下线。Sentinel
节点,以 1次/s
确认此主服务器是否进入主观下线状态<quorum></quorum>
个数的节点判定主节点不可达,则该 Sentinel
节点会判断主节点为 客观下线。Sentinel
向下线服务器的所欲服务器发送 INFO
命令,会从10次/s
改为 1次/s
。Sentinel
节点之间协商主节点状态,如果主节点处于 SDOWN
状态,则投票自动选出新的 主节点。将剩余的 从节点 指向 新的主节点 进行 数据复制。Sentinel
同意 主服务器 下线时, 主服务器 的 客观下线状态 就会被移除。当 主服务器 重新向 Sentinel
的 PING
命令返回 有效回复 时,主服务器 的 主观下线状态 就会被移除。Redis 采用主从复制的模式,一旦主节点挂掉,从节点正在同步的数据可能会丢失,延迟越大,丢失的越多。
Redis 提供了两个配置项来限制主库的请求处理,分别是 min-slaves-to-write
和 min-slaves-max-lag
。
这两个配置项组合后的要求是,主库连接的从库中至少有 N 个从库,和主库进行数据复制时的 ACK 消息延迟不能超过 T 秒,否则,主库就不会再接收客户端的请求了。
所以,Sentine 无法保证消息完全不丢失,但是也能尽量保证消息少丢失。
Sentinel
Wenn eine Instanz mehr als down-after-milliseconds
von der letzten gültigen Antwort auf den PING
-Befehl entfernt ist, wird diese Instanz als Sentinel strong>Subjektiv offline.
Sentinel
-Knoten dieses Hauptservers mit 1 Zeit/s überwacht. code> Bestätigen Sie, ob der Hauptserver in einen subjektiven Offline-Zustand eingetreten ist
Wenn mehr als <quorum></quorum>
Knoten feststellen, dass der Hauptknoten nicht erreichbar ist, dann wird der Sentinel
Der Knoten stellt fest, dass der Masterknoten objektiv offline ist.
Sentinel
den Befehl INFO
an alle Server des Offline-Servers 10 mal/s wird in 1 mal/s
geändert. Sentinel
-Knoten verhandeln den Masterknotenstatus. Wenn sich der Masterknoten im Status SDOWN
befindet, wird bei der Abstimmung automatisch ein neuer Masterknoten ausgewählt. stark >. Verweisen Sie die verbleibenden Slave-Knoten auf den neuen Master-Knoten für die Datenreplikation. Wenn nicht genügend Sentinel
vorhanden sind, um zuzustimmen, dass der Hauptserver offline geht, wird der objektive Offline-StatusHauptservers /strong> wird entfernt. Wenn der Hauptserver eine gültige Antwort auf den PING
-Befehl von Sentinel
zurückgibt, wird der Hauptserver gesendet /strong> >s Subjektiver Offline-Status wird entfernt.
min-slaves-to-write
und min-slaves-max-lag
. 🎜🎜🎜min-slaves-to-write: Dieses Konfigurationselement legt die Mindestanzahl von Slave-Bibliotheken fest, mit denen die Master-Bibliothek Daten synchronisieren kann. 🎜min-slaves-max-lag: Dieses Konfigurationselement legt die Mindestanzahl fest Anzahl der Slave-Bibliotheken zwischen Master- und Slave-Bibliotheken Bei der Datenreplikation die maximale Verzögerung (in Sekunden), die die Slave-Bibliothek benötigt, um eine ACK-Nachricht an die Master-Bibliothek zu senden. 🎜Die Anforderung nach der Kombination dieser beiden Konfigurationselemente besteht darin, dass mindestens N Slave-Bibliotheken mit der Master-Bibliothek verbunden sind und die ACK-Nachrichtenverzögerung beim Replizieren von Daten mit der Master-Bibliothek T nicht überschreiten darf Sekunden, andernfalls empfängt die Hauptbibliothek keine Clientanfragen mehr. 🎜🎜Sentine kann also nicht garantieren, dass Nachrichten überhaupt nicht verloren gehen, kann aber auch versuchen, sicherzustellen, dass Nachrichten so wenig wie möglich verloren gehen. 🎜Sentinel
löst das Problem der Hochverfügbarkeit, löst jedoch nicht das Problem der Einzelknotenerweiterung des Masterknotens. 🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜Das obige ist der detaillierte Inhalt vonErfahren Sie in einem Artikel mehr über den Sentry-Modus in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!