国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

這篇具有很好參考價(jià)值的文章主要介紹了【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Redis 主從 以及哨兵

單實(shí)例Redis 不足:

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

上述的是一個(gè)單實(shí)例的Redis。 我們可以先分析下有哪些不足:

  1. 單點(diǎn)故障 (是每個(gè)單實(shí)例必須面對(duì)的問題)
  2. 容量有限 (Redis畢竟是緩存型數(shù)據(jù)庫(kù),容量取決于服務(wù)器分配的容量,但容量畢竟是有限的)
  3. 壓力大(如果出現(xiàn)高并發(fā)的場(chǎng)景,所有查詢的壓力都集中在Redis上)

所以我們的目的就是針對(duì)每個(gè)不足進(jìn)行修復(fù)。

我們先來了解下 一些前置知識(shí)。

Redis 主備 認(rèn)識(shí)

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

以上示意圖就是主備 大致含義。

  • 從一定程度上主備解決了單實(shí)例的單點(diǎn)故障。因?yàn)槿绻鱎edis 如果因?yàn)槟承┰蛲V固峁┓?wù),可以啟動(dòng)備Redis 繼續(xù)工作。

  • 但是依舊無(wú)法解決容量有限 以及壓力大 的問題。因?yàn)閺氖贾两K都是一臺(tái)Redis實(shí)例在工作。

Redis 主從 認(rèn)識(shí)

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

以上示意圖就是主從的大致含義

  • 因?yàn)橐坏﹎aster Redis停止服務(wù)后,slave Redis可以晉升為master,繼續(xù)提供服務(wù)。所以給單點(diǎn)故障提供了保障
  • 部署主從后,一般來說master 節(jié)點(diǎn)負(fù)責(zé)寫數(shù)據(jù)。slave 節(jié)點(diǎn)服務(wù)讀數(shù)據(jù)。這樣可以有效的避免所有socket請(qǐng)求,都訪問一個(gè)節(jié)點(diǎn),從而降低了壓力。

一般我們生產(chǎn)環(huán)境中會(huì)部署主從。所以我們會(huì)以主從來做詳細(xì)的講解

數(shù)據(jù)的一致性

保證數(shù)據(jù)的一致性是分布式部署的通病。按主從部署來講,雖然數(shù)據(jù)已經(jīng)寫入到master 節(jié)點(diǎn),但是需要master節(jié)點(diǎn)往slave 節(jié)點(diǎn)同步數(shù)據(jù)。在這個(gè)同步的過程中可能因?yàn)榫W(wǎng)絡(luò)等種種原因,無(wú)法正常的同步。這就面臨著數(shù)據(jù)一致性的問題。

接下來我們分析幾種數(shù)據(jù)一致性的方案:

強(qiáng)一致性

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

如果想要實(shí)現(xiàn)數(shù)據(jù)的強(qiáng)一致性,master節(jié)點(diǎn)必須等待slave節(jié)點(diǎn)返回正確的結(jié)果。但是實(shí)際的業(yè)務(wù)場(chǎng)景中,會(huì)遇到各種問題導(dǎo)致slave節(jié)點(diǎn)延遲 或是 無(wú)法返回正確的數(shù)據(jù),所以相當(dāng)于master節(jié)點(diǎn)寫數(shù)據(jù)失敗。使用這種方式會(huì)破壞高可用

弱一致性

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

其實(shí)弱一致性的本質(zhì)就是:通過異步的形式給slave節(jié)點(diǎn)發(fā)送數(shù)據(jù)。如果數(shù)據(jù)發(fā)送失敗了,會(huì)導(dǎo)致主從數(shù)據(jù)不一致。

最終一致性

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

其實(shí)最終一致性是在弱一致性的基礎(chǔ)上做了升級(jí)。我們可以利用一些特殊的手段,最大可能性保證數(shù)據(jù)完整的傳輸。

