自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis中主從、哨兵、分片集群入門篇

存儲 存儲軟件 Redis
redis的應(yīng)用場景很多,不管是在數(shù)據(jù)存儲還是分布式鎖等方面,本篇文章主要對主從、哨兵、分片集群做一個(gè)簡單的分析,不會講的太深。

 redis的應(yīng)用場景很多,不管是在數(shù)據(jù)存儲還是分布式鎖等方面,本篇文章主要對主從、哨兵、分片集群做一個(gè)簡單的分析,不會講的太深。

[[275757]]

主從模式

主從模式的應(yīng)用場景有點(diǎn)類似于數(shù)據(jù)庫的主從集群,主從往往是為了讀寫分離、backup 等目的才使用的,所謂主從模式簡單的說就是有多個(gè)節(jié)點(diǎn),里面包含主節(jié)點(diǎn)和從節(jié)點(diǎn),結(jié)構(gòu)如下圖:

 

Redis中主從、哨兵、分片集群入門篇

 

從節(jié)點(diǎn)在保持連接后每隔一個(gè)時(shí)間節(jié)點(diǎn)會主動的和主節(jié)點(diǎn)通信并發(fā)送同步請求,而后進(jìn)行同步。

 

Redis中主從、哨兵、分片集群入門篇

 

其實(shí)在整個(gè)流程中,最需要主要的就是數(shù)據(jù)間的同步,主要的同步方式有兩種也就是全量同步和增量同步。

全量同步:全量同步一般使用在從節(jié)點(diǎn)剛接入主節(jié)點(diǎn)時(shí)進(jìn)行全量復(fù)制,當(dāng)然你也可以根據(jù)你的需求進(jìn)行主動的全量同步

增量同步:Redis增量復(fù)制是指從節(jié)點(diǎn)初始化后開始正常工作時(shí)主服務(wù)器發(fā)生的寫操作同步到從服務(wù)器的過程。 增量復(fù)制的過程主要是主服務(wù)器每執(zhí)行一個(gè)寫命令就會向從服務(wù)器發(fā)送相同的寫命令,從服務(wù)器接收并執(zhí)行收到的寫命令,一般使用緩沖區(qū)、隊(duì)列(先進(jìn)先出)等方式輔助進(jìn)行增量的同步。

哨兵模式

哨兵模式是為了保證redis的高可用產(chǎn)生的架構(gòu),簡單地說就是通過構(gòu)建1個(gè)或多個(gè)哨兵對節(jié)點(diǎn)進(jìn)行監(jiān)控,如果master發(fā)生故障下線之后,哨兵之間會進(jìn)行投票,在2.8之后使用的是Raft算法進(jìn)行master選舉,關(guān)于這個(gè)算法其實(shí)這個(gè)算法也應(yīng)用于zookeeper和某些網(wǎng)絡(luò)拓?fù)渲?,簡單說就是在選舉的過程可通信節(jié)點(diǎn)達(dá)成共識后那個(gè)投票選舉master,而后進(jìn)行故障轉(zhuǎn)移操作。

 

Redis中主從、哨兵、分片集群入門篇

 

哨兵是作為一個(gè)進(jìn)程單獨(dú)運(yùn)行在redis中,哨兵之間也是通過該進(jìn)程進(jìn)行通信的,這一點(diǎn)和zookeeper的原理也是類似的,假設(shè)一個(gè)6節(jié)點(diǎn)3個(gè)哨兵的集群的結(jié)構(gòu)應(yīng)該如下圖:

 

Redis中主從、哨兵、分片集群入門篇

 

那么哨兵是如何監(jiān)控master下線的呢?

前面也有看到哨兵之間會進(jìn)行集群的檢測和哨兵之間的互相監(jiān)測,但是哨兵不用做什么配置,因?yàn)樯诒擅畹睦昧薽aster的發(fā)布/訂閱機(jī)制去自動發(fā)現(xiàn)其它也監(jiān)控了統(tǒng)一master的sentinel節(jié)點(diǎn),在監(jiān)測master方面一般分為兩種:

主觀下線(Subjectively Down, 簡稱 SDOWN)指的是單個(gè) Sentinel 實(shí)例對服務(wù)器做出的下線判斷。

客觀下線(Objectively Down, 簡稱 ODOWN)指的是多個(gè) Sentinel 實(shí)例在對同一個(gè)服務(wù)器做出 SDOWN 判斷, 并且通過命令互相交流之后, 得出的服務(wù)器下線判斷。 一個(gè) Sentinel 可以通過向另一個(gè) Sentinel 發(fā)送命令來詢問對方是否認(rèn)為給定的服務(wù)器已下線。

分片集群

在上面的部分不管redis主從,還是高可用的 sentinel 哨兵模式。我們所做的這些工作只是保證了數(shù)據(jù)備份以及高可用,目前為止我們的程序一直都是向1臺redis寫數(shù)據(jù),其他的redis只是備份而已。在實(shí)際使用中一般分片集群使用較多,我為什么要特意強(qiáng)調(diào)是分片集群呢,其實(shí)上面所說的主從和哨兵都是集群但是他們都是備份式的集群,實(shí)際數(shù)據(jù)是由一臺進(jìn)行控制的,所謂分片其實(shí)是將不同的數(shù)據(jù)按照一定的分布規(guī)則分布在不同的機(jī)器上

 

Redis中主從、哨兵、分片集群入門篇

 

在redis中,我們的應(yīng)用在存取數(shù)據(jù)的時(shí)候需要根據(jù)一定的算法(一致性hash)進(jìn)行計(jì)算和存取 ,那么在redis中如何實(shí)現(xiàn)數(shù)據(jù)分片的呢? 首先Redis至少存在三個(gè)數(shù)據(jù)分片,每個(gè)分片稱為master,假設(shè)整個(gè)cluster有N個(gè)節(jié)點(diǎn),那么每個(gè)節(jié)點(diǎn)都和其他N-1個(gè)節(jié)點(diǎn)保持連接和心跳,節(jié)點(diǎn)之間相互通信主要確認(rèn)節(jié)點(diǎn)是否存活、節(jié)點(diǎn)的數(shù)據(jù)版本、投票選擇新的master等

 

Redis中主從、哨兵、分片集群入門篇

 

那么我們最終的集群結(jié)構(gòu)大致如下:

 

Redis中主從、哨兵、分片集群入門篇

 

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-02-11 08:41:19

WindowsRedis集群

2023-10-26 07:47:53

Redis哨兵集群

2020-04-14 21:12:42

Redis集群Linux

2011-01-18 17:00:31

Postfix入門

2017-09-12 10:26:47

springbootmaven結(jié)構(gòu)

2009-06-09 13:02:30

NetBeans使用教程

2020-11-16 10:19:33

Java

2016-09-06 17:43:12

SwiftCloudKit開發(fā)

2023-09-27 06:26:07

2024-12-09 00:00:09

2021-04-01 08:50:54

SentinelRedis 集群原理

2022-03-28 09:31:58

for循環(huán)語句

2022-01-27 09:35:45

whiledo-while循環(huán)Java基礎(chǔ)

2020-11-13 07:22:46

Java基礎(chǔ)While

2012-01-17 10:47:07

jQuery

2015-07-30 09:43:10

獨(dú)立游戲開發(fā)入門

2023-03-15 08:30:37

2022-07-06 07:57:37

Zookeeper分布式服務(wù)框架

2021-12-21 09:02:31

Matplotlib Python可視化

2020-11-09 10:19:05

Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號