国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Redis - Redis cluster集群的介紹

Redis cluster集群的介紹

2019-11-22 19:14qq_43193797 Redis

今天小編就為大家分享一篇關(guān)于Redis cluster集群的介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

1.前言

Redis集群模式主要有2種:

主從集群、分布式集群。

前者主要是為了高可用或是讀寫分離,后者為了更好的存儲(chǔ)數(shù)據(jù),負(fù)載均衡。

redis集群提供了以下兩個(gè)好處

1、將數(shù)據(jù)自動(dòng)切分(split)到多個(gè)節(jié)點(diǎn)

2、當(dāng)集群中的某一個(gè)節(jié)點(diǎn)故障時(shí),redis還可以繼續(xù)處理客戶端的請(qǐng)求。

一個(gè) redis 集群包含 16384 個(gè)哈希槽(hash slot),數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)都屬于這16384個(gè)哈希槽中的一個(gè)。集群使用公式 CRC16(key) % 16384 來計(jì)算鍵 key 屬于哪個(gè)槽。集群中的每一個(gè)節(jié)點(diǎn)負(fù)責(zé)處理一部分哈希槽。

集群中的主從復(fù)制

集群中的每個(gè)節(jié)點(diǎn)都有1個(gè)至N個(gè)復(fù)制品,其中一個(gè)為主節(jié)點(diǎn),其余的為從節(jié)點(diǎn),如果主節(jié)點(diǎn)下線了,集群就會(huì)把這個(gè)主節(jié)點(diǎn)的一個(gè)從節(jié)點(diǎn)設(shè)置為新的主節(jié)點(diǎn),繼續(xù)工作。這樣集群就不會(huì)因?yàn)橐粋€(gè)主節(jié)點(diǎn)的下線而無法正常工作

注意:

1、如果某一個(gè)主節(jié)點(diǎn)和他所有的從節(jié)點(diǎn)都下線的話,redis集群就會(huì)停止工作了。redis集群不保證數(shù)據(jù)的強(qiáng)一致性,在特定的情況下,redis集群會(huì)丟失已經(jīng)被執(zhí)行過的寫命令

2、使用異步復(fù)制(asynchronous replication)是redis 集群可能會(huì)丟失寫命令的其中一個(gè)原因,有時(shí)候由于網(wǎng)絡(luò)原因,如果網(wǎng)絡(luò)斷開時(shí)間太長(zhǎng),redis集群就會(huì)啟用新的主節(jié)點(diǎn),之前發(fā)給主節(jié)點(diǎn)的數(shù)據(jù)就會(huì)丟失。

2. 主從切換原理

Redis的主從原理與MySQL相似,都是設(shè)置兩臺(tái)機(jī)器,一主一從。也就是常說的熱備與冷備。設(shè)置主從的同時(shí),設(shè)置兩個(gè)哨兵進(jìn)程,用來檢測(cè)主節(jié)點(diǎn)是否宕機(jī)。若發(fā)現(xiàn)主節(jié)點(diǎn)宕機(jī),立馬從從節(jié)點(diǎn)內(nèi)選取出合適的節(jié)點(diǎn) 作為新的主節(jié)點(diǎn)。這點(diǎn)與VIP(虛擬IP技術(shù)有點(diǎn)相似)。

3.Redis群集TCP端口

每個(gè)Redis群集的節(jié)點(diǎn)都需要打開兩個(gè)TCP連接,由于這兩個(gè)連接就需要兩個(gè)端口,分別是用于為客戶端提供服務(wù)的常規(guī)Redis TCP命令端口(例如6379)以及通過將10000和命令端口相加(10000+6379)而獲得的端口,就是集群端口(例如16379)。

第二個(gè)大號(hào)端口用于群集總線,即使用二進(jìn)制協(xié)議的節(jié)點(diǎn)到節(jié)點(diǎn)通信通道。 節(jié)點(diǎn)使用群集總線進(jìn)行故障檢測(cè),配置更新,故障轉(zhuǎn)移授權(quán)等。 客戶端不應(yīng)嘗試與群集總線端口通信,為了保證Redis命令端口的正常使用,請(qǐng)確保在防火墻中打開這兩個(gè)端口,否則Redis群集節(jié)點(diǎn)將無法通信。

命令端口和集群總線端口偏移量是固定的,始終為10000。

請(qǐng)注意,為了讓Redis群集正常工作,您需要為每個(gè)節(jié)點(diǎn):

