最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Redis學(xué)記筆記——(13)復(fù)制-創(chuàng)新互聯(lián)

Redis學(xué)記筆記 —— (13)復(fù)制

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)遂寧,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

在分布式系統(tǒng)中,為了解決單點(diǎn)問題,通常會(huì)把數(shù)據(jù)復(fù)制多個(gè)副本部署到其他機(jī)器上,滿足故障恢復(fù)和負(fù)載均衡等需求。Redis當(dāng)中也提供了復(fù)制功能,可以實(shí)現(xiàn)相同數(shù)據(jù)的Redis副本。

1. 配置復(fù)制 1.1 建立復(fù)制

參與復(fù)制的Redis實(shí)例分為主節(jié)點(diǎn)master和從節(jié)點(diǎn)slave,默認(rèn)情況下,Redis都是主節(jié)點(diǎn),每個(gè)從節(jié)點(diǎn)只有一個(gè)主節(jié)點(diǎn),而主節(jié)點(diǎn)可以同事具有多個(gè)從節(jié)點(diǎn),復(fù)制的數(shù)據(jù)流是單向的,只能由主節(jié)點(diǎn)復(fù)制到從節(jié)點(diǎn)。

復(fù)制方式有三種:

  • 在配置文件中加入 slaveof(masterHost) {masterPort} ,隨Redis啟動(dòng)生效
  • 在redis-server啟動(dòng)命令后加入 --slaveof(masterHost) {masterPort} 生效
  • 世界使用命令:slaveof(masterHost) {masterPort} 。
1.2 斷開復(fù)制

slaveof命令不但可以建立復(fù)制,還可以在從節(jié)點(diǎn)執(zhí)行slaveof no one 來斷開和主節(jié)點(diǎn)復(fù)制關(guān)系。

如果 127.0.0.1:6380節(jié)點(diǎn)復(fù)制的是127.0.0.1:6379,再6380端口對(duì)應(yīng)的節(jié)點(diǎn)上執(zhí)行slaveof no one 就可以斷開復(fù)制。

1.2.1斷開復(fù)制的主要流程
  • 斷開與主節(jié)點(diǎn)復(fù)制關(guān)系
  • 從節(jié)點(diǎn)晉升為主節(jié)點(diǎn)

從階段斷開復(fù)制后并不會(huì)拋棄原有數(shù)據(jù),只是無法再獲取主節(jié)點(diǎn)上的數(shù)據(jù)變化。

通過slaveof命令還可以實(shí)現(xiàn)切主操作,所謂切主是指把當(dāng)前節(jié)點(diǎn)對(duì)主節(jié)點(diǎn)的復(fù)制切換到另一個(gè)節(jié)點(diǎn)上。執(zhí)行slaveof {newMasterIp} {newMasterPort} 命令即可。

1.2.2切主操作流程
  1. 斷開與主節(jié)點(diǎn)復(fù)制關(guān)系
  2. 與新節(jié)點(diǎn)建立復(fù)制關(guān)系
  3. 刪除從節(jié)點(diǎn)當(dāng)前所有數(shù)據(jù)
  4. 對(duì)主節(jié)點(diǎn)進(jìn)行復(fù)制操作
2. 復(fù)制的拓?fù)浣Y(jié)構(gòu)

Redis的復(fù)制拓?fù)浣Y(jié)構(gòu)可以支持單層或多層復(fù)制關(guān)系,可以分為三種:一主一從,一主多從,樹狀主從結(jié)構(gòu)。

2.1 一主一從結(jié)構(gòu)

當(dāng)應(yīng)用寫命令并發(fā)量較高且需要持久化時(shí), 可以只在從節(jié)點(diǎn)上開啟AOF, 這樣既保證數(shù)據(jù)安全性同時(shí)也避免了持久化對(duì)主節(jié)點(diǎn)的性能干擾。但需要注意的是, 當(dāng)主節(jié)點(diǎn)關(guān)閉持久化功能時(shí),如果主節(jié)點(diǎn)脫機(jī)要避免自動(dòng)重啟操作。 因?yàn)橹鞴?jié)點(diǎn)之前沒有開啟持久化功能自動(dòng)重啟后數(shù)據(jù)集為空, 這時(shí)從節(jié)點(diǎn)如果繼續(xù)復(fù)制主節(jié)點(diǎn)會(huì)導(dǎo)致從節(jié)點(diǎn)數(shù)據(jù)也被清空的情況, 喪失了持久化的意義。 安全的做法是在從節(jié)點(diǎn)上執(zhí)行slaveof no one斷開與主節(jié)點(diǎn)的復(fù)制關(guān)系, 再重啟主節(jié)點(diǎn)從而避免這一問題。

