ZooKeeper入門教程(一)

想必大家都對分布式系統(tǒng)有所耳聞饵蒂,大部分人對分布式都能侃侃而談声诸,但到了真正實(shí)施的時候,才發(fā)現(xiàn)其中的不易退盯。今天帶大家一起了解一款開源軟件彼乌,ZooKeeper。它通過一些簡單好用的API渊迁,來解決分布式系統(tǒng)設(shè)計(jì)與開發(fā)中的難點(diǎn)慰照。

ZooKeeper

這篇文章主要從下幾個部分介紹:

  • 什么是分布式系統(tǒng)和它的特性
  • 分布式系統(tǒng)難在哪里
  • ZooKeeper簡介
  • 下載安裝ZooKeeper
  • 客戶端操作ZooKeeper
  • ZooKeeper集群配置

分布式系統(tǒng)定義

A distributed system is de ned as a software system that is composed of independent computing entities linked together by a computer network whose components communicate and coordinate with each other to achieve a common goal.
分布式系統(tǒng)是由獨(dú)立的計(jì)算機(jī)通過網(wǎng)絡(luò)連接在一起,并且通過一些組件來相互交流和協(xié)作來完成一個共同的目標(biāo)琉朽。

想要更好的判斷是否為好的分布式系統(tǒng)毒租,可以看這些特性:

  • 資源共享,例如存儲空間箱叁,計(jì)算能力墅垮,數(shù)據(jù),和服務(wù)等等
  • 擴(kuò)展性耕漱,從軟件和硬件上增加系統(tǒng)的規(guī)模
  • 并發(fā)性 多個用戶同時訪問
  • 性能 確保當(dāng)負(fù)載增加的時候算色,系統(tǒng)想要時間不會有影響
  • 容錯性 盡管一些組件暫時不可用了,整個系統(tǒng)仍然是可用的
  • API抽象 系統(tǒng)的獨(dú)立組件對用戶隱藏螟够,僅僅暴露服務(wù)

有了ZooKeeper灾梦,開發(fā)者可以很輕松的實(shí)現(xiàn):

  • 配置管理
  • 命名服務(wù)
  • 分布式鎖
  • 集群關(guān)系操作峡钓,檢測節(jié)點(diǎn)的加入和離開

分布式系統(tǒng)的難點(diǎn)

可以想象,假如一臺計(jì)算機(jī)的出錯概率為0.1%若河,那么1000臺服務(wù)器的出錯概率呢能岩?一旦計(jì)算機(jī)的數(shù)量增多,出錯的概率就大大的增加牡肉。

  1. 多個相互獨(dú)立的計(jì)算機(jī)捧灰,假設(shè)集群的配置信息在某個Master節(jié)點(diǎn)上,其余的節(jié)點(diǎn)從Master節(jié)點(diǎn)下載配置信息统锤。假如Master節(jié)點(diǎn)掛了呢毛俏?假設(shè)Master節(jié)點(diǎn)是故障冗余的,但是配置信息是動態(tài)的傳遞給所有的其余節(jié)點(diǎn)的饲窿,而不是直接傳過去煌寇。所有節(jié)點(diǎn)之間的信息如何保證一致呢?

  2. 服務(wù)發(fā)現(xiàn)的問題逾雄,為了增加系統(tǒng)的可靠性阀溶,我們一般會在系統(tǒng)中增加更多的服務(wù)器。讓其它機(jī)器知道新加入的節(jié)點(diǎn)在集群中的關(guān)系和服務(wù)鸦泳,這個設(shè)計(jì)也需要非常周到的考慮

  3. 機(jī)器數(shù)目眾多银锻,更容易出現(xiàn) 機(jī)器故障,軟件崩潰做鹰,網(wǎng)絡(luò)延遲击纬,拓?fù)涓淖兊鹊龋@些類型的錯誤沒有規(guī)律可循钾麸,因此在分布式系統(tǒng)更振,想實(shí)現(xiàn)高容錯性是很難的。

當(dāng)然了..ZooKeeper被設(shè)計(jì)出來的目的就是解決這種類型的問題.

ZooKeeper介紹

zookeeper實(shí)際上是yahoo開發(fā)的饭尝,用于分布式中一致性處理的框架肯腕。最初其作為研發(fā)Hadoop時的副產(chǎn)品。由于分布式系統(tǒng)中一致性處理較為困難钥平,其他的分布式系統(tǒng)沒有必要費(fèi)勁重復(fù)造輪子实撒,故隨后的分布式系統(tǒng)中大量應(yīng)用了zookeeper,以至于zookeeper成為了各種分布式系統(tǒng)的基礎(chǔ)組件涉瘾,其地位之重要奈惑,可想而知。著名的hadoop睡汹、kafka、dubbo 都是基于zookeeper而構(gòu)建寂殉。

安裝ZooKeeper

有關(guān)分布式的理論也很重要囚巴,我們放到下此再講,首先有一個可以運(yùn)行的Demo,在看理論的時候才更明白是怎么回事彤叉,因?yàn)閆ooKeeper的簡單易用庶柿,幾分鐘內(nèi)就可以做出一個小demo。

  1. 從ZooKeeper官網(wǎng)下載
    下載地址:https://archive.apache.org/dist/zookeeper/

  2. 解壓配置

tar -xf /usr/local/src/zookeeper-3.4.9.tar.gz -C /usr/local/src/
ln -sv /usr/local/src/zookeeper-3.4.9/ /usr/local/zookeeper
cd /usr/local/zookeeper/
  1. 配置ZooKeeper
