回覆列表
  • 1 # 菜菜菜鳥

    如果系統需要具有容災能力,即在機器發生故障時,系統的可用性基本不受影響,那麼系統中所有資料至少需要有兩個以上的副本,並且系統的處理能力要有一定的冗餘,需要保證在故障機器不能提供服務時,系統不會過載。一般來說,資料的副本數量越多,系統的處理能力越冗餘,系統的容災能力越強。更進一步,還需要考慮物理部署,透過把資料的不同副本分佈在不同機架、不同機房、甚至是不同城市,來把系統的容災能力提升到不同的級別。

    配置運維中心會監控系統儲存層所有節點的狀態,儲存節點會定時上報心跳,如果配置運維中心在一段時間未收到某個儲存節點的心跳,則把該節點的狀態標記為故障,並進行故障處理流程。首先需要禁止故障節點繼續提供服務,即通知介面層不再把客戶端請求轉發的故障節點,如果故障節點是主節點,配置運維中心會查詢並對比所有備節點的同步進度,選擇資料最新的備節點,將其切換為主節點。由於所有備節點也會記錄Binlog,所以在切換為主節點之後,可以直接向其它備節點進行同步。這裡的主備切換可能會導致少量的資料丟失,如果業務不能容忍這樣的資料丟失,則需要使用其它強一致性的方案。

    在容災切換之後,還需要進行故障節點的恢復,以便系統恢復到正常的狀態。故障機器恢復後,就會進入宕機恢復流程,無論故障節點在故障前是主節點還是備節點,故障恢復後的角色都是備節點。首先待恢復節點需要把機器上所有的資料清空;接著主節點會把當前所有VNode的SyncSeq複製到待恢復節點,並且全量複製所有資料;在全量複製完成之後,開始進行資料同步,由前面的同步機制可知,同步的SyncSeq會從之前複製到待恢復節點的狀態開始追趕;在主節點和待恢復節點之間的SyncSeq差異縮小到正常範圍時,待恢復節點的角色就變為備節點,開始提供服務。

  • 中秋節和大豐收的關聯?
  • 為什麼李治和武則天都會忌憚長孫無忌?