比如:master節(jié)點(diǎn)可以將數(shù)據(jù)以同步阻塞的方式,傳遞給kafka. 由kafka給每個(gè)slave節(jié)點(diǎn)發(fā)送數(shù)據(jù)。有可能在某一個(gè)時(shí)點(diǎn)數(shù)據(jù)是不一致的,但是最終數(shù)據(jù)是一致性的。

因?yàn)?code>kafka給slave節(jié)點(diǎn)傳遞數(shù)據(jù)是需要時(shí)間的,如果此時(shí)間段內(nèi),數(shù)據(jù)的查詢是高并發(fā)的,有可能出現(xiàn)部分用戶拿到的數(shù)據(jù)不一致,分別是同步前 以及同步后的數(shù)據(jù)。

主從配置過程

接下倆我們實(shí)操下主從的配置過程:

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

步驟1:關(guān)閉Redis

也許服務(wù)器上啟動(dòng)了redis,如果再配置相同的端口,會(huì)出現(xiàn)一些意想不到的情況,所以我們先將redis關(guān)閉掉。

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

通過上述截圖中我們會(huì)發(fā)現(xiàn)仍然有redis 占用6379端口。所以我們需要將其關(guān)閉掉,下面列舉出兩種方式任意選擇:

方案 1

直接通過kill命令殺死進(jìn)程。

kill -9 19191

通過cli 關(guān)閉redis

[root@VM-8-3-centos bin]# pwd
/opt/redis/bin
[root@VM-8-3-centos bin]# ./redis-cli shutdown
[root@VM-8-3-centos bin]# ps aux | grep redis
root     20135  0.0  0.0 112812   980 pts/0    S+   15:40   0:00 grep --color=auto redis
[root@VM-8-3-centos bin]#
步驟2:配置主從的前置工作

創(chuàng)建文件

cd /opt
mkdir -p redis-replica/master
mkdir -p redis-replica/slave1
mkdir -p redis-replica/slave2

復(fù)制redis 配置文件

這里我們直接使用shell 來移動(dòng)文件

  1. 創(chuàng)建并編輯 sh文件
vi mv-redis.sh
  1. 直接將下面的內(nèi)容復(fù)制到sh中
#!/bin/bash

