天天看點

什麼是單點故障

什麼是單點故障

  • 通常分布式系統采用主從模式,一個主機連接配接多個處理節點,主節點負責分發任務,而子節點負責處理業務,當主節點發生故障時,會導緻整個系統發故障,我們把這種故障叫做單點故障。

傳統解決單點故障問題

  • 一般會多加一個備用主節點,備用主節點會發送一個ping包給主節點,主節點收到這個ping包後會給備用主節點相應一個ack位元組包作為回應,備用主節點通過是否收到ack位元組包來判斷主節點是否正常運作,沒有收到則則認為主節點已經故障并頂替主節點的位置。
  • 不過當出現網絡震蕩的時候導緻主節點接受資料時丢失一部分資料也就是少包,會導緻備用子節點認為主節點已經故障而去頂替主節點而導緻多主的現象,這時就要加入一個分布式鎖的概念。
  • 分布式鎖是為了控制多個程序通路同一資源時,這個資源希望被有序通路,主要控制程序的加鎖,解鎖,鎖逾時。讓多個多個程序有序通路伺服器。
  • 分布式協調可以解決多個程序的同步控制,主要核心是實作分布式鎖
  • zookeeper是分布式協調服務,是為了實作分布式鎖,的結構是樹狀結構,子節主要由四個部分組成,節點的引用,資料,權限,中繼資料組成。

Zookeeper實作服務注冊與發現呢

  • 分布式鎖主要由Zookeeper實作,兩個主節點會在Zookeeper注冊一個節點,注冊完後編号最小的節點就會被Zookeeper任命為主節點,而其他的節點會被加鎖而被阻塞作為備用主節點。Zookeeper會給主節點不定時發送ping包,主節點會給Zookeeper相應的包,當能夠收到者認為主節點正常,當接收不了則會給下一個備用子節點發送資訊任命為主節點,而前面的主節點如果是因為故障而給Zookeeper發送不了響應的包則會被Zookeeper直接删除,如果因為網絡故障或其他不是本身導緻發送不了響應的包給Zookeeper時,也會被Zookeeper從清單裡删除,但是這個主節點是正常的還可以繼續使用,Zookeeper會讓這個節點作為重生節點重新注冊成為備用的主節點。