国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>技術(shù)干貨|Redis的哨兵和集群

      直播推薦

      更多>

      企業(yè)動態(tài)

      更多>

      推薦展會

      更多>

      技術(shù)干貨|Redis的哨兵和集群

      2022年02月24日 11:34:51人氣:80來源:上海派拉軟件股份有限公司

      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(哨兵)


      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事件,加快重連。


      生產(chǎn)環(huán)境推薦



      對于一個最小集群,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)移使用。



      Cluster模式有眾多的優(yōu)點:


      ? 無中心架構(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模式。


      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責(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)利。

      <
      更多 >

      工控網(wǎng)機器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機械包裝機械印刷機械農(nóng)業(yè)機械食品加工設(shè)備制藥設(shè)備倉儲物流環(huán)保設(shè)備造紙機械工程機械紡織機械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機械印染機械制鞋機械玻璃機械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


      我要投稿
      • 投稿請發(fā)送郵件至:(郵件標(biāo)題請備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺
      智能制造網(wǎng)APP

      功能豐富 實時交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務(wù)

      微信公眾號

      關(guān)注我們

      抖音

      智能制造網(wǎng)

      抖音號:gkzhan

      打開抖音 搜索頁掃一掃

      視頻號

      智能制造網(wǎng)

      公眾號:智能制造網(wǎng)

      打開微信掃碼關(guān)注視頻號

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開快手 掃一掃關(guān)注
      意見反饋
      關(guān)閉
      企業(yè)未開通此功能
      詳詢客服 : 0571-87858618