zookeeper學習(一)_簡介
上篇文章 我們已經安裝上了zookeeper,也簡單的體驗了一把,但是如果讓你給別人介紹下zookeeper,可能也是說不出來。本篇文章就參考了網上各位優秀博主的文章,整理出自己更能理解的內容
優秀博文
- sunddenly的zookeeper系列
http://www.cnblogs.com/sunddenly/category/620563.html
- 程式設計師小灰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對測試的意義:針對於測試同學,在功能測試外