vim zoo.cfg
# zoo.cfg文件中內(nèi)容如下
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
  • tickTime 單位為微秒秽浇,用于session注冊和客戶端和ZooKeeper服務(wù)的心跳周期浮庐。session超時時長最小為 tickTime的兩倍
  • dataDir ZooKeeper的狀態(tài)存儲位置,看名字就知道書數(shù)據(jù)目錄柬焕。在你的系統(tǒng)中檢查這個目錄是否存在审残,如果不存在手動創(chuàng)建,并且給予可寫權(quán)限斑举。
  • clientPort 客戶端連接的端口搅轿。不同的服務(wù)器可以設(shè)置不同的監(jiān)聽端口,默認(rèn)是2181
  1. 啟動ZooKeeper
# 這里命令寫的長是為了便于知道ZooKeeper是如何使用配置文件的富玷。
/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg  

# 查看ZooKeeper是否運(yùn)行
ps –ef | grep zookeeper 
# 也可以使用jps 璧坟,可以看到j(luò)ava進(jìn)程中有QuorumPeerMain列出來。

# 查看ZooKeeper的狀態(tài)
zkServer.sh status

# 常用的ZooKeeper用法赎懦,這個屬于Linux基礎(chǔ)的部分雀鹃,就不過多說明了
./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
  1. 使用zkCli連接ZooKeeper
/usr/local/zookeeper/bin/zkCli.sh -server localhost:2181

連接成功后可以使用如下命令:


ZooKeeper命令演示

ZooKeeper集群配置

ZooKeeper的集群相對比較簡單,這里不涉及過多的篇幅励两,但會列出大概的步驟黎茎。

  1. 創(chuàng)建配置文件
cd /usr/local/zookeeper
touch zoo1.cfg zoo2.cfg zoo3.cfg
集群的配置

注意 端口不要沖突,dataDir不要相同

  1. 配置數(shù)據(jù)目錄與數(shù)據(jù)存放目錄內(nèi)容
cd /tmp/zookeeper
mkdir {zoo1,zoo2,zoo3}
echo 1 > zoo1/myid
echo 2 > zoo2/myid
echo 3 > zoo3/myid

這里的myid文件中一定要對應(yīng)上面配置文件中server.[id]的數(shù)字伐蒋,不然ZooKeeper啟動會出錯工三。

  1. 啟動ZooKeeper
zkServer.sh start /usr/local/zookeeper/conf/zoo1.cfg
zkServer.sh start /usr/local/zookeeper/conf/zoo2.cfg
zkServer.sh start /usr/local/zookeeper/conf/zoo3.cfg
  1. 查看效果

使用ps -ef | grep zoo可以看到有三個zookeeper啟動起來了。
連接ZooKeeper

# 192.168.8.250是ZooKeeper服務(wù)器的地址
zkCli.sh -server 192.168.8.250:2181,192.168.8.250:2182,192.168.8.250:2183
集群連接效果

可以看到連接成功先鱼,也就是集群配置成功了俭正。

最后

這篇文章,主要介紹了一下什么是分布式系統(tǒng)和分布式系統(tǒng)的的基本特性焙畔,然后又做了ZooKeeper的簡單Demo掸读,希望幫助大家入門ZooKeeper。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宏多,一起剝皮案震驚了整個濱河市儿惫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伸但,老刑警劉巖肾请,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異更胖,居然都是意外死亡铛铁,警方通過查閱死者的電腦和手機(jī)隔显,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饵逐,“玉大人括眠,你說我怎么就攤上這事”度ǎ” “怎么了掷豺?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長薄声。 經(jīng)常有香客問我当船,道長,這世上最難降的妖魔是什么奸柬? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任生年,我火速辦了婚禮,結(jié)果婚禮上廓奕,老公的妹妹穿的比我還像新娘抱婉。我一直安慰自己占哟,他們只是感情好婆跑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布牵咙。 她就那樣靜靜地躺著此洲,像睡著了一般怖亭。 火紅的嫁衣襯著肌膚如雪威恼。 梳的紋絲不亂的頭發(fā)上慌核,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天厚脉,我揣著相機(jī)與錄音押逼,去河邊找鬼步藕。 笑死,一個胖子當(dāng)著我的面吹牛挑格,可吹牛的內(nèi)容都是我干的咙冗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漂彤,長吁一口氣:“原來是場噩夢啊……” “哼雾消!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挫望,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤立润,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后媳板,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桑腮,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年蛉幸,在試婚紗的時候發(fā)現(xiàn)自己被綠了破讨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旨巷。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖添忘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情若锁,我是刑警寧澤搁骑,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站又固,受9級特大地震影響仲器,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仰冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一乏冀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洋只,春花似錦辆沦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至担锤,卻和暖如春蔚晨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛循。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工铭腕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人多糠。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓累舷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熬丧。 傳聞我的和親對象是個殘疾皇子笋粟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)析蝴,斷路器害捕,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 一、ZooKeeper的背景 1.1 認(rèn)識ZooKeeper ZooKeeper---譯名為“動物園管理員”闷畸。動物...
    algernoon閱讀 9,071評論 1 106
  • feisky云計(jì)算尝盼、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,849評論 0 5
  • 以前我信奉『工作就去創(chuàng)業(yè)公司,機(jī)會多佑菩,成長快』盾沫,后來稱不上飽經(jīng)滄桑裁赠,但我更想說『如果可以,請別輕易去創(chuàng)業(yè)公司』赴精,原...
    會開花的蘑菇閱讀 549評論 0 0
  • 把你的信息刪了又加佩捞,加了又刪,反反復(fù)復(fù)不知道何時是終點(diǎn)蕾哟。一直都處在猶豫不決的狀態(tài)中一忱,沒有走出來。就連想不想走出來這...
    小小羊_閱讀 188評論 0 0