新聞中心
Redis是一個全功能的高級NoSQL數(shù)據(jù)庫,具有強大的功能,占用內(nèi)存少,數(shù)據(jù)操作速度快,它是目前非常流行的NoSQL數(shù)據(jù)庫之一。Redis的設(shè)計出發(fā)點是能夠快速響應(yīng)數(shù)據(jù),所以Redis擁有非常出色的性能特性。然而,Redis卻有一個致命的弱點——腦裂現(xiàn)象,因為這種現(xiàn)象導(dǎo)致的數(shù)據(jù)的應(yīng)用形式會導(dǎo)致多個數(shù)據(jù)庫狀態(tài)出現(xiàn)不一致,從而破壞數(shù)據(jù)庫的完整性,使得系統(tǒng)操作變得不可靠。

Redis利用了一種叫做選舉的機制來處理腦裂問題,通過建立一種獨立的選舉機制,讓每個節(jié)點都掌握相同的數(shù)據(jù),從而避免因不一致的數(shù)據(jù)導(dǎo)致的腦裂現(xiàn)象的發(fā)生。
Redis的選舉方案使用的是raft算法,Raft在每個節(jié)點上都要建立一個獨立的任期計時器,來檢測是否catch up 到新任期,當(dāng)所有節(jié)點都進入新任期之后,Redis重新選舉出一個作為LEADER 的節(jié)點,進行一致性驗證,當(dāng)一致性驗證完成后,Redis重新開始新一輪的任期,整個過程有效地避免了腦裂所帶來的數(shù)據(jù)不一致危害。
當(dāng)Redis集群收到新的數(shù)據(jù)更新請求時,leader會將這個更新請求廣播到其他各節(jié)點,所有的節(jié)點在接收到請求后就會進行數(shù)據(jù)的更新,leader節(jié)點在接收到多個節(jié)點的確認后,這個請求才算是最終成功,避免了數(shù)據(jù)的不一致性。
Redis的腦裂的選舉之路采用的是Raft算法的機制,它實現(xiàn)了每個節(jié)點的數(shù)據(jù)保持一致,從而有效地避免了腦裂現(xiàn)象,在一致性與可靠性方面,Redis得到了改善。
#!/usr/bin/env python
import redis
# connect to Redis
r = redis.Redis(host="localhost", port="6379")
# set up raft leader
leader = r.set("raft_leader", "127.0.0.1")
# set up raft followers
followers = r.sadd("raft_followers", "127.0.0.2", "127.0.0.3", "127.0.0.4")
# set up raft term
term = r.set("raft_term", 1)
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(biāo)準(zhǔn)機房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
網(wǎng)站標(biāo)題:Redis腦裂的選舉之路(redis選舉腦裂)
分享鏈接:http://m.5511xx.com/article/djejdhs.html


咨詢
建站咨詢
