【Zookeeper】原始碼分析之伺服器(一)

leesf發表於2017-03-07

一、前言

  前面已經介紹了Zookeeper中Leader選舉的具體流程,接著來學習Zookeeper中的各種伺服器。

二、總體框架圖

  對於伺服器,其框架圖如下圖所示

  

  說明:

  ZooKeeperServer,為所有伺服器的父類,其請求處理鏈為PrepRequestProcessor -> SyncRequestProcessor -> FinalRequestProcessor。

  QuorumZooKeeperServer,其是所有參與選舉的伺服器的父類,是抽象類,其繼承了ZooKeeperServer類。

  LeaderZooKeeperServer,Leader伺服器,繼承了QuorumZooKeeperServer類,其請求處理鏈為PrepRequestProcessor -> ProposalRequestProcessor -> CommitProcessor -> Leader.ToBeAppliedRequestProcessor -> FinalRequestProcessor。

  LearnerZooKeeper,其是Learner伺服器的父類,為抽象類,也繼承了QuorumZooKeeperServer類。

  FollowerZooKeeperServer,Follower伺服器,繼承了LearnerZooKeeper,其請求處理鏈為FollowerRequestProcessor -> CommitProcessor -> FinalRequestProcessor。

  ObserverZooKeeperServer,Observer伺服器,繼承了LearnerZooKeeper。

  ReadOnlyZooKeeperServer,只讀伺服器,不提供寫服務,繼承QuorumZooKeeperServer,其處理鏈的第一個處理器為ReadOnlyRequestProcessor。

三、總結

  本篇只簡單介紹了伺服器的繼承關係,之後會詳細分析不同伺服器的行為和責任,謝謝各位園友的觀看~

相關文章