【闲聊杂谈】Redis中的CAP理论
CAP原則又稱CAP定理,指的是在一個分布式系統中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),三者不可得兼。
我們先來區分一下“主備”和“主從”的分別:
主備:客戶端只能訪問主機,不會訪問備機,備機存在的意義就是等主機掛掉以后接替主機;
主從:客戶端既可以訪問主機,也可以訪問從機。
其實在Redis中,既可以使用主備模式,也可以使用主從模式,一般企業中使用主從的比較多。
無論是主備還是主從,一般主機都是包含全量的增刪改查, 那么這個主自己又是一個單點,所以一般都會對主做HA,也就是高可用。?
再強調一遍,高可用不是為了讓主機不出現問題,而是當主機出現問題的時候,集群中會有另外一個去替換主,對外來就好像主是永遠不出問題一樣。那么這個過程其實可以讓人工手動去切換,將備機切換成主機。但人工是這個世界上最不靠譜的,所以需要使用一些程序來解決這個自動的故障轉移。
但是這個程序自己本身也會存在單點故障的問題,所以這個監控的程序也應該是個一變多的集群,假設現在有3個監控去監控一個Redis主機的時候,每個監控給出自己的判斷,就會產生一個很經典的網絡分區問題,也就是我們經常說的腦裂。A監控說掛了,B監控說沒掛,那到底是掛了還是沒掛?
所以,必然不能以每一臺的結果作為判定標準,但也不能以所有監控的結果作為判定,因為統計所有的那么必然就是強一致性,強一致性會破壞可用性,只要有一個連接有問題,就會導致整個監控的結果不可用。所以需要設定一個數,到底判定幾臺的結果比較合理?假設一共有n臺監控:
n % 2 == 0 ? n /2 +1 : (n + 1) / 2(一般在企業中將n取奇數臺)
CAP原則的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。而由于網絡硬件肯定會出現延遲丟包等問題,所以分區容錯性是我們必須需要實現的。所以我們只能在一致性和可用性之間進行權衡。
總結
以上是生活随笔為你收集整理的【闲聊杂谈】Redis中的CAP理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我是如何用百度知道做小众企业站流量推广的
- 下一篇: sqlplus 远程取数不能出现空行和不