直播推薦
企業(yè)動態(tài)
- 智造范式革命,新能源汽車全產(chǎn)業(yè)鏈技術(shù)耦合重塑百年生產(chǎn)邏輯
- 電費憑空消失一半?海爾AWE館內(nèi)建起一棟節(jié)能示范樓
- 華測儀器塞貝克系數(shù)電阻測試儀新產(chǎn)品上市
- AI賦能新一代工業(yè)軟件,第四屆工業(yè)軟件創(chuàng)新應(yīng)用大賽頒獎典禮圓滿舉辦
- 智能增長引擎:紛享銷客ShareAI產(chǎn)品白皮書(2025版)正式發(fā)布!
- 精度vs成本 摩方精密微納3D打印助推工業(yè)制造向新發(fā)展
- 商用少費電,家用幾乎0電費!海爾熱泵零碳采暖來了
- 從自動化到智能化,線束加工企業(yè)如何智領(lǐng)市場主流?
推薦展會
Redis全稱REmote DIctionary Server,是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因為值(value)可以是字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和有序集合(sorted sets)等類型。
Redis經(jīng)常會被用于數(shù)據(jù)的緩存,session共享等場景下,Redis的本身的高可用就特別值得關(guān)注,我們來針對常用的兩種高可用架構(gòu)進(jìn)行說明。
Redis Sentinel集群是由若干Sentinel節(jié)點組成的分布式集群,可以實現(xiàn)故障發(fā)現(xiàn)、故障自動轉(zhuǎn)移、配置中心和客戶端通知。Redis Sentinel的節(jié)點數(shù)量要滿足2n+1(n>=1)的奇數(shù)個。
哨兵模式其實是有2個集群在同時工作,一個是sentinel的集群,一個是數(shù)據(jù)節(jié)點的集群。典型的一個高可用架構(gòu)如下圖所示:
Sentinel架構(gòu)的主要作用是解決主從模式下主節(jié)點的故障轉(zhuǎn)移工作的。這里如果主節(jié)點因為故障下線,那么某個sentinel節(jié)點發(fā)送檢測消息給主節(jié)點時,如果在時間內(nèi)收不到回復(fù),那么該sentinel就會主觀的判斷該主節(jié)點已經(jīng)下線,那么其會發(fā)送消息給其余的sentinel節(jié)點,詢問其是否“認(rèn)為”該主節(jié)點已下線,其余的sentinel收到消息后也會發(fā)送檢測消息給主節(jié)點,如果其認(rèn)為該主節(jié)點已經(jīng)下線,那么其會回復(fù)向其詢問的sentinel節(jié)點,告知其也認(rèn)為主節(jié)點已經(jīng)下線,當(dāng)該sentinel節(jié)點收到超過數(shù)目(配置文件中配置的數(shù)目和當(dāng)前sentinel節(jié)點集合數(shù)的一半,這里兩個數(shù)目的較大值)的sentinel節(jié)點回復(fù)說當(dāng)前主節(jié)點已下線,那么其就會對主節(jié)點進(jìn)行故障轉(zhuǎn)移工作。轉(zhuǎn)移完成后,sentinel也會通知客戶端進(jìn)行節(jié)點的轉(zhuǎn)移。
客戶端實現(xiàn)
客戶端從過去直接連接Redis ,變成先連接一個Sentinel實例使用 SENTINEL get-master-addr-by-name master-name 獲取Redis地址信息。
連接返回的Redis地址信息,通過ROLE命令查詢是否是Master。如果是,連接進(jìn)入正常的服務(wù)環(huán)節(jié)。否則應(yīng)該斷開重新查詢。
(可選)客戶端可以通過SENTINEL sentinels 來更新自己的Sentinel實例列表。當(dāng)Sentinel發(fā)起failover后,切換了新的Master,Sentinel會發(fā)送 CLIENT KILL TYPE normal命令給客戶端,客戶端需要主動斷開對老的Master的鏈接,然后重新查詢新的Master地址,再重復(fù)走上面的流程。這樣的方式仍然相對不夠?qū)崟r,可以通過Sentinel提供的Pub/Sub來更快地到failover事件,加快重連。
對于一個最小集群,Redis應(yīng)該是一個Master帶上兩個Slave,并且開啟下列選項:
min-slaves-to-write 1
min-slaves-max-lag 10
這樣能保證寫入Master的同時至少寫入一個Slave,如果出現(xiàn)網(wǎng)絡(luò)分區(qū)阻隔并發(fā)生failover的時候,可以保證寫入的數(shù)據(jù)最終一致而不是丟失,寫入老的Master會直接失敗。
Slave可以適當(dāng)設(shè)置優(yōu)先級,除了0之外(0表示永遠(yuǎn)不提升為Master),越小的優(yōu)先級,越有可能被提示為Master。如果Slave分布在多個機房,可以考慮將和Master同一個機房的Slave的優(yōu)先級設(shè)置的更低以提升他被選為新的Master的可能性。
考慮到可用性和選舉的需要,Sentinel進(jìn)程至少為3個,推薦為5個。如果有網(wǎng)絡(luò)分區(qū),應(yīng)當(dāng)適當(dāng)分布(比如2個在A機房, 2個在B機房,一個在C機房)等。
Redis Cluster(集群)
Sentinel模式雖然解決了高可用的問題,但是單機的容量還是受到了限制,無法實現(xiàn)redis的分布式集群,限制了整個集群的容量和并發(fā)性能。
Redis Cluster集群節(jié)點最小配置6個節(jié)點以上(3主3從),其中主節(jié)點提供讀寫操作,從節(jié)點作為備用節(jié)點,不提供請求,只作為故障轉(zhuǎn)移使用。
? 無中心架構(gòu);
? 數(shù)據(jù)按照slot存儲分布在多個節(jié)點,節(jié)點間數(shù)據(jù)共享,可動態(tài)調(diào)整數(shù)據(jù)分布;
? 可擴展性:可線性擴展到1000多個節(jié)點,節(jié)點可動態(tài)添加或刪除;
? 高可用性:部分節(jié)點不可用時,集群仍可用。通過增加Slave做standby數(shù)據(jù)副本,能夠?qū)崿F(xiàn)故障自動failover,節(jié)點之間通過gossip協(xié)議交換狀態(tài)信息,用投票機制完成Slave到Master的角色提升;
? 降低運維成本,提高系統(tǒng)的擴展性和可用性。
看起來很美好,cluster集群模式還是受到了一些使用上的限制:
1.Key批量操作支持有限。目前只支持同slot內(nèi)的key執(zhí)行批量操作(如mget,mset)。
2.Key事務(wù)操作支持有限。只支持多key在同一個節(jié)點上的事務(wù)操作,多個key分布在不同節(jié)點上時無法使用事務(wù)功能。
3.Key作為數(shù)據(jù)分區(qū)的最小粒度,因此不能將一個大的鍵值對象如hash,list等映射到不同節(jié)點。
4.不支持多數(shù)據(jù)庫空間,集群模式下只能使用db0空間。
5.復(fù)制結(jié)構(gòu)只支持一層,從節(jié)點只能復(fù)制主節(jié)點,不支持嵌套樹狀復(fù)制結(jié)構(gòu)。
故障節(jié)點變?yōu)榭陀^下線后,如果下線節(jié)點是持有槽的主節(jié)點,則需要在它的從節(jié)點中選出一個替換它。從而保證集群高可用。下線主節(jié)點的所有從節(jié)點承擔(dān)故障恢復(fù)的義務(wù),當(dāng)從節(jié)點通過內(nèi)部定時任務(wù)發(fā)現(xiàn)自身復(fù)制的主節(jié)點進(jìn)入客觀下線時,將會觸發(fā)故障恢復(fù)流程。
Sentinel模式提供了高可用的功能,由于redis本身的性能優(yōu)異,很多企業(yè)內(nèi)部的系統(tǒng)用這種模式足以應(yīng)對。如果有些2C的應(yīng)用,則推薦采用redis的cluster模式。
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2025第21屆鄭州工業(yè)自動化展
展會城市:鄭州市展會時間:2025-05-09