Redis-高併發篇
越來越多的企業選擇使用redis來管理快取,而在高併發時,單臺機器的讀取很明顯有些弱,這個時候就需要增添機器。本篇主要講述redis的叢集。
redis叢集
在redis叢集中,每一個節點都存有整個叢集中所有的主節點和從節點資訊。
判斷節點掛掉
在叢集中,如果半數以上的節點去ping一個節點不通,叢集就認為它掛掉了。
投票機制
在叢集中,如果主節點A和他的所有從節點都掛掉了,那麼叢集會進入fail狀態。如果半數以上的主節點掛掉了,叢集也會進入到fail狀態。
ps : fail狀態就是叢集掛掉了。。
redis叢集掛掉的情況:
1)任意master掛掉,且該master所有子節點也掛掉;
2)半數master掛掉。
redis的叢集方案
對於redis的叢集方案,現階段認可的是多主多從
方案。
原因:1)多主節點可以防止部分節點壞掉;
2)如果有某個主節點壞掉了,其從節點會頂替上去;
3)主寫從讀,單一功能,效率提高。
redis同步
在redis的同步中,主節點同步給其中所有的從節點。
主從同步
runID:每一個redis節點都有一個runID,類似於身份標識。
offset:複製偏移量。在master和slave中都會有這個量。master傳輸出去N個位元組,master的offset增加N;slave收到N個位元組,slave的offset增加N。
複製積壓緩衝區:維護在master中一個FIFO(先進先出)佇列。在master每次向外傳輸時,也會向該佇列中傳輸。該佇列中會有對應的偏移量和其對應的位元組記錄。
slave有無master的runid(身份ID):無,即第一次;有,則不是第一次。
如果是第一次請求,slave全量複製master,並獲取runid。
如果不是第一次請求,比較runid,相同再比較複製偏移量,若偏移量相同,繼續傳輸;
若偏移量不同,從複製積壓緩衝區裡去取對應的複製偏移量之後的資料,有就從複製積壓緩衝區裡傳輸複製,沒有就完整複製。
runid不一樣,視為第一次請求。
參考:redis叢集設計原理。
主從同步原理。
相關文章
- 高併發設計筆記(續篇)筆記
- 高併發後端設計-限流篇後端
- 聊一聊高併發高可用那些事 - Kafka篇Kafka
- 【高併發】Redis如何助力高併發秒殺系統,看完這篇我徹底懂了!!Redis
- [分散式][高併發]高併發架構分散式架構
- 【多執行緒與高併發 2】volatile 篇執行緒
- 高併發(鎖)
- OpenResty高併發REST
- Nginx 高階篇(十)並行 併發 單執行緒(廢話篇 )Nginx並行執行緒
- 什麼是高併發,怎麼解決高併發
- Java 高併發思路Java
- 高併發技術
- 高併發和 keepalived
- Go 高階併發Go
- 高併發架構架構
- Java併發工具篇Java
- 併發數、併發以及高併發分別是什麼意思?
- 「Golang成長之路」併發之併發模式篇Golang模式
- Redis如何防止高併發?Redis
- 高併發優化方向優化
- 高併發葵花寶典
- Python 如果做到高併發?Python
- Java基礎-併發篇Java
- 搭建高併發、高可用的系統
- 【高併發】高併發環境下如何優化Tomcat效能?看完我懂了!優化Tomcat
- 【最完整系列】Redis-結構篇-字典Redis
- (四)Java高併發秒殺API之高併發優化JavaAPI優化
- go併發之goroutine和channel,併發控制入門篇Go
- 如何設計高併發介面?
- Golang Channel 高併發的初始Golang
- 高併發設計筆記筆記
- 分析如何支撐高併發?
- Nginx Ingress 高併發實踐Nginx
- 【高併發】深入解析Callable介面
- 高併發之ReentrantLock、CountDownLatch、CyclicBarrierReentrantLockCountDownLatch
- 高併發之Phaser、ReadWriteLock、StampedLock
- 高併發之Semaphore、Exchanger、LockSupport
- RabbitMQ/高併發面試題MQ面試題