1、用于與客戶端進(jìn)行通信的普通客戶端通信端口(通常為6379)對(duì)所有需要到達(dá)群集的客戶端以及所有其他群集節(jié)點(diǎn)(使用客戶端端口進(jìn)行密鑰遷移)都是開放的。

2、集群總線端口(客戶端端口+ 10000)必須可從所有其他集群節(jié)點(diǎn)訪問。

如果您不打開這兩個(gè)TCP端口,則您的群集將無法正常工作。

集群總線使用不同的二進(jìn)制協(xié)議進(jìn)行節(jié)點(diǎn)到節(jié)點(diǎn)的數(shù)據(jù)交換,這更適合于使用很少的帶寬和處理時(shí)間在節(jié)點(diǎn)之間交換信息。

4.Redis集群和Docker

目前,Redis群集不支持NAT地址環(huán)境,并且在IP地址或TCP端口被重新映射的一般環(huán)境中。

Docker使用一種叫做端口映射的技術(shù):Docker容器中運(yùn)行的程序可能會(huì)暴露在與程序認(rèn)為使用的端口不同的端口上。 這對(duì)于在同一服務(wù)器中同時(shí)使用相同端口運(yùn)行多個(gè)容器很有用。

為了使Docker與Redis Cluster兼容,您需要使用Docker的主機(jī)聯(lián)網(wǎng)模式。 請(qǐng)查看Docker文檔中的–net = host選項(xiàng)以獲取更多信息。

5.Redis集群數(shù)據(jù)分片

Redis集群沒有使用一致的散列,而是一種不同的分片形式,其中每個(gè) key 在概念上都是我們稱之為散列槽的部分。

Redis集群中有16384個(gè)散列槽,為了計(jì)算給定 key 的散列槽,我們簡(jiǎn)單地取16384模的CRC16。

Redis集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)哈希槽的一個(gè)子集,例如,您可能有一個(gè)具有3個(gè)節(jié)點(diǎn)的集群,其中:

  • 1、節(jié)點(diǎn)A包含從0到5500的散列槽。
  • 2、節(jié)點(diǎn)B包含從5501到11000的散列槽。
  • 3、節(jié)點(diǎn)C包含從11001到16383的散列槽。

這允許輕松地添加和刪除集群中的節(jié)點(diǎn)。例如,如果我想添加一個(gè)新節(jié)點(diǎn)D,我需要將節(jié)點(diǎn)A,B,C中的一些散列槽移動(dòng)到D。同樣,如果我想從集群中刪除節(jié)點(diǎn)A,我可以只移動(dòng)由A使用的散列槽到B和C,當(dāng)節(jié)點(diǎn)A將為空時(shí),我可以將它從群集中徹底刪除。

因?yàn)閷⑸⒘胁蹚囊粋€(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn)不需要停機(jī)操作,添加和移除節(jié)點(diǎn)或更改節(jié)點(diǎn)占用的散列槽的百分比也不需要任何停機(jī)時(shí)間。

只要涉及單個(gè)命令執(zhí)行(或整個(gè)事務(wù)或Lua腳本執(zhí)行)的所有 key 都屬于同一散列插槽,Redis群集就支持多個(gè) key 操作。用戶可以使用稱為散列標(biāo)簽的概念強(qiáng)制多個(gè) key 成為同一個(gè)散列槽的一部分。

Hash標(biāo)記記錄在Redis集群規(guī)范文檔中,但要點(diǎn)是如果在關(guān)鍵字{}括號(hào)內(nèi)有一個(gè)子字符串,那么只有該花括號(hào)“{}”內(nèi)部的內(nèi)容被散列,例如 this{foo}key 和 another{foo}key 保證在同一散列槽中,并且可以在具有多個(gè) key 作為參數(shù)的命令中一起使用。

6.Redis集群之主從模型

為了在主服務(wù)器節(jié)點(diǎn)的子集失敗或不能與大多數(shù)節(jié)點(diǎn)通信時(shí)保持可用,Redis集群使用主從模型,其中每個(gè)散列槽從1(主服務(wù)器本身)到N個(gè)副本(N -1個(gè)附加從節(jié)點(diǎn))。

