1. 程式人生 > >zookeeper學習(一)_簡介

zookeeper學習(一)_簡介

上篇文章 我們已經安裝上了zookeeper,也簡單的體驗了一把,但是如果讓你給別人介紹下zookeeper,可能也是說不出來。本篇文章就參考了網上各位優秀博主的文章,整理出自己更能理解的內容

優秀博文

    1. sunddenly的zookeeper系列

http://www.cnblogs.com/sunddenly/category/620563.html

    1. 程式設計師小灰zookeeper系列

https://mp.weixin.qq.com/s/Gs4rrF8wwRzF6EvyrF_o4A

簡介

Zookeeper是一種分散式協調服務

之前的工作都是單機部署應用,並沒有接觸過zookeeper,現在 的新公司動不動就叢集,什麼主從,分散式,渣渣的我聽得一臉矇蔽,專案中也使用zookeeper進行應用配置以及使用了elasticjob。

應用場景

  • 1.分散式鎖(利用Zookeeper的臨時順序節點,可以輕鬆實現分散式鎖)
  • 2.服務註冊和發現
  • 3.共享配置和狀態資訊

資料模型

Zookeeper的資料模型如同檔案系統的目錄。

Zookeeper的資料儲存是基於節點,這種節點叫做Znode。

data:

Znode儲存的資料資訊。

ACL:

記錄Znode的訪問許可權,即哪些人或哪些IP可以訪問本節點。

stat:

包含Znode的各種元資料,比如事務ID、版本號、時間戳、大小等等。

child:

當前節點的子節點引用

Zookeeper是為讀多寫少的場景所設計。Znode並不是用來儲存大規模業務資料,而是用於儲存少量的狀態和配置資訊,每個節點的資料最大不能超過1MB。

Zookeeper的基本操作和事件通知

Zookeeper包含了哪些基本操作呢?這裡列舉出比較常用的API:

  • create 建立節點

  • delete 刪除節點

  • exists 判斷節點是否存在

  • getData 獲得一個節點的資料

  • setData 設定一個節點的資料

  • getChildren 獲取節點下的所有子節點

這其中,exists,getData,getChildren屬於讀操作。Zookeeper客戶端在請求讀操作的時候,可以選擇是否設定Watch。

Watch是什麼意思呢?

我們可以理解成是註冊在特定Znode上的觸發器。當這個Znode發生改變,也就是呼叫了create,delete,setData方法的時候,將會觸發Znode上註冊的對應事件,請求Watch的客戶端會接收到非同步通知。

具體互動過程如下:

1.客戶端呼叫getData方法,watch引數是true。服務端接到請求,返回節點資料,並且在對應的雜湊表裡插入被Watch的Znode路徑,以及Watcher列表。

2.當被Watch的Znode已刪除,服務端會查詢雜湊表,找到該Znode對應的所有Watcher,非同步通知客戶端,並且刪除雜湊表中對應的Key-Value。

相關推薦

zookeeper學習()_簡介

上篇文章 我們已經安裝上了zookeeper,也簡單的體驗了一把,但是如果讓你給別人介紹下zookeeper,可能也是說不出來。本篇文章就參考了網上各位優秀博主的文章,整理出自己更能理解的內容 優秀博文 sunddenly的zookeeper系列 http://www.cnblogs.com/su

ZooKeeper學習()Zookeeper簡單介紹

分散式系統:是若干獨立計算機的集合,這計算機對使用者來說就像單個相關係統。        (1)提升效能和併發,操作被分發到不同的分片,相互獨立   (2)提升系統的可用性,即使部分分片不能用,其他分片不會受到影響    

PlantUML學習簡介&Intellij IDEA的整合

  問:作為一個程式猿,相信你在工作中難以避免用到UML圖,那麼繪製UML的工具,你選擇的是什麼?Visio?Rose?還是億圖?又或者PowerDesign?   答:NO,我不想再拖拽每個元件來畫,還要手動調整位置,作為一個程式猿,當然要用程式碼

WebSocket學習()——webSocket簡介

之前用過java的socket實現過一個聊天室,但其實WebSocket和socket並不是一個東西。 我們知道tcp連線是建立在三次握手的機制上,web的核心是http協議,http協議是建立在TCP協議之上的一種應用 tcp連線和http連線 tcp連線:TCP連線一旦

Zookeeper學習筆記簡介

有序 多個 不同 簡介 線程 font 互斥 等待 檢測 一 Zookeeper使命 關於Zookeeper的討論都圍繞著一條主線,它可以在分布式系統中協作多個任務。一個協作任務是指包含多個進程的任務。這個任務可以是為了協作或者是為了管理競爭。協作意味著多個進

