二級建造師注冊需要什么材料二級建造師注冊前先要準備的步驟
根據如上思維導圖,我們來展開對Zookeeper的基本的一些概念解釋。
一、集群角色
Leader
Leader服務器是整個Zookeeper集群工作機制中的核心
Follower
Follower服務器是Zookeeper集群狀態的跟隨者
Observer
Observer服務器充當一個觀察者的角色Leader,Follower 設計模式;Observer 觀察者設計模式
二、會話
會話是指客戶端和ZooKeeper服務器的連接,ZooKeeper中的會話叫Session,客戶端靠與服務器建立一個TCP的長連接;來維持一個Session,客戶端在啟動的時候首先會與服務器建立一個TCP連接,通過這個連接,客戶端能夠通過心跳檢測與服務器保持有效的會話,也能向ZK服務器發送請求并獲得響應。
三、數據節點
Zookeeper中的節點有兩類:
集群中的一臺機器稱為一個節點
數據模型中的數據單元Znode,分為持久節點和臨時節點
Zookeeper的數據模型是一棵樹,樹的節點就是Znode,Znode中可以保存信息。
如下圖所示:
ZK大致數據結構跟上圖是一致的,如上圖所示這個圖就像一棵樹,這個樹有個根節點,然后其下有些子節點,然后每個子節點其下又可以有子節點,大多數的開發就是跟zk的這些數據節點打交道,來讀寫這些數據節點,來完成任務。
四、版本
ZK中的版本,是用來記錄節點數據或者是節點的子節點列表或者是權限信息的修改次數,注意是這里是修改次數。如果一個節點的version是1,那就代表說這個節點從創建以來被修改了一次,那么這個版本怎么用呢,典型的我們可以利用版本來實現分布式的鎖服務。我們知道在數據庫中,一般有兩種鎖,一種是悲觀鎖一種是樂觀鎖。
悲觀鎖
悲觀鎖又叫悲觀并發鎖,是數據庫中一種非常嚴格的鎖策略,具有強烈的排他性,能夠避免不同事務對同一數據并發更新造成的數據不一致性,在上一個事務沒有完成之前,下一個事務不能訪問相同的資源,適合數據更新競爭非常激烈的場景;
樂觀鎖
相比悲觀鎖,樂觀鎖使用的場景會更多,悲觀鎖認為事務訪問相同數據的時候一定會出現相互的干擾,所以簡單粗暴的使用排他訪問的方式,而樂觀鎖認為不同事務訪問相同資源是很少出現相互干擾的情況,因此在事務處理期間不需要進行并發控制,當然樂觀鎖也是鎖,它還是會有并發的控制!對于數據庫我們通常的做法是在每個表中增加一個version版本字段,事務修改數據之前先讀出數據,當然版號也順勢讀取出來,然后把這個讀取出來的版本號加入到更新語句的條件中,比如,讀取出來的版本號是1,我們修改數據的語句可以這樣寫,update 某某表 set 字段一=某某值 where id=1 and version=1,那如果更新失敗了說明以后其他事務已經修改過數據了,那系統需要拋出異常給客戶端,讓客戶端自行處理,客戶端可以選擇重試。鎖,ZK中版本有類式的作用。
ZK的版本類型有三種:version cversion aversion
五、Watcher
Watcher我們可以理解為他是一個事件監聽器
ZooKeeper允許用戶在指定節點上注冊一些Watcher,當數據節點發生變化的時候,ZooKeeper服務器會把這個變化的通知發送給感興趣的客戶端。
兩個客戶端都在zookeeper集群中注冊了watcher(事件監聽器),那么當zk中的節點數據發生變化的時候,zk會把這一變化的通知發送給客戶端,當客戶端收到這個變化通知的時候,它可以再回到zk中,去取得這個數據的詳細信息。
六、ACL權限控制
ACL是Access Control Lists 的簡寫, ZooKeeper采用ACL策略來進行權限控制,有以下權限:
CREATE: 創建子節點的權限
READ: 獲取節點數據和子節點列表的權限
WRITE: 更新節點數據的權限
DELETE: 刪除子節點的權限
ADMIN: 設置節點ACL的權限
上面的權限有點類似我們信息系統的權限管理,我們在開發系統的時候一般也會對數據做這些權限管理,一個zk集群可能會服務很多的業務,尤其是一些大公司,zk集群的節點中會保存重要的信息,那么這些信息通常只能對一部分的訪問者開放,通過acl我們可以對某些節點的訪問進行授權,從而來保證數據的安全。
來源:開源技術社區
邀請加入hadoop學習、交流、答疑群:361654649
免責聲明: 本站提供的任何內容版權均屬于相關版權人和權利人,如有侵犯你的版權。 請來信指出,我們將于第一時間刪除! 所有資源均由免費公共網絡整理而來,僅供學習和研究使用。請勿公開發表或 用于商業用途和盈利用途。
本文鏈接:http://www.whxzws.com/erjian/34659.html
發表評論