2.2 一主多從結(jié)構(gòu)

在這里插入圖片描述

一主多從結(jié)構(gòu)使得應(yīng)用端可以利用多個(gè)從節(jié)點(diǎn)實(shí)現(xiàn)讀寫分離,對(duì)于讀占比較大的場景,可以把讀命令發(fā)送到從節(jié)點(diǎn)來分擔(dān)主節(jié)點(diǎn)壓力,同時(shí)再日常開發(fā)中如果需要執(zhí)行一些比較耗時(shí)的讀命令,例如Keys、sort等,可以在其中的一個(gè)節(jié)點(diǎn)上執(zhí)行,防止慢查詢對(duì)主節(jié)點(diǎn)造成阻塞而影響線上服務(wù)的穩(wěn)定性,對(duì)于寫并法量較高的場景,多個(gè)從節(jié)點(diǎn)會(huì)導(dǎo)致主節(jié)點(diǎn)寫明了的多次發(fā)送從而過度消耗網(wǎng)絡(luò)帶寬,同時(shí)也加重了主節(jié)點(diǎn)的負(fù)載影響服務(wù)穩(wěn)定性。

2.3樹狀主從結(jié)構(gòu)

在這里插入圖片描述

樹狀主從結(jié)構(gòu)(又稱為樹狀拓?fù)浣Y(jié)構(gòu)) 使得從節(jié)點(diǎn)不但可以復(fù)制主節(jié)點(diǎn)數(shù)據(jù), 同時(shí)可以作為其他從節(jié)點(diǎn)的主節(jié)點(diǎn)繼續(xù)向下層復(fù)制。 通過引入復(fù)制中間層, 可以有效降低主節(jié)點(diǎn)負(fù)載和需要傳送給從節(jié)點(diǎn)的數(shù)據(jù)量。數(shù)據(jù)實(shí)現(xiàn)了一層一層的向下復(fù)制。 當(dāng)主節(jié)點(diǎn)需要掛載多個(gè)從節(jié)點(diǎn)時(shí)為了避免對(duì)主節(jié)點(diǎn)的性能干擾, 可以采用樹狀主從結(jié)構(gòu)降低主節(jié)點(diǎn)壓力。

3.開發(fā)與運(yùn)維

##### 3.1 讀寫分離

在讀占比比較高的場景,可以通過把一部分讀流量分?jǐn)偟綇墓?jié)點(diǎn)來減輕主節(jié)點(diǎn)的壓力,同時(shí)需要注意永遠(yuǎn)只對(duì)主節(jié)點(diǎn)執(zhí)行寫操作。

當(dāng)使用從節(jié)點(diǎn)響應(yīng)讀請(qǐng)求時(shí),業(yè)務(wù)端可能會(huì)遇到如下問題:

3.1.1 復(fù)制數(shù)據(jù)延遲

Redis復(fù)制數(shù)據(jù)的延遲由于是異步特性,因此無法避免,延遲取決于網(wǎng)路帶寬和命令阻塞情況,比如杠在主節(jié)點(diǎn)寫入數(shù)據(jù)后立刻在從節(jié)點(diǎn)上讀取可能獲取不到。

需要業(yè)務(wù)場景允許短時(shí)間內(nèi)的數(shù)據(jù)延遲,由于無法容忍大量延遲場景,可以編寫外部監(jiān)控程序監(jiān)聽主節(jié)點(diǎn)的復(fù)制偏移量,當(dāng)延遲較大時(shí)觸發(fā)報(bào)警或者通知客戶端避免讀取延遲過高的從節(jié)點(diǎn)。

分為三步:
  • 監(jiān)控程序定期檢查主從節(jié)點(diǎn)的偏移量
  • 延遲字節(jié)過高時(shí),監(jiān)控程序觸發(fā)報(bào)警并通知客戶端從節(jié)點(diǎn)延遲過高,可以采用Zookeeper的監(jiān)聽回調(diào)機(jī)制實(shí)現(xiàn)客戶端通知
  • 客戶端接到延遲通知后,修改讀命令路由到其他從節(jié)點(diǎn)或者主節(jié)點(diǎn)上,當(dāng)延遲恢復(fù)正常后再切換該結(jié)點(diǎn)的讀操作。
3.1.2 讀到過期數(shù)據(jù)

