1. 程式人生 > >Zookeeper入門(一)之概述

Zookeeper入門(一)之概述

今天主要講這麼幾個方面?

1.分散式應用;

2.什麼是Zookeeper;

3.使用Zookkeeper有什麼好處;

 

ZooKeeper是一種分散式協調服務,用於管理大型主機。在分散式環境中協調和管理服務是一個複雜的過程。ZooKeeper通過其簡單的架構和API解決了這個問題。ZooKeeper允許開發人員專注於核心應用程式邏輯,而不必擔心應用程式的分散式特性。

ZooKeeper框架最初是在“Yahoo!"上構建的,用於以簡單而穩健的方式訪問他們的應用程式。 後來,Apache ZooKeeper成為Hadoop,HBase和其他分散式框架使用的有組織服務的標準。 例如,Apache HBase使用ZooKeeper跟蹤分散式資料的狀態。

在進一步深入之前,我們瞭解關於分散式應用的一兩件事情是很重要的。因此,讓我們開始分散式應用的概述的快速討論。

 

Zookeeper官網為:https://zookeeper.apache.org/

一、分散式應用

分散式應用可以在給定時間(同時)在網路中的多個系統上執行,通過協調它們以快速有效的方式完成特定任務。通常來說,對於複雜而耗時的任務,非分散式應用(執行在單個系統中)需要幾個小時才能完成,而分散式應用通過使用所有系統涉及的計算能力可以在幾分鐘內完成。

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

分散式應用有兩部分, Server(伺服器)  Client(客戶端) 應用程式。伺服器應用程式實際上是分散式的,並具有通用介面,以便客戶端可以連線到叢集中的任何伺服器並獲得相同的結果。 客戶端應用程式是與分散式應用進行互動的工具。

 

 

分散式應用的優點

  • 可靠性 - 單個或幾個系統的故障不會使整個系統出現故障。

  • 可擴充套件性 - 可以在需要時增加效能,通過新增更多機器,在應用程式配置中進行微小的更改,而不會有停機時間。

  • 透明性 - 隱藏系統的複雜性,並將其顯示為單個實體/應用程式。

分散式應用的挑戰

  • 競爭條件

    - 兩個或多個機器嘗試執行特定任務,實際上只需在任意給定時間由單個機器完成。例如,共享資源只能在任意給定時間由單個機器修改。

  • 死鎖 - 兩個或多個操作等待彼此無限期完成。

  • 不一致 - 資料的部分失敗。

 

 

二、什麼是Zookeeper

 

Apache ZooKeeper是由叢集(節點組)使用的一種服務,用於在自身之間協調,並通過穩健的同步技術維護共享資料。ZooKeeper本身是一個分散式應用程式,為寫入分散式應用程式提供服務。

 

ZooKeeper提供的常見服務如下 :

 

  • 命名服務 - 按名稱標識叢集中的節點。它類似於DNS,但僅對於節點。

  • 配置管理 - 加入節點的最近的和最新的系統配置資訊。

  • 叢集管理 - 實時地在叢集和節點狀態中加入/離開節點。

  • 選舉演算法 - 選舉一個節點作為協調目的的leader。

  • 鎖定和同步服務 - 在修改資料的同時鎖定資料。此機制可幫助你在連線其他分散式應用程式(如Apache HBase)時進行自動故障恢復。

  • 高度可靠的資料登錄檔 - 即使在一個或幾個節點關閉時也可以獲得資料。

 

分散式應用程式提供了很多好處,但它們也丟擲了一些複雜和難以解決的挑戰。ZooKeeper框架提供了一個完整的機制來克服所有的挑戰。競爭條件和死鎖使用故障安全同步方法進行處理。另一個主要缺點是資料的不一致性,ZooKeeper使用原子性解析。

 

三、ZooKeeper的好處

 

以下是使用ZooKeeper的好處:

 

  • 簡單的分散式協調過程

  • 同步 - 伺服器程序之間的相互排斥和協作。此過程有助於Apache HBase進行配置管理。

  • 有序的訊息

  • 序列化 - 根據特定規則對資料進行編碼。確保應用程式執行一致。這種方法可以在MapReduce中用來協調佇列以執行執行的執行緒。

  • 可靠性

  • 原子性 - 資料轉移完全成功或完全失敗,但沒有事務是部分的。

 

 

 

四、小結

最近因為公司新專案需要用到分散式,不得不提前補充下相關的知識和學習相關的技術。

感覺w3cschool做的還不錯,不過它的這個Zookeeper也不是特別詳細,當然了,入門應該算是沒有問題的

 

本文主要大多內容出自w3cschool:https://www.w3cschool.cn/zookeeper/zookeeper_overview.html