在我們具有節(jié)點(diǎn)A,B,C的示例的群集中,如果節(jié)點(diǎn)B失敗,則群集無法繼續(xù),因?yàn)槲覀儧]有辦法再在5501-11000范圍內(nèi)提供散列槽。然而,當(dāng)創(chuàng)建集群時(shí)(或稍后),我們?yōu)槊總€(gè)主服務(wù)器節(jié)點(diǎn)添加一個(gè)從服務(wù)器節(jié)點(diǎn),以便最終集群由作為主服務(wù)器節(jié)點(diǎn)的A,B,C以及作為從服務(wù)器節(jié)點(diǎn)的A1,B1,C1組成,如果節(jié)點(diǎn)B發(fā)生故障,系統(tǒng)能夠繼續(xù)運(yùn)行。節(jié)點(diǎn)B1復(fù)制B,并且B失敗,則集群將促使節(jié)點(diǎn)B1作為新的主服務(wù)器節(jié)點(diǎn)并且將繼續(xù)正確地操作。

但請(qǐng)注意,如果節(jié)點(diǎn)B和B1在同一時(shí)間發(fā)生故障,則Redis群集無法繼續(xù)運(yùn)行。

7.Redis集群一致性保證

Redis 集群無法保證很強(qiáng)的一致性。實(shí)際上,這意味著在某些情況下,Redis 集群可能會(huì)丟失系統(tǒng)向客戶確認(rèn)的寫入。

Redis集群可能會(huì)丟失寫入的第一個(gè)原因是因?yàn)樗褂卯惒綇?fù)制。這意味著在寫入期間會(huì)發(fā)生以下事情:

  • 1、你的客戶端寫給主服務(wù)器節(jié)點(diǎn) B
  • 2、主服務(wù)器節(jié)點(diǎn)B向您的客戶端回復(fù)確認(rèn)。
  • 3、主服務(wù)器節(jié)點(diǎn)B將寫入傳播到它的從服務(wù)器B1,B2和B3。

正如你可以看到主服務(wù)器節(jié)點(diǎn) B 在回復(fù)客戶端之前不等待B1,B2,B3的確認(rèn),因?yàn)檫@會(huì)對(duì)Redis造成嚴(yán)重的延遲損失,所以如果你的客戶端寫入了某些東西,主服務(wù)器節(jié)點(diǎn) B 確認(rèn)寫入,就在將寫入發(fā)送給它的從服務(wù)器節(jié)點(diǎn)存儲(chǔ)之前系統(tǒng)崩潰了,其中一個(gè)從站(沒有收到寫入)可以提升為主站,永遠(yuǎn)丟失寫入。

這與大多數(shù)配置為每秒將數(shù)據(jù)刷新到磁盤的數(shù)據(jù)庫(kù)所發(fā)生的情況非常相似,因?yàn)檫^去的經(jīng)驗(yàn)與傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)有關(guān),不會(huì)涉及分布式系統(tǒng),因此您已經(jīng)能夠推斷這種情況。同樣,通過強(qiáng)制數(shù)據(jù)庫(kù)在回復(fù)客戶端之前刷新磁盤上的數(shù)據(jù),這樣可以提高一致性,但這通常會(huì)導(dǎo)致性能極低。這與Redis Cluster中的同步復(fù)制相當(dāng)。

基本上,性能和一致性之間需要權(quán)衡。

Redis集群在絕對(duì)需要時(shí)也支持同步寫入,通過WAIT命令實(shí)現(xiàn),這使得丟失寫入的可能性大大降低,但請(qǐng)注意,即使使用同步復(fù)制,Redis集群也不可能實(shí)現(xiàn)完全的一致性:總是有可能會(huì)發(fā)生故常,在無法接受寫入的從設(shè)備被選為主設(shè)備的時(shí)候 。

還有另一個(gè)值得注意的情況,Redis集群也將丟失數(shù)據(jù)的寫入,這種情況發(fā)生在網(wǎng)絡(luò)分區(qū)的時(shí)候,客戶端與包含至少一個(gè)主服務(wù)器的少數(shù)實(shí)例隔離。

以A,B,C,A1,B1,C1三個(gè)主站和三個(gè)從站組成的6個(gè)節(jié)點(diǎn)集群為例。還有一個(gè)客戶,我們會(huì)調(diào)用Z1。

分區(qū)發(fā)生后,可能在分區(qū)的一側(cè)有A,C,A1,B1,C1,另一側(cè)有B和Z1。

Z1仍然能夠?qū)懭隑,它也會(huì)接受Z1的寫入。如果分區(qū)在很短的時(shí)間內(nèi)恢復(fù),則群集將正常繼續(xù)。但是,如果分區(qū)使用比較長(zhǎng)的時(shí)間將B1提升為多數(shù)側(cè)分區(qū)的主設(shè)備,則Z1發(fā)送給B的寫入操作將丟失。