zookeeper入門學習()

角色 延長 rop ado lower 不能 分享 視圖 服務器端 概述:   ZooKeeper是Hadoop的開源子項目(Google Chubby的開源實現),它是一個針對大型分布式系統的可靠協調系統,提供的功能包括:配置維護、命名服務、分布式同步、組服務等。  

【轉】Nodejs學習筆記()--- 簡介及安裝Node.js開發環境

ack 目錄 javascrip 難度 時間 網站開發 clas jetbrains 常用 目錄 學習資料 簡介 安裝Node.js npm簡介 開發工具 Sublime Node.js開發環境配置 擴展:安裝多版本管理器 學習資料   1.深入淺出Node.j

Entity Framework學習筆記——EF簡介篇文章告訴你什麽是EF)

比較 編程 ast 定義 .aspx b2c 文件創建 發送 ase Entity Framework是以ADO.NET為基礎,面向數據的“實體框架”。以下簡稱EF。 它利用了抽象化數據結構的方式,將每個數據庫對象都轉換成應用程序對象 (entity),

Python學習筆記_零零:Python基本介紹

交易 社交 數據 lips engine 探討 認識 hive 初學者 Python介紹 Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他

MyBatis學習簡介及入門案例

結果集 提交 ace 支持 nag 實例 exce 空間 cti 1.什麽是MyBatis?   MyBatis是一個支持普通SQL查詢,存儲過程,和高級映射的優秀持久層框架。MyBatis去掉了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可

python學習筆記(簡介

程序 應用 shift 聖誕節 其他 .exe 一點 交互 例如   Python是著名的“龜叔”Guido van Rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的一個編程語言。   優點: Python為我們提供了非常完善的基礎代碼庫 Python的代碼

XML學習()——xml內容簡介

XML 十六 就會 你好 1.0 文件 什麽是 bsp 聲明 一、什麽是XML xml全稱為Extensible Markup Language,意思是可擴展的標記語言。XML語法上和HTML比較相似,但是HTML中的元素是固定的,而XML的標簽是可以用戶定義的。 二、

sharding-jdbc源碼學習簡介

好處 png 表達 連接 esql 部署 中間 構圖 擴展 背景 對於大型的互聯網應用來說,數據庫單表的記錄行數可能達到千萬級甚至是億級,並且數據庫面臨著極高的並發訪問。采用Master-Slave復制模式的MySQL架構,只能夠對數據庫的讀進行擴展,而對數據庫的寫入操作

跟我學習springmvc+dubbo-簡介(

springmvc dubbo zookeeper j2ee mybatis 摘要: Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才

)跟我學習springmvc+dubbo-簡介

monit 序列 是個 zookeeper tis redis active 調用本地 能夠 摘要: Dubbo是一個分布式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不

吳恩達機器學習筆記_單變量線性回歸

gre ima 梯度下降算法 line 公式 delta mat 所有 pan 單變量線性回歸 綱要 代價函數 梯度下降算法 全局最優與局部最優 代價函數 函數定義: \[ J(\theta_0,\theta_1,...)=\frac{1}{2m}\sum_{i=1}^

Deep Belief Network簡介——本質上是在做逐層無監督學習,每次學習層網絡結構再逐步加深網絡

why article dia 圖片 fast org 一個 能力 如果 from:http://www.cnblogs.com/kemaswill/p/3266026.html 1. 多層神經網絡存在的問題 常用的神經網絡模型, 一般只包含輸入層, 輸出層和一個

菜鳥學習lucene之簡介()

什麼是lucene? 一種全文檢索技術。 lucene是Apache的一個全文檢索引擎工具包,通過lucene可以讓程式快速開發一個全文檢索功能。 lucene能夠做些什麼呢?     比如說百度搜索引擎它是怎麼實現的呢?以我現在的技術只能想到模糊查詢,可是資料量若是

SpringBoot學習_簡介以及微服務

SpringBoot簡介 Spring Boot是用來簡化Spring應用開發,去繁從簡,just run就能建立一個獨立的,產品級別的應用 優點: 快速建立獨立執行的Spring專案以及與主流框架整合 使用嵌入式的Servlet容器,應用無需打成WAR包 s

python學習簡介與語法基礎

Python簡介:是一種面向物件的程式設計語言,主要特點是:語法簡潔清晰,庫豐富(第三方庫最多的)。 python作用:可以開發前端,後端都可以,用來開發一些小工具,自動化運維,人工智慧等等。聽得較多的還有網路爬蟲。 Python對測試的意義:針對於測試同學,在功能測試外