




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Redis技術(shù)實戰(zhàn) 第6課法律聲明【聲明】本視頻和幻燈片為煉數(shù)成金網(wǎng)絡(luò)課程的教學(xué)資料,所有資料只能在課程內(nèi)使用,不得在課程以外范圍散播,違者將可能被追究法律和經(jīng)濟責任。課程詳情訪問煉數(shù)成金培訓(xùn)網(wǎng)站 煉數(shù)成金逆向收費式網(wǎng)絡(luò)課程Dataguru(煉數(shù)成金)是專業(yè)數(shù)據(jù)分析網(wǎng)站,提供教育,媒體,內(nèi)容,社區(qū),出版,數(shù)據(jù)分析業(yè)務(wù)等服務(wù)。我們的課程采用新興的互聯(lián)網(wǎng)教育形式,獨創(chuàng)地發(fā)展了逆向收費式網(wǎng)絡(luò)培訓(xùn)課程模式。既繼承傳統(tǒng)教育重學(xué)習氛圍,重競爭壓力的特點,同時又發(fā)揮互聯(lián)網(wǎng)的威力打破時空限制,把天南地北志同道合的朋友組織在一起交流學(xué)習,使到原先孤立的學(xué)習個體組合成有組織的探索力量。并且把原先動輒成千上萬的學(xué)習
2、成本,直線下降至百元范圍,造福大眾。我們的目標是:低成本傳播高價值知識,構(gòu)架中國第一的網(wǎng)上知識流轉(zhuǎn)陣地。關(guān)于逆向收費式網(wǎng)絡(luò)的詳情,請看我們的培訓(xùn)網(wǎng)站 第六講 課程介紹Redis技術(shù)實戰(zhàn)課程目標類似in action的書籍要達到的目標,以如何用為主以結(jié)合案例的方式來學(xué)習如何用不但要知道如何用,還需要知道為什么這么用,因此還會結(jié)合原理進行講解,還有可能結(jié)合少量源碼進行理解從運維角度出發(fā)來管理redis第六講的內(nèi)容復(fù)制Sentinel(哨兵 高可用)第六講 復(fù)制為什么要復(fù)制實現(xiàn)數(shù)據(jù)的多副本存儲,從而可以實現(xiàn)服務(wù)的高可用提供更好的讀性能復(fù)制技術(shù)的關(guān)鍵點及難點如何指定被復(fù)制對象增量還是全量以及如何實現(xiàn)增
3、量?復(fù)制時不影響前端業(yè)務(wù)的操作網(wǎng)絡(luò)被中斷后如何處理如何防止發(fā)送出去的數(shù)據(jù)丟失,沒有達到從服務(wù)器如何識別被復(fù)制的數(shù)據(jù)源發(fā)生變化,導(dǎo)致數(shù)據(jù)出錯第六講 復(fù)制復(fù)制步驟全量同步命令傳播增量同步第六講 復(fù)制步驟1.指定master配置文件配置slaveof從節(jié)點命令行執(zhí)行slaveof命令2.建立socket連接從服務(wù)器根據(jù)配置或者命令行命令slaveof創(chuàng)建連向主服務(wù)器的socket3.發(fā)送ping命令:當連接創(chuàng)建后發(fā)送通過ping命令檢查socket的讀寫狀態(tài)是否正常檢查主服務(wù)器是否能正常處理命令請求當從服務(wù)器不能在規(guī)定時間內(nèi)得到ping的回復(fù),則表示網(wǎng)絡(luò)不正常,從服務(wù)器會斷開socket并重新創(chuàng)建連
4、接如果從服務(wù)器收到主服務(wù)器返回一個錯誤信息,比如BUSY redisis busy running a script,you can ,則從服務(wù)器會斷開連接并重新創(chuàng)建連接如果從服務(wù)器收到的回應(yīng)是”PONG”,則表示一切正常,可以執(zhí)行下一步流程第六講 復(fù)制配置部署4.身份驗證如果從服務(wù)器設(shè)置了masterauth選項,則進行身份驗證,否則不進行通過向master發(fā)送命令auth來實現(xiàn)認證,比如auth passwd當master沒有設(shè)置requirepass時,會提示錯誤no password is set如果master的設(shè)置與slave的密碼不一樣,則出現(xiàn)invalid password錯誤
5、5.發(fā)送端口信息從服務(wù)器執(zhí)行命令REPLCONF listening-port ,向主服務(wù)器發(fā)送從服務(wù)器的命令監(jiān)聽端口這端口號是為了在master上執(zhí)行info命令時,可以查看到從節(jié)點的端口信息6.同步主從服務(wù)器之間互為客戶端,可以彼此發(fā)送命令和響應(yīng)回應(yīng)7.命令傳播主服務(wù)器執(zhí)行完命令后會發(fā)送給從服務(wù)器第六講 復(fù)制同步過程截圖slavemaster第六講 復(fù)制配置說明slaveof /指定被復(fù)制的數(shù)據(jù)源masterauth /被復(fù)制數(shù)據(jù)源的認證密碼slave-serve-stale-data yesyes表示當slave與master之間的連接斷開或者正在處于復(fù)制中時,slave服務(wù)器可以接收客
6、戶端的請求,缺點是可能會讀取到過期的數(shù)據(jù)No表示不接收客戶端的請求,返回錯誤信息SYNC with master in progressslave-read-only yes /從服務(wù)器是否只讀,如果不是只讀,可能會從和主之間的數(shù)據(jù)不一致repl-ping-slave-period 10 /slave向master發(fā)送ping的周期頻率,單位是妙repl-timeout 60 /復(fù)制超時時間slave在與master SYNC期間有大量數(shù)據(jù)傳輸,造成超時在slave角度,master超時,包括數(shù)據(jù)、ping等在master角度,slave超時,當master發(fā)送REPLCONF 、 ACK p
7、ingsrepl-disable-tcp-nodelay no如果你選擇“yes”Redis將使用更少的TCP包和帶寬來向slaves發(fā)送數(shù)據(jù),本質(zhì)就是提高包的有效利用率,但是會導(dǎo)致一定的數(shù)據(jù)延遲,linux系統(tǒng)是40ms如果你選擇了 “no”,包利用率不高,但是延遲低第六講 復(fù)制配置說明repl-backlog-size 1mb /master端的固定緩沖區(qū),影響從節(jié)點與主節(jié)點網(wǎng)絡(luò)中斷后是否全部同步repl-backlog-ttl 3600 /當slave與master斷開后,一定時間超時后,釋放backlog里面的數(shù)據(jù)slave-priority 100用于配置從節(jié)點的優(yōu)先級,當主站不能正
8、常工作時,redis sentinel使用它來選擇一個從站并將它提升為主站,低優(yōu)先級的從站被認為更適合于提升當滿足下面的條件時,主不接收前端的寫請求min-slaves-to-write 3 /最少多少個slave在線,默認是0,表示關(guān)閉此功能min-slaves-max-lag 10/最小時間延遲第六講 復(fù)制同步流程從服務(wù)器接到客戶端發(fā)來的slaveof命令向主服務(wù)器發(fā)送PSYNC?-1是否第一次復(fù)制?向主服務(wù)器發(fā)送PSYNC 主服務(wù)器返回+CONTINUE?主服務(wù)器返回+FULLRESYNC 執(zhí)行增量同步否是否是第六講 復(fù)制全同步過程時間主服務(wù)器從服務(wù)器T0服務(wù)器啟動服務(wù)器啟動T1執(zhí)行SE
9、T k1 v1T2執(zhí)行SET k2 v2T3執(zhí)行SET k3 v3T4向主服務(wù)器發(fā)送PSYNC?-1T5接收從服務(wù)器的命令,執(zhí)行BGSAVE命令,創(chuàng)建包含k1 k2 k3的RDB文件,并使用緩沖區(qū)(repl_backlog)記錄接下來執(zhí)行的所有寫命令T6執(zhí)行SET k4 v4,并將命令記錄到緩沖區(qū)里面T7執(zhí)行SET k5 v5,并將命令記錄到緩沖區(qū)里面T8BGSAVE命令執(zhí)行完畢,向從服務(wù)器發(fā)送RDB文件T9接收并載入主服務(wù)器發(fā)來的RDB文件,獲得k1 k2 k3三個鍵T10向從服務(wù)器發(fā)送緩沖區(qū)中保存的寫命令set k4 v4和set k5 v5T11接收并執(zhí)行主服務(wù)器發(fā)來的兩個set命令,得
10、到k4和k5兩個鍵T12同步完成,現(xiàn)在主從服務(wù)器兩者的數(shù)據(jù)庫都包含了鍵k1 k2 k3 k4和k5同步完成,現(xiàn)在主從服務(wù)器兩者的數(shù)據(jù)庫都包含了鍵k1 k2 k3 k4和k5第六講 復(fù)制斷線后增量復(fù)制過程時間主服務(wù)器從服務(wù)器T0主從服務(wù)器完成同步主從服務(wù)器完成同步T1執(zhí)行并傳播SET k1 v1執(zhí)行主服務(wù)器傳來的set k1 v1T2執(zhí)行并傳播SET k2 v2執(zhí)行主服務(wù)器傳來的set k2 v2.T10085執(zhí)行并傳播set k10085 v10085執(zhí)行主服務(wù)器傳來的set k10085 v10085T10086主從服務(wù)器連接斷開主從服務(wù)器連接斷開T10087執(zhí)行SET k10086 v10
11、086斷線中,嘗試重新連接主服務(wù)器T10088執(zhí)行SET k10087 v10087斷線中,嘗試重新連接主服務(wù)器T10089主從服務(wù)器重新連接主從服務(wù)器重新連接T10090向主服務(wù)器發(fā)送psync命令T10091向從服務(wù)器返回+CONTINUE回復(fù),表示執(zhí)行部分重同步T10092接收+CONTINUE回復(fù),準備執(zhí)行部分重同步T10093向從服務(wù)器發(fā)送set k10086 v10086 set k10087 v10087兩個命令T10094接收并執(zhí)行主服務(wù)器傳來的兩個set命令T10095主從服務(wù)器再次完成同步主從服務(wù)器再次完成同步第六講 復(fù)制復(fù)制積壓緩沖區(qū)(repl-backlog)是一個固定
12、長度的先進先出的隊列,默認大小為1MB當從節(jié)點連接上后,所有導(dǎo)致數(shù)據(jù)變更的命令在執(zhí)行完成后都會先進入緩沖隊列,再傳播給從節(jié)點如何估算backlog的大?。簊econd*write_size_secondwrite_size_second:每秒產(chǎn)生的寫數(shù)據(jù)量Second:最長等待從連接的時間算出值后,可以乘以一定的放大倍數(shù),更安全,比如乘以2如何判斷是否增量同步如果從傳遞過來的偏移量+1之后的數(shù)據(jù)還在緩沖區(qū)中,則執(zhí)行增量同步,相反,如果已經(jīng)不在緩沖區(qū)了,則執(zhí)行全量同步當從節(jié)點連接時,發(fā)送過來的主的實例id與本機的不一樣,則主機會做全量同步每個redis實例啟動后會生成一個實例標識第六講 復(fù)制一個
13、現(xiàn)象:停掉主后,再起來,會不會重新全量同步會,因為復(fù)制源(主節(jié)點的實例id)的id發(fā)生了變化主節(jié)點宕機并重啟后的日志從節(jié)點宕機并重啟后的日志第六講 復(fù)制心跳檢測從服務(wù)器默認每秒一次的頻率想主發(fā)送心跳命令:REPLCONF ACK 通過心跳檢測可以知道網(wǎng)絡(luò)狀況,通過info命令可以查看到lag參數(shù),表示主從延遲,單位是秒,一般為0或者1在心跳檢測中帶有當前從的復(fù)制偏移量,當主發(fā)送給從的命令有丟失時,可以通過這種高頻的心跳檢測及時發(fā)現(xiàn)偏移量不正確,主服務(wù)器可以把缺失的命令重新發(fā)給從服務(wù)器通過心跳檢查可以實現(xiàn)min-slaves功能,即如果主從狀態(tài)不正常時,不允許主寫入數(shù)據(jù)第六講 高可用-senti
14、nelRedis高可用應(yīng)該解決那些問題多個節(jié)點擁有相同的數(shù)據(jù)復(fù)制技術(shù)當主節(jié)點宕機后,如何產(chǎn)生新的主節(jié)點當主節(jié)點宕機后,從節(jié)點如何自動連接到新的主節(jié)點如何判斷主節(jié)點宕機舊的主節(jié)點恢復(fù)后,如何處理如何監(jiān)控redis所有節(jié)點的健康狀態(tài)第六講 高可用-sentinel什么是sentinel(哨兵)本身也就是redis程序的一部分主要功能監(jiān)控redis節(jié)點的健康狀態(tài)通知,把監(jiān)控到的變化通知給相關(guān)系統(tǒng)或者redis實例,通過redis的訂閱機制實現(xiàn)自動熱備(failover),主節(jié)點宕機-選舉新的主節(jié)點配置管理,redis實例可以通過sentinel獲取到某些共享信息Sentinel本身也是分布式,解決了
15、自身單點問題第六講 高可用-sentinelSentinel-1Sentinel-2Sentinel-3Server1 (主)Server2 (從)Server3 (從)Server4 (從)監(jiān)視監(jiān)視監(jiān)視復(fù)制復(fù)制復(fù)制第六講 高可用-sentinel安裝及配置3個節(jié)點,一個sentinel,一個redis的master,一個slave復(fù)制配置之slave(同一臺機器配置)port 6380logfile /home/liubx/redisdata/slave1/logs/redis.log“pidfile /var/run/redis.pid與主路徑不一致dir /home/liubx/redi
16、sdata/slave1slaveof localhost 6379Sentinel配置在redis的安裝目錄下有一個配置文件sentinel.confdaemonize yeslogfile /home/liubx/sentinel/sentinel.log“sentinel monitor mymaster 127.0.0.1 6379 1第六講 高可用-sentinel安裝及配置啟動sentinelredis-sentinel ./sentinel.confredis-server ./sentinel.conf -sentinel第六講 高可用-sentinel失效備援(HA)測試當m
17、aster宕機后,slave變成master,master重啟后,變成slaveMaster宕機一定時間后,sentinel日志Master宕機一定時間后,slave變成master,日志輸出第六講 高可用-sentinel失效備援(HA)測試當master宕機后,slave變成master,master重啟后,變成slaveMaster宕機一定時間后,sentinel中執(zhí)行info第六講 高可用-sentinel失效備援(HA)步驟1.主觀判斷主節(jié)點是否下線2.客觀判斷主節(jié)點下線3.sentinel選舉出執(zhí)行故障轉(zhuǎn)移的節(jié)點(多個sentinel構(gòu)成對主節(jié)點的監(jiān)控)4.故障轉(zhuǎn)移選出新的主服務(wù)器
18、修改從服務(wù)器的復(fù)制目標將舊的主服務(wù)器變?yōu)閺姆?wù)器第六講 高可用-sentinel主觀判斷下線默認每10秒一次的頻率發(fā)送ping命令,用于檢測相關(guān)節(jié)點是否在線包括主服務(wù)器 主所屬的從服務(wù)器 以及其它sentinel返回+PONG 、LOADING、 -MASTERDOWN這三種狀態(tài)中一種表示節(jié)點在線,反之,則節(jié)點不在線在某段時間內(nèi),如果ping的返回不正確,則表示該節(jié)點主觀下線時間由參數(shù)sentinel down-after-milliseconds master 50000配置,單位為毫秒這個時間的設(shè)置不僅僅影響主節(jié)點,還影響主節(jié)點所屬的所有從節(jié)點以及同樣監(jiān)聽這個主節(jié)點的其它sentinel比
19、如master的ip為1.1 此時的sentinel的ip為1.2,有從節(jié)點1.3,1.4 指向1.2主節(jié)點;同時,另外一個也監(jiān)聽1.1的sentinel的ip為1.5;則如果1.2這個sentinel的時間配置為10000毫秒,則1.2判斷1.1,1.3,1.4,1.5主觀下線的時間都為10000毫秒不同的sentinel,這個配置時間可以不一樣第六講 高可用-sentinel客觀判斷下線當一定數(shù)量的其它sentinel也同樣判斷該master下線時,此sentinel就認為此master為客觀下線這個數(shù)量由sentinel monitor master ip port num這里面的num
20、指定Sentinel之間會創(chuàng)建通信連接,通過發(fā)送命令來獲取別的sentinel的判斷信息發(fā)送sentinel is-master-down-by-addr Current_epoch 配置紀元,也可以理解為選舉輪次計數(shù)器runid為sentinel的實例id,可以為*,代表判斷主節(jié)點是否下線狀態(tài),如果是具體的id,則表示選舉領(lǐng)頭的sentinelIp為被sentinel判斷為主觀下線的主服務(wù)器的ip地址Port為被判斷下線的主服務(wù)器端口當其它sentinel收到上面的命令時,會返回以下三個數(shù)據(jù)down_state:1代表主服務(wù)器下線,0代表未下線leader_runid:*代表此次回復(fù)僅為判斷
21、主服務(wù)器是否下線,具體的值為局部領(lǐng)頭sentinel的運行idleader_epoch:上一個參數(shù)為具體的運行id時,此參數(shù)代表此實例的配置紀元類似于配置版本;如果上一個參數(shù)為*,則此參數(shù)為0第六講 高可用-sentinel選舉領(lǐng)頭sentinel某個sentinel發(fā)現(xiàn)主節(jié)點客觀不在線后都可以發(fā)起選舉一個sentinel在一次選舉中只能投一次票,先到先得一次投票完成后,無論是否成功,投票周期都會加一,即epoch加一如果某個sentinel獲取到超過一半的投票,則自己就成為領(lǐng)頭sentinel,負責實施故障轉(zhuǎn)移選舉舉例場景:三臺sentinel,編號為1,2,3,master的ip為192.168.1.110,端口為637
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- YY/T 1284-2024牙科學(xué)牙科鑷
- 銷售公司業(yè)務(wù)員勞動合同協(xié)議
- 房屋按揭共同還款合同樣本2025
- 生態(tài)養(yǎng)殖基地租賃合同
- 特許經(jīng)營合同示范文本
- 新能源貨車租賃合同
- 采購合同管理:風險防范與應(yīng)對措施
- 合作建房借款合同(單位集體住房)
- 度產(chǎn)品試用合同協(xié)議
- 金屬冶煉安全管理課件
- 2025包頭青山賓館有限公司面向社會公開招聘18人筆試參考題庫附帶答案詳解
- 課件-DeepSeek從入門到精通
- 2025至2030年中國毛絨卡通玩具數(shù)據(jù)監(jiān)測研究報告
- 2025年度智能充電樁場地租賃合同范本3篇
- 2024年蕪湖職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 心電監(jiān)護儀的操作及注意事項 課件
- GB/T 718-2024鑄造用生鐵
- 細胞生物學(xué)(全套1047張課件)
- CFM56-7發(fā)動機滑油系統(tǒng)及其常見故障分析(共41頁)
- 《嵌入式技術(shù)》課程標準(STM32版)
- tplink-mr11u刷openwrt教程
評論
0/150
提交評論