1. 程式人生 > >8.1.Zookeeper概念簡介

8.1.Zookeeper概念簡介

用戶 font width 有序 臨界資源 nbsp 其他 ID alt

1.分布式系統概述

理解1:

分布式系統:分布式系統是針對一個大系統而言,將一個大系統分成多個子系統,即多個工程系統。

我們先看下傳統的系統模式:

技術分享圖片 技術分享圖片

  傳統的系統模式將多個功能模塊全部在一個工程中寫完,模塊之間耦合度太高,其中一個升級其他都得升級,把系統按照模塊拆分成多個子系統。即在項目中建

立多個工程,把模塊拆分,使用接口通信,降低模塊之間的耦合度。可以靈活的進行分布式部署。

理解2:

  技術分享圖片

  圖中有三臺機器,每臺機器各跑一個應用程序。然後我們將這三臺機器通過網絡將其連接起來,構成一個系統來為用戶提供服務,對用戶來說這個系統

的架構是透明的,他感覺不到我這個系統是一個什麽樣的架構。那麽我們就可以把這種系統稱作一個分布式系統

  分布式應用可以在給定時間(同時)在網絡中的多個系統上運行,通過協調它們以快速有效的方式完成特定任務。通常來說,對於復雜而耗時的任務,

非分布式應用(運行在單個系統中)需要幾個小時才能完成,而分布式應用通過使用所有系統涉及的計算能力可以在幾分鐘內完成。

  通過將分布式應用配置為在更多系統上運行,可以進一步減少完成任務的時間。分布式應用正在運行的一組系統稱為集群,而在集群中運行的每臺機器

被稱為節點。分布式應用有兩部分, Server(服務器) Client(客戶端) 應用程序。服務器應用程序實際上是分布式的,並具有通用接口,以便客戶端

可以連接到集群中的任何服務器並獲得相同的結果。 客戶端應用程序是與分布式應用進行交互的工具。

2.分布式協調技術  

  分布式協調技術主要用來解決分布式環境當中多個進程之間的同步控制,讓他們有序的去訪問某種臨界資源,防止造成"臟數據"的後果。

  在分布式系統中如何對進程進行調度,假設在第一臺機器上掛載了一個資源,然後這三個物理分布的進程都要競爭這個資源,但我們又不希望他們同時

進行訪問,這時候我們就需要一個協調器,來讓他們有序的來訪問這個資源。這個協調器就是我們經常提到,比如說"進程-1"在使用該資源的時候,會先去

獲得鎖,"進程1"獲得鎖以後會對該資源保持獨占,這樣其他進程就無法訪問該資源,"進程1"用完該資源以後就將鎖釋放掉,讓其他進程來獲得鎖,那麽通過這

鎖機制,我們就能保證了分布式系統中多個進程能夠有序的訪問該臨界資源。那麽我們把這個分布式環境下的這個鎖叫作分布式鎖

。這個分布式鎖也就是我們

分布式協調技術實現的核心內容,那麽如何實現這個分布式呢?

2.1 分布式鎖的實現者 

  分布式協調技術方面做得比較好的就是Apache的ZooKeeper,他是分布式鎖的實現者之一

3.ZooKeeper概述 

  Apache Zookeeper是一個分布式協調服務;就是為用戶的分布式應用程序提供協調服務,並通過穩健的同步技術維護共享數據

    A、zookeeper是為別的分布式程序服務的

    B、Zookeeper本身就是一個分布式程序(只要有半數以上節點存活,zk就能正常服務)

    C、Zookeeper所提供的服務涵蓋:主從協調、服務器節點動態上下線、統一配置管理、分布式共享鎖、統一名稱服務……

    D、雖然說可以提供各種服務,但是zookeeper在底層其實只提供了兩個功能:

      管理(存儲,讀取)用戶程序提交的數據;

      並為用戶程序提供數據節點監聽服務;

 整個集群中各個節點的角色是不相同的,各自有各自的職責,但是必須相互協作起來完成整個功能。

4.ZooKeeper應用場景

  

8.1.Zookeeper概念簡介