請(qǐng)注意,Z1能夠發(fā)送給B的寫入量有一個(gè)最大窗口(maximum window):如果分區(qū)多數(shù)側(cè)有足夠的時(shí)間選擇一個(gè)從設(shè)備作為主設(shè)備,那么少數(shù)側(cè)的每個(gè)主節(jié)點(diǎn)將停止接受寫操作。

這個(gè)時(shí)間值是Redis集群非常重要的配置指令,稱為 node timeout (節(jié)點(diǎn)超時(shí))。

在節(jié)點(diǎn)超時(shí)過后,主節(jié)點(diǎn)被認(rèn)為是失效的,并且可以被其副本之一替換。類似地,節(jié)點(diǎn)超時(shí)過后,主節(jié)點(diǎn)無法感知大多數(shù)其他主節(jié)點(diǎn),它進(jìn)入錯(cuò)誤狀態(tài)并停止接受寫入。

8.redis容錯(cuò)機(jī)制

每個(gè)redis提供了節(jié)點(diǎn)之間相互發(fā)送ping命令,用于測(cè)試每個(gè)節(jié)點(diǎn)的健康狀態(tài),集群中連接正常的節(jié)點(diǎn)收到其他接節(jié)點(diǎn)發(fā)送的ping命令時(shí),會(huì)返回一個(gè)pong字符串

Redis投票機(jī)制:如果一個(gè)節(jié)點(diǎn)A給B發(fā)送ping沒有得到pong返回,那么A就會(huì)通知其他節(jié)點(diǎn)再次給B發(fā)送ping,如果集群中超過一半的節(jié)點(diǎn)給B發(fā)送ping都沒有得到返回,那么B就被坐實(shí)game over了,所以為了避免單點(diǎn)故障,一般都會(huì)為redis的每個(gè)節(jié)點(diǎn)提供了備份節(jié)點(diǎn),B節(jié)點(diǎn)掛掉之后立馬啟動(dòng)B的節(jié)點(diǎn)服務(wù)器。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

原文鏈接:https://blog.csdn.net/qq_43193797/article/details/84643042

延伸 · 閱讀

精彩推薦
  • Redisredis實(shí)現(xiàn)排行榜功能

    redis實(shí)現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實(shí)現(xiàn)排行榜功能,本文就來簡(jiǎn)單的介紹一下如何使用,具有一定的參考價(jià)值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機(jī)制,以滿足故障恢復(fù)和負(fù)載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實(shí)現(xiàn)高可用的...

    李留廣10222021-08-09
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
  • RedisRedis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    Redis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離詳解

    Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離詳解

    Redis的主從架構(gòu),能幫助我們實(shí)現(xiàn)讀多,寫少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離的相關(guān)資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis爬蟲具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
  • RedisRedis的配置、啟動(dòng)、操作和關(guān)閉方法

    Redis的配置、啟動(dòng)、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動(dòng)、操作和關(guān)閉方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡(jiǎn)5312019-11-14
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲高清视频在线 | av网站网址 | 久久中文字幕一区二区 | 欧美视频一区二区 | 国产激情在线看 | 日本一区二区免费在线播放 | 成人午夜精品久久久久久久3d | 国产美女视频自拍 | 亚洲一区二区中文字幕 | 亚洲第一免费播放区 | 久久精品久久综合 | 国产激情偷乱视频一区二区三区 | www.一区二区三区 | t66y最新地址一地址二69 | 午夜窝窝 | 国产亚洲精品美女久久久久久久久久 | 日日爽 | 久久久久久久免费 | 看一级黄色大片 | 最近最新mv字幕免费观看 | 国产一区二区三区视频 | 国产欧美精品区一区二区三区 | 日韩成人在线播放 | 午夜免费视频 | 一级毛片免费视频 | 欧美精品一 | 欧美国产综合 | 亚洲 欧美 综合 | 一区二区电影 | 亚洲欧美激情精品一区二区 | 日本一区二区中文字幕 | 成人精品视频免费 | 亚洲人成在线播放 | 国产一区中文字幕 | 日韩中文字幕视频在线观看 | 国精产品99永久一区一区 | 国外爱爱视频 | 国产日韩一区二区三免费高清 | 一级二级在线观看 | 红桃av一区二区 | 久久久高清|