cp -r /opt/redis/bin/* /opt/redis-replica/master
cp -r /opt/redis/bin/* /opt/redis-replica/slave1
cp -r /opt/redis/bin/* /opt/redis-replica/slave2
  1. 通過命令執(zhí)行shell
/bin/bash mv-redis.sh

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

步驟3:修改配置文件

為了不影響我們之前的單機(jī)版Redis,我們修改主從的配置

修改master 節(jié)點(diǎn)配置

修改前

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

修改后

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380

修改slave1 節(jié)點(diǎn)配置

修改前

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

修改后

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6381

指定 master節(jié)點(diǎn):我們需要在slave 配置文件中指定master節(jié)點(diǎn)

修改前

# 3) Replication is automatic and does not need user intervention. After a
#    network partition replicas automatically try to reconnect to masters
#    and resynchronize with them.
#
# replicaof <masterip> <masterport>

修改后

# 3) Replication is automatic and does not need user intervention. After a
#    network partition replicas automatically try to reconnect to masters
#    and resynchronize with them.
#
replicaof 127.0.0.1 6380

如果是不同的服務(wù)器。此處的127.0.0.1 可以修改為 指定的IP。 但是如果服務(wù)器上有密碼就需要指定字段masterauth

修改slave2 配置文件

跟slave1 修改方式保持一致。只不過端口為6382

步驟4:?jiǎn)?dòng)服務(wù)

這次我們還是通過shell 進(jìn)行啟動(dòng)以及關(guān)閉

#!/bin/bash

cd /opt/redis-replica/master
./redis-server ./redis.conf


cd /opt/redis-replica/slave1
./redis-server ./redis.conf


cd /opt/redis-replica/slave2
./redis-server ./redis.conf

執(zhí)行shell

cd /opt/redis-replica
/bin/bash setup.sh

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

通過上述截圖中我們看到,我們的多個(gè)redis 實(shí)例是啟動(dòng)成功的。

步驟5:查看 啟動(dòng)狀態(tài)

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

步驟6:查看 主從信息

我們是可以通過命令info replication 來查看在master節(jié)點(diǎn)中 追隨了幾個(gè)slave節(jié)點(diǎn)。

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

主節(jié)點(diǎn)設(shè)置值

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

從節(jié)點(diǎn)可以讀取

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

步驟7:主從配置總結(jié)

如果看到這里,以為主從配置就結(jié)束了嗎?不不不,如果以為就這樣結(jié)束了, 那就大錯(cuò)特錯(cuò)了。上述步驟雖然進(jìn)行了主從部署,但是master節(jié)點(diǎn)負(fù)責(zé)寫數(shù)據(jù),slave 節(jié)點(diǎn)負(fù)責(zé)讀數(shù)據(jù)。如果master節(jié)點(diǎn)宕機(jī)了,也就是意味著Redis就不具備寫的功能,基本算是廢了。

如果是人工發(fā)現(xiàn)master節(jié)點(diǎn)宕機(jī)了,會(huì)將slave節(jié)點(diǎn)升級(jí)為master節(jié)點(diǎn),其他的slave節(jié)點(diǎn)跟隨新的master節(jié)點(diǎn)。

那么我們接下來分析的哨兵,就實(shí)現(xiàn)了該功能。應(yīng)該由人做的事情,將其交給第三方插件做

哨兵

在主從部署中默認(rèn)是只有主節(jié)點(diǎn)具備寫的能力,而從節(jié)點(diǎn)只能讀。如果主宕機(jī),整個(gè)節(jié)點(diǎn)不具備寫能力。但是如果這是讓一個(gè)從變成主,整個(gè)節(jié)點(diǎn)就可以繼續(xù)工作。即使之前的主恢復(fù)過來也當(dāng)做這個(gè)節(jié)點(diǎn)的從即可。

Redis的哨兵就是幫助監(jiān)控master 節(jié)點(diǎn)的,當(dāng)節(jié)點(diǎn)出現(xiàn)宕機(jī)等情況,幫助重新選取主。

Redis中哨兵支持單哨兵和多哨兵。單哨兵是只要這個(gè)哨兵發(fā)現(xiàn)master宕機(jī)了,就直接選取另一個(gè)master。而多哨兵是根據(jù)我們?cè)O(shè)定,達(dá)到一定數(shù)量哨兵認(rèn)為master宕機(jī)后才會(huì)進(jìn)行重新選取主。我們以多哨兵演示

多哨兵模式下,選擇幾個(gè)合適呢???

此時(shí)我們的多哨兵節(jié)點(diǎn)有5個(gè)

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

全部哨兵節(jié)點(diǎn)

當(dāng)master節(jié)點(diǎn)因?yàn)槟撤N原因停止服務(wù),可能所有的哨兵都檢測(cè)到了。但是因?yàn)榫W(wǎng)絡(luò)原因無(wú)法進(jìn)行匯總,導(dǎo)致4個(gè)哨兵認(rèn)為master宕機(jī)了,一個(gè)哨兵遲遲沒有回應(yīng)。

這種部署方式 有點(diǎn)類似于 數(shù)據(jù)強(qiáng)一致性。會(huì)破壞可用性。

一個(gè)哨兵節(jié)點(diǎn)
  1. 如果是一個(gè)哨兵就可以判斷master 節(jié)點(diǎn)是否宕機(jī)的話,會(huì)造成判斷結(jié)果不精準(zhǔn),因?yàn)闀?huì)有很多原因造成哨兵判斷失誤,例如:網(wǎng)絡(luò)
  2. 但是如果每個(gè)哨兵結(jié)果都不同的話,會(huì)發(fā)生一種情況:腦裂。
n/2+1 節(jié)點(diǎn)
  1. 為了增加結(jié)果的準(zhǔn)確性,我們建議是過半的哨兵如果判斷master 節(jié)點(diǎn)宕機(jī)的話,那master 節(jié)點(diǎn)就是宕機(jī)了
  2. 這種方式也避免了腦裂的情況發(fā)生。

如果是部署4臺(tái)哨兵的話,>=3臺(tái)認(rèn)為master宕機(jī)了,我們就認(rèn)為宕機(jī)
如果是部署5臺(tái)哨兵的話,>=3臺(tái)認(rèn)為master宕機(jī)了,我們就認(rèn)為宕機(jī)

所以為了更好的分區(qū)容忍性,我們是建議部署奇數(shù)臺(tái)哨兵。

哨兵配置過程

創(chuàng)建目錄

mkdir -p /opt/redis-replica/sentinel
cp /opt/redis-replica/master/redis-sentinel /opt/redis-replica/sentinel

從之前的解壓目錄 復(fù)制配置文件

cp /tmp/soft/redis-5.0.14/sentinel.conf /opt/redis-replica/sentinel/

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

復(fù)制多份配置文件,修改配置文件

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵
三個(gè)配置文件 修改內(nèi)容類似,如下內(nèi)容:

port 26379
daemonize yes
logfile "/opt/redis-replica/sentinel/26379.log"
sentinel monitor mymaster 127.0.0.1 6380 2
啟動(dòng)sentinel

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

殺死m(xù)aster節(jié)點(diǎn),主動(dòng)自動(dòng)切換

【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵
【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵

等殺死m(xù)aster節(jié)點(diǎn)后,等待一段時(shí)間后,通過哨兵,第一個(gè)從節(jié)點(diǎn)升級(jí)為master節(jié)點(diǎn)了。文章來源地址http://www.zghlxwxcb.cn/news/detail-414413.html

到了這里,關(guān)于【Redis 進(jìn)階之路】3. Redis 主從 以及哨兵的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Redis---主從復(fù)制 & 哨兵

    Redis---主從復(fù)制 & 哨兵

    目錄 一、主從復(fù)制 1、什么是主從復(fù)制呢? 2、案例演示? 2.1? 配置文件?? 2.2? ?一主二仆 2.2.1 相關(guān)題目: 2.3? 薪火相傳? ? 反客為主 3、復(fù)制原理和工作流程 3.1、slave啟動(dòng),同步清初 3.2? 首次連接,全量復(fù)制 3.3? 心跳持續(xù),保持通信(和TCP的心跳數(shù)據(jù)包很像) ?3.4? 進(jìn)入

    2024年02月05日
    瀏覽(28)
  • Redis主從復(fù)制、哨兵實(shí)戰(zhàn)

    Redis主從復(fù)制、哨兵實(shí)戰(zhàn)

    環(huán)境:linux centos7.x ,虛擬機(jī)3臺(tái) 版本:redis-6.2.6 1.下載安轉(zhuǎn)redis 下載地址 wget https://download.redis.io/releases/redis-6.2.6.tar.gz 解壓?tar -zxvf redis-6.2.6.tar.gz 移動(dòng)目錄?mv redis-6.2.6 /usr/local/redis 編譯???cd /usr/local/redis? ? ? ? ?make install PREFIX=/usr/local/redis 2.修改配置文件 redis.conf ?修改為

    2024年02月03日
    瀏覽(19)
  • Redis 主從復(fù)制 哨兵 集群

    Redis 主從復(fù)制 哨兵 集群

    主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(Master),后者稱為從節(jié)點(diǎn)(Slave);數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。 默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn);且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只能

    2024年02月11日
    瀏覽(28)
  • 3.Redis主從復(fù)制、哨兵、集群

    Redis主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(Master),后者稱為從節(jié)點(diǎn)(Slave):數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。 默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn):且 一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只

    2024年02月12日
    瀏覽(29)
  • 搭建Redis主從集群和哨兵

    搭建Redis主從集群和哨兵

    說明:?jiǎn)螜C(jī)的Redis存在許多的問題,如數(shù)據(jù)丟失問題、高并發(fā)問題、故障恢復(fù)問題、海量數(shù)據(jù)的存儲(chǔ)能力問題,針對(duì)這四個(gè)問題,對(duì)應(yīng)解決方式有:數(shù)據(jù)持久化(參考:http://t.csdn.cn/SSyBi)、搭建主從集群、Redis哨兵和搭建分片集群; 本文介紹搭建Redis主從集群和哨兵,用以解

    2024年02月16日
    瀏覽(22)
  • Redis 主從配置、哨兵、集群模式

    目錄 Redis 主從復(fù)制? 主從復(fù)制的作用: 主從復(fù)制流程: 搭建Redis 主從復(fù)制 安裝 Redis 環(huán)境準(zhǔn)備 修改內(nèi)核參數(shù) 安裝redis 創(chuàng)建redis工作目錄 環(huán)境變量 定義systemd服務(wù)管理腳本 修改 Redis 配置文件(Master節(jié)點(diǎn)操作) 修改 Redis 配置文件(Slave節(jié)點(diǎn)操作) 驗(yàn)證主從效果 Redis 哨兵模式

    2024年02月12日
    瀏覽(21)
  • redis主從復(fù)制、哨兵與集群

    redis主從復(fù)制、哨兵與集群

    目錄 一、概述 二、redis主從復(fù)制 1、概念 2、主從復(fù)制的作用 3、主從復(fù)制流程 4、搭建Redis 主從復(fù)制實(shí)驗(yàn) ①在三臺(tái)服務(wù)器上安裝redis (1)關(guān)閉防火墻和安全機(jī)制 (2)修改內(nèi)核參數(shù) (3)安裝redis (4)創(chuàng)建redis工作目錄 (5)準(zhǔn)備環(huán)境變量 (6)定義systemd服務(wù)管理腳本 ②修改

    2024年02月03日
    瀏覽(20)
  • redis的主從復(fù)制、哨兵、集群

    redis的主從復(fù)制、哨兵、集群

    主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(Master),后者稱為從節(jié)點(diǎn)(Slave);數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。 原理: 主從關(guān)系確定好后,開啟從節(jié)點(diǎn)時(shí),會(huì)發(fā)送一個(gè)sync的同步命令給主節(jié)點(diǎn),主節(jié)點(diǎn)接收到后會(huì)把redis內(nèi)存

    2024年02月06日
    瀏覽(23)
  • redis之主從復(fù)制、哨兵、集群

    redis之主從復(fù)制、哨兵、集群

    在web服務(wù)器中,高可用是指服務(wù)器可以正常訪問的時(shí)間,衡量的標(biāo)準(zhǔn)是在多長(zhǎng)時(shí)間內(nèi)可以提供正常服務(wù)(99.9%、99.99%、99.999%等等)。 高可用的計(jì)算公式是1-(宕機(jī)時(shí)間)/(宕機(jī)時(shí)間+運(yùn)行時(shí)間)有點(diǎn)類似與網(wǎng)絡(luò)傳輸?shù)膮?shù)誤碼率,我們用9的個(gè)數(shù)表示可用性: 2個(gè)9:99%,一年內(nèi)宕

    2024年02月11日
    瀏覽(23)
  • 圖解Redis,Redis主從復(fù)制與Redis哨兵機(jī)制

    圖解Redis,Redis主從復(fù)制與Redis哨兵機(jī)制

    ??作者簡(jiǎn)介: 哪吒 ,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多屆新星計(jì)劃導(dǎo)師?、博客專家?? , 專注Java硬核干貨分享,立志做到Java賽道全網(wǎng)Top N。 ??本文收錄于 Java基礎(chǔ)教程系列(進(jìn)階篇) ,本專欄是針對(duì)大學(xué)生、初級(jí)Java工程師精心打造, 針對(duì)Java生態(tài),逐個(gè)擊破,

    2024年01月18日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包