Redis集群拆分原則之AKF


當我們搭建集群的時候,首先要想明白需要解決哪些問題,搞清楚這個之前,想想單節點、單實例、單機有哪些問題?

  • 單點故障
  • 容量有限
  • 可支持的連接有限(性能不足)
  • ......

為了解決這些問題,我們需要對服務器進行集群,一變多,具體怎們擴充服務器呢?

這兒引入一個概念,微服務設計原則之一——AKF原則

微服務拆分原則之AKF

首先來看單節點的單點故障這個問題,既然單節點容易掛,那么就可以進行復制,一變多,這兒設計到三個概念,主從、主主、主備,也是三種方式,簡單來說,主主相當於多台服務器同時對外提供讀寫:

主從,主機可以讀寫,但是一般只對外提供寫,從機對外提供讀:

主備,主機提供讀寫,備機不對外提供服務,當主機掛了的時候,備機通過選舉產生主機對外提供服務。

X軸拆分

可以看到的是,這幾種拆分一台機器可以看成另一台機器的鏡像,基本具有全量數據,這種拆分模式就是AKF拆分模式之一:X軸拆分

上圖就是AKF拆分示意圖,為了解決單點故障,所以弄幾台全量數據的機器做備份,例如之前說到的主主、主備等,特點是任何兩台包含的數據是差不多的,一台可以看成另一台的鏡像。

Y軸拆分

這時候又有新的問題,例如一台服務器中,可能某些功能被頻繁訪問,涉及到的數據頻繁讀寫,其他數據基本不怎么訪問,這時候可以將這部分數據獨立出來,也就是根據功能、業務繼續拆分服務器,這種拆解就是AFK中的Y軸拆分

特點是Y軸縱向來看不同的Redis負責的功能是不同的,也就是所包含的數據也是不同的,另外僅僅擴展出一個Y軸上的業務服務器,又可能會存在單點問題,所以可以結合AFK的X軸拆分原則,繼續對剛拆分的Y軸上的點進行X軸拆分。

Z軸拆分

在上面的AFK原則X-Y拆分之后,對服務器顯示做了主從主備復制,然后做了業務拆分,不同的Redis負責不同的業務請求,這時候還會有一個新的問題,例如對於Y軸上一個Redis,它負責某一樣業務,但是這天這個業務的數據訪問巨大,賊大,那就只好對數據請求進行AFK的Z軸拆分,例如先分析下數據請求的情況,然后根據訪問來源,分為北京的、上海的,這樣不同的Redis雖然是負責不同的數據,但是負責的業務是一樣的。AFK拆分圖示:

AFK總結

X軸拆分:水平復制,就是講單體系統多運行幾個實例,做集群加負載均衡的模式,主主、主備、主從。

Y軸拆分:基於不同的業務拆分

Z軸拆分:基於數據拆分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM