版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-7-6zookeeperzookeeper學習筆記學習筆記2014-10-29Page 2 我們都知道,想要打敗一個強悍的對手,那你就要尋找他的弱點,而要知道他弱點,你就得了解他,也許他的弱點只是一個很小的點,但為此你得付出更多。就像一個黑客,為了找到一個漏洞,他必須嘗試著用各種方式去嗅探,直到達到目的。做技術也是一樣,當你遇到一個問題時,比如程序運行時出現(xiàn)異常,你可能要打個斷點,跟蹤這個程序的運行邏輯。也許你可以直接將異常信息復制到網上搜索答案,但實際上,只不過是別人替你去做了那個工作。 而我關于zookeeper的學習是從dubbo的一個bug開始的,按照下面的任務順序去學習并解
2、決問題: 1.dubbo bug ,zkclient共存; 2.zookeeper API的使用; 3.使用zookeeper進行配置管理,修改配置不用重啟應用。Page 3目錄n簡單介紹簡單介紹dubbo+zookeeperl 概念概念l zookeeper在在dubbo中的角色中的角色l dubbo使用使用zookeeper客戶端的一個客戶端的一個bugl dubbo同時使用兩套同時使用兩套client的解決辦法(沒有什么意義)的解決辦法(沒有什么意義)l 扯一下使用扯一下使用maven插件修復開源應用插件修復開源應用bug的技巧的技巧nZookeepern 概述概述n 典型應用場景典型應
3、用場景n 數據模型數據模型n 操作操作n 實現(xiàn)實現(xiàn)n 一致性一致性n 會話會話n 安裝與配置安裝與配置n Zookeeper客戶端客戶端curator l Page 4簡單介紹dubbo+zookeeperl概念概念lDubbo:是一個分布式服務框架,致力于提供高性能和透明化的是一個分布式服務框架,致力于提供高性能和透明化的RPC(Remote Procedure Call Protocol)遠程服務調用方案,以及遠程服務調用方案,以及SOA(Service-Oriented Architecture )服務治理方案。服務治理方案。lzookeeper:是一個分布式協(xié)調服務。:是一個分布式協(xié)調
4、服務。Page 5簡單介紹dubbo+zookeeperl zookeeper在在dubbo中的角色中的角色l 節(jié)點角色說明:節(jié)點角色說明: Provider: 暴露服務的服務提供方。暴露服務的服務提供方。 Consumer: 調用遠程服務的服務消費方。調用遠程服務的服務消費方。 Registry: 服務注冊與發(fā)現(xiàn)的注冊中心。服務注冊與發(fā)現(xiàn)的注冊中心。 Monitor: 統(tǒng)計服務的調用次調和調用時間的監(jiān)控中心。統(tǒng)計服務的調用次調和調用時間的監(jiān)控中心。 Container: 服務運行容器。服務運行容器。l調用關系說明:調用關系說明: 0. 服務容器負責啟動,加載,運行服務提供者。服務容器負責啟動
5、,加載,運行服務提供者。 1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。服務提供者在啟動時,向注冊中心注冊自己提供的服務。 2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。服務消費者在啟動時,向注冊中心訂閱自己所需的服務。 3. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。 4. 服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。服務消費者,從提供者地址列表中,基于軟負載均衡算法,
6、選一臺提供者進行調用,如果調用失敗,再選另一臺調用。 5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數據到監(jiān)控中心。服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數據到監(jiān)控中心。Page 6簡單介紹dubbo+zookeeperl zookeeper在在dubbo中的角色中的角色l zookeeper的角色:注冊中心的角色:注冊中心 1.注冊中心負責服務地址的注冊與查找,相當于目錄服務,服務提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉發(fā)請注冊中心負責服務地址的注冊與查找,相當于目錄服務,服務提供者和消費者只在啟動時與注冊中心
7、交互,注冊中心不轉發(fā)請求,壓力較小求,壓力較小 2.監(jiān)控中心負責統(tǒng)計各服務調用次數,調用時間等,統(tǒng)計先在內存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務器,并以報表展示監(jiān)控中心負責統(tǒng)計各服務調用次數,調用時間等,統(tǒng)計先在內存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務器,并以報表展示 服務提供者向注冊中心注冊其提供的服務,并匯報調用時間到監(jiān)控中心,此時間不包含網絡開銷服務提供者向注冊中心注冊其提供的服務,并匯報調用時間到監(jiān)控中心,此時間不包含網絡開銷 3.服務消費者向注冊中心獲取服務提供者地址列表,并根據負載算法直接調用提供者,同時匯報調用時間到監(jiān)控中心,此時間包服務消費者向注冊中心獲取服務提供者地址列表,并根據
8、負載算法直接調用提供者,同時匯報調用時間到監(jiān)控中心,此時間包含網絡開銷含網絡開銷 4.注冊中心,服務提供者,服務消費者三者之間均為長連接,監(jiān)控中心除外注冊中心,服務提供者,服務消費者三者之間均為長連接,監(jiān)控中心除外 5.注冊中心通過長連接感知服務提供者的存在,服務提供者宕機,注冊中心將立即推送事件通知消費者注冊中心通過長連接感知服務提供者的存在,服務提供者宕機,注冊中心將立即推送事件通知消費者 6.注冊中心和監(jiān)控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表注冊中心和監(jiān)控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表 7.注冊中心和監(jiān)控中心都
9、是可選的,服務消費者可以直連服務提供者注冊中心和監(jiān)控中心都是可選的,服務消費者可以直連服務提供者 其他可扮演注冊中心的技術:其他可扮演注冊中心的技術:redisPage 7簡單介紹dubbo+zookeeperldubbo使用使用zookeeper客戶端的一個客戶端的一個bug dubbo目前支持使用的目前支持使用的zookeeper客戶端有兩個:客戶端有兩個:Zkclient和和curator,Zkclient是其默認是其默認的客戶端。的客戶端。 bug描述:描述:dubbo在在ZookeeperRegistry這個類中顯示依賴了這個類中顯示依賴了Zkclient的異常類,導致在的異常類,導
10、致在缺失缺失Zkclient包的時候使用包的時候使用zookeeper注冊中心報錯。解決辦法是去掉這個顯示依賴,注冊中心報錯。解決辦法是去掉這個顯示依賴,或者在使用或者在使用curator的時候也引入的時候也引入Zkclient包。包。 指定使用指定使用curator需要使用需要使用client屬性,如下:屬性,如下: Page 8簡單介紹dubbo+zookeeperldubbo同時使用兩套同時使用兩套client的解決辦法(沒有什么意義)的解決辦法(沒有什么意義)l問題描述:如果在一個服務中同時指定用問題描述:如果在一個服務中同時指定用Zkclient和和curator,則實際上只會用則實
11、際上只會用到一個。到一個。l解決辦法:增加解決辦法:增加key值判斷。值判斷。AbstractRegistryFactory.getRegistry方法。方法。Page 9簡單介紹dubbo+zookeeperl扯一下使用扯一下使用maven修復開源應用修復開源應用bug的技巧的技巧 當我們修改了一個開源應用的當我們修改了一個開源應用的bug,怎么把修改后的文件合到怎么把修改后的文件合到jar包里面去?一個比較靠包里面去?一個比較靠譜的方式就是使用譜的方式就是使用maven的的maven-shade-plugin插件,在打包是過濾掉原有插件,在打包是過濾掉原有jar包中要包中要替換的文件。替換
12、的文件。 可參考:可參考:/plugins/maven-shade-plugin/shade-mojo.html maven的另外一個打包插件:的另外一個打包插件:maven-assembly-plugin,可參考:,可參考: /plugins/maven-assembly-plugin/ 最后,關于最后,關于dubbo,提供一篇很好的文章:提供一篇很好的文章:http:/ ( 這篇文章對于這篇文章對于dubbo的性能優(yōu)化是很不錯的參看)的性能優(yōu)化是很不錯的參看)Page 10簡單介紹dubbo+zooke
13、eperl問題問題ldubbo為什么要使用注冊中心?為什么要使用注冊中心?l點對點直連方式:點對點直連方式:http:/ 11Zookeeperl概述概述 Zookeeper作為注冊中心的概念其實是抽象的,官方說明:作為注冊中心的概念其實是抽象的,官方說明:ZooKeeper is a high-performance coordination service for distributed applications.其實它的核心是一個精簡其實它的核心是一個精簡的文件系統(tǒng),提供基于目錄節(jié)點樹方式的數據存儲,以及一些額外的抽象操作,如的文件系統(tǒng),提供基于目錄節(jié)點樹方式的數據存儲,以及一些額外的抽
14、象操作,如排序,通知和監(jiān)控。排序,通知和監(jiān)控。 節(jié)點存儲的數據主要包括:節(jié)點存儲的數據主要包括:status information, configuration, location information, etc.Page 12Zookeeperl典型應用場景典型應用場景l(fā) 統(tǒng)一命名服務(統(tǒng)一命名服務(Name Service)l 配置管理(配置管理(Configuration Management)l Leader Electionl 共享鎖(共享鎖(Locks)l 隊列管理隊列管理l 組成員關系(組成員關系(Group Membership)Page 13Zookeeperl數據模型數
15、據模型 前面提到前面提到Zookeeper的核心就是文件系統(tǒng),所以掌握的核心就是文件系統(tǒng),所以掌握Zookeeper就必須了解它的數據模型。類就必須了解它的數據模型。類似于似于unix的文件系統(tǒng),它維護著一個屬性層次結構,樹中的節(jié)點被稱為的文件系統(tǒng),它維護著一個屬性層次結構,樹中的節(jié)點被稱為znode,znode可以用來存可以用來存儲數據,并且與之關聯(lián)一個儲數據,并且與之關聯(lián)一個ACL(Access Control List)。)。 一一.和標準文件系統(tǒng)的區(qū)別:和標準文件系統(tǒng)的區(qū)別: 1.一個一個znode既可以是文件也可以是目錄;既可以是文件也可以是目錄; 2.每個每個znode存儲的數據有
16、限,不超過存儲的數據有限,不超過1M(zookeeper有內置的檢查)。有內置的檢查)。 3.Zookeeper中的文件系統(tǒng)路徑是絕對路徑,必須以中的文件系統(tǒng)路徑是絕對路徑,必須以“/”開頭,而且路徑必須是標準的,即開頭,而且路徑必須是標準的,即不能包含像不能包含像unix那樣可以表示當前路徑或者當前路徑上一級目錄的符合那樣可以表示當前路徑或者當前路徑上一級目錄的符合“.”或或“.”Page 14Zookeeperl數據模型數據模型 二二.znode的一些性質的一些性質 1.znode的兩種類型:短暫的和持久的。該類型在創(chuàng)建時確定,之后不能再修改。短暫的兩種類型:短暫的和持久的。該類型在創(chuàng)建時
17、確定,之后不能再修改。短暫znode不能有子節(jié)點。(短暫不能有子節(jié)點。(短暫znode應用:需要知道特定時刻有哪些分布式資源可用的應用,如應用:需要知道特定時刻有哪些分布式資源可用的應用,如組成員管理服務。)組成員管理服務。) 2.順序號:在創(chuàng)建順序號:在創(chuàng)建znode的時候,我們可以設置順序標識,這樣創(chuàng)建的的時候,我們可以設置順序標識,這樣創(chuàng)建的zonde名稱后面會附名稱后面會附加一個值(單調遞增),這個值便是順序號,由其父節(jié)點維護。(順序加一個值(單調遞增),這個值便是順序號,由其父節(jié)點維護。(順序znode的應用:共享的應用:共享鎖。)鎖。) 3.觀察(觀察(watch):當):當zno
18、de以某種方式發(fā)生改變時,這種機制可以讓客戶端得到通知。以某種方式發(fā)生改變時,這種機制可以讓客戶端得到通知。(應用:配置管理,后面將配置管理的時候,具體去講)(應用:配置管理,后面將配置管理的時候,具體去講)Page 15Zookeeperl實現(xiàn)實現(xiàn)lzookeeper支持單機模式,也支持集群(復制)模式。支持單機模式,也支持集群(復制)模式。l兩個注意點:兩個注意點:l1.只要集群中半數以上的機器處于可用狀態(tài),它就能提供服務;只要集群中半數以上的機器處于可用狀態(tài),它就能提供服務;l2.它確保最它確保最znode樹中的每一個修改都會被復制到集群中半數以上的機器。因此能確保在可用狀樹中的每一個修
19、改都會被復制到集群中半數以上的機器。因此能確保在可用狀態(tài)下,至少有一個機器保存最新的狀態(tài),其余副本也會更新到這個最新狀態(tài)。態(tài)下,至少有一個機器保存最新的狀態(tài),其余副本也會更新到這個最新狀態(tài)。l如何實現(xiàn):如何實現(xiàn):Zab協(xié)議協(xié)議l階段一:領導者選舉階段一:領導者選舉l階段二:原子廣播階段二:原子廣播Page 16Zookeeperl會話會話l故障切換故障切換l時間:時間:tick time,用于設置交互時間表,其他設置基本上依賴這個參數,用于設置交互時間表,其他設置基本上依賴這個參數Page 17Zookeeperl一致性一致性lZab協(xié)議導致了協(xié)議導致了Zookeeper的一致性問題。的一致性
20、問題。l解決一致性:每一個對解決一致性:每一個對znode的樹的更新狀態(tài)都被賦予一個全局唯一的樹的更新狀態(tài)都被賦予一個全局唯一zxid,zookeeper對其進行排序,越小,則發(fā)生越早。對其進行排序,越小,則發(fā)生越早。lzookeeper的幾點考慮:順序一致性,原子性,單一系統(tǒng)映象,持久性,的幾點考慮:順序一致性,原子性,單一系統(tǒng)映象,持久性,及時性及時性l注:使用注:使用sync來解決跨過來解決跨過Zookeeper的機制進行通信導致的數據不一致。的機制進行通信導致的數據不一致。Page 18Zookeeperl操作操作lZookeeper中有九種基本操作。中有九種基本操作。Page 19Z
21、ookeeperl操作操作lapil對于對于Zookeeper的客戶端來說,主要有兩種語言綁定:的客戶端來說,主要有兩種語言綁定:Java和和C,也可以使用其他的語言,如也可以使用其他的語言,如Perl,Pythod等。對于各種語言的綁定使用,可參考:等。對于各種語言的綁定使用,可參考:/confluence/display/ZOOKEEPER/ZKClientBindingslapi的調用有同步和異步兩種方式。異步操作的結果使用回調來傳送。的調用有同步和異步兩種方式。異步操作的結果使用回調來傳送。l如:同步方式:如:同步方式:public voi
22、d exists(String path,Watcher watcher;l異步方式:異步方式:public void exists(String path,Watcher watcher,StatCallback cb,Object ctx);Page 20Zookeeperl操作操作l觀察觸發(fā)器觀察觸發(fā)器l在讀操作在讀操作 exists、getChildren和和getData上可以設置觀察,這些觀察可以被寫操作上可以設置觀察,這些觀察可以被寫操作create、delete和和setData觸發(fā)。觸發(fā)。注:注:ACL的相關操作不參與任何觀察。下表是設置觀察的操作及其對應的觸發(fā)器:的相關操作不參與任何觀察。下表是設置觀察的操作及其對應的觸發(fā)器:Page 21Zookeeperl操作操作l安裝與配置安裝與配置 略略lweb界面界面 node-zk-browserl圖形化界面圖形化界面 ZooInspectorlzookeeper監(jiān)控監(jiān)控 taokeeper (運維關注運維關注) 63/taokeeper-monitor/zooKeeperStatus.do?method=showZooKeeperStatusPAGEPage 22Zookeeperl操作操作lACLl每個每
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學《全媒體新聞寫作與編輯》2023-2024學年第一學期期末試卷
- 貴州財經職業(yè)學院《辦公室空間設計》2023-2024學年第一學期期末試卷
- 貴陽幼兒師范高等專科學校《高分子材料分析測試與研究方法》2023-2024學年第一學期期末試卷
- 2025黑龍江省安全員考試題庫
- 貴陽信息科技學院《現(xiàn)代基礎醫(yī)學概論Ⅰ》2023-2024學年第一學期期末試卷
- 硅湖職業(yè)技術學院《社會網絡分析》2023-2024學年第一學期期末試卷
- 貴陽學院《微生物基因工程》2023-2024學年第一學期期末試卷
- 2025年安徽建筑安全員-A證考試題庫附答案
- 廣州新華學院《學術規(guī)范與科技論文寫作車輛》2023-2024學年第一學期期末試卷
- 廣州衛(wèi)生職業(yè)技術學院《語文課堂教學技能與微格訓練》2023-2024學年第一學期期末試卷
- 人教版高一化學方程式大全
- JBT 7048-2011 滾動軸承 工程塑料保持架 技術條件
- Pre-IPO階段融資策略研究
- 陶藝校本課程實施方案(教學資料)
- 2024年山東省機場管理集團威海國際機場有限公司招聘筆試參考題庫含答案解析
- 國際貨物運輸委托代理合同(中英文對照)全套
- 銀行反恐應急預案及方案
- 關于推某某同志擔任教育系統(tǒng)實職領導職務的報告(職務晉升)
- 2023消防安全知識培訓
- Exchange配置與規(guī)劃方案專項方案V
- 三年級上冊脫式計算練習200題及答案
評論
0/150
提交評論