當(dāng)主節(jié)點(diǎn)存儲(chǔ)到大量設(shè)置超時(shí)的數(shù)據(jù)時(shí),Redis內(nèi)部需要維護(hù)過期數(shù)據(jù)刪除策略,刪除策略主要又兩種,分為惰性刪除和定時(shí)刪除。

  • 惰性刪除

主節(jié)點(diǎn)每次處理讀取命令時(shí),都會(huì)檢查鍵是否超時(shí),如果超時(shí)則執(zhí)行del命令,之后的del命令也會(huì)異步發(fā)給從節(jié)點(diǎn),需要注意的時(shí),為了保證復(fù)制的一致性,總結(jié)點(diǎn)自身永遠(yuǎn)不會(huì)主動(dòng)刪除超時(shí)數(shù)據(jù)。

  • 定時(shí)刪除

Redis主節(jié)點(diǎn)再內(nèi)部定時(shí)任務(wù)會(huì)循環(huán)采樣一定數(shù)量的鍵,當(dāng)發(fā)現(xiàn)采樣的鍵過期時(shí),執(zhí)行del命令,再同步給從節(jié)點(diǎn)。

3.1.3 從節(jié)點(diǎn)故障

對(duì)于從節(jié)點(diǎn)故障問題,需要再客戶端維護(hù)可用從節(jié)點(diǎn)列表,當(dāng)從節(jié)點(diǎn)故障時(shí)立刻切換到其他從節(jié)點(diǎn)或主節(jié)點(diǎn)上。

3.2 規(guī)避全局復(fù)制

全局復(fù)制是一個(gè)非常消耗資源的操作,如果避免全局復(fù)制十分重要

  • 第一次建立復(fù)制

由于是第一次建立復(fù)制,從節(jié)點(diǎn)不包含任何主節(jié)點(diǎn)數(shù)據(jù),因此必須進(jìn)行全局復(fù)制才能完成數(shù)據(jù)同步,對(duì)于這種情況全量復(fù)制無法避免,當(dāng)數(shù)據(jù)量較大且流量較高的主節(jié)點(diǎn)添加從節(jié)點(diǎn)時(shí),建議再低峰時(shí)操作,或者盡量避免使用大數(shù)據(jù)量的Redis節(jié)點(diǎn)。

  • 節(jié)點(diǎn)運(yùn)行ID不匹配

當(dāng)主從復(fù)制關(guān)系建立后,從節(jié)點(diǎn)會(huì)保存主節(jié)點(diǎn)的運(yùn)行ID,如果此時(shí)主節(jié)點(diǎn)因故障重啟,那么它的運(yùn)行ID會(huì)改變,從節(jié)點(diǎn)發(fā)現(xiàn)主節(jié)點(diǎn)運(yùn)行ID不匹配時(shí),會(huì)認(rèn)為自己復(fù)制的是一個(gè)新的主節(jié)點(diǎn)從而進(jìn)行全量復(fù)制,對(duì)于這種情況應(yīng)該從架構(gòu)上避免,例如提供故障轉(zhuǎn)移功能,當(dāng)主節(jié)點(diǎn)發(fā)生故障后,手動(dòng)提升從節(jié)點(diǎn)為主節(jié)點(diǎn),或者采用支持自動(dòng)故障轉(zhuǎn)移的哨兵或集群方案。

3.3 規(guī)避復(fù)制風(fēng)暴

復(fù)制風(fēng)暴是指大量從節(jié)點(diǎn)對(duì)同一主節(jié)點(diǎn)或者對(duì)同一臺(tái)機(jī)器的多個(gè)從節(jié)點(diǎn)短時(shí)間內(nèi)發(fā)起全量復(fù)制的過程,復(fù)制風(fēng)暴對(duì)發(fā)起復(fù)制的主節(jié)點(diǎn)或者機(jī)器造成大量開銷,導(dǎo)致CPU、內(nèi)存、帶寬消耗。

可以通過 減少主節(jié)點(diǎn)掛載從節(jié)點(diǎn)的數(shù)量,或采用樹狀復(fù)制結(jié)構(gòu),加入中間層從節(jié)點(diǎn)用來保護(hù)主節(jié)點(diǎn)。

可以通過 盡量把主節(jié)點(diǎn)分散再多臺(tái)機(jī)器上,避免再單臺(tái)機(jī)器上部署過多的主節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)所在機(jī)器故障后提供故障轉(zhuǎn)移機(jī)制,避免機(jī)器恢復(fù)后進(jìn)行密集的全局復(fù)制。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:Redis學(xué)記筆記——(13)復(fù)制-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/codhis.html