Zookeeper分佈式過程協同技術 – 概念及基礎

Zookeeper分佈式過程協同技術 – 概念及基礎

Zookeeper是什麼?

  • Zookeeper是一種分佈式過程協同技術,其所提供的客戶端API功能強大,其中包括:
  • 保障強一致性。有序性和持久性。
  • 實現通用的同步原語的能力。
  • 在實際分佈式系統中,併發往往導致不正確的行為。Zookeeper提供了一種簡單的併發處理機制。

關於Zookeeper名字的來源

Zookeeper由雅虎研究院開發,開發團隊原來想使用動物命名項目,在討論時大家覺得分佈式系統就像一個動物園,胡亂且難以管理,而Zookeeper就是將這一切變得可控。遂起名為Zookeeper,意為動物園管理員。

Zookeeper使用場景

  • 命名服務

命名服務是指通過路徑名稱來獲取服務的地址。首先zookeeper創建一個全局路徑,服務方在全局路徑下寫入服務的地址(或者名稱),服務消費方在啟動后watch全局路徑的數據和變化。注意,這裏的節點均為臨時節點,在服務連接中斷或者宕機時,通過臨時節點消失能夠通知訂閱方感知變化。

  • 配置管理

服務分佈部署在不同的機器上,將全局的配置信息存放於zookeeper的節點下,客戶端通過訂閱節點的數據變化獲取到配置信息。當節點中的配置信息發生變化時,客戶端可以通過watch節點發送的消息感知,從而修改服務本地的配置管理信息。

  • 集群管理

當有新機器加入集群時,由新機器的客戶端在指定的目錄下新建臨時節點,服務註冊管理端通過訂閱指定目錄的變化,收到了新增節點的通知后,將新機器加入集群服務的列表。當機器退出集群或者宕機時,臨時節點將會被刪除,同樣可以通知服務註冊管理端,有機器退出了集群。

  • 分佈式鎖

zookeeper的分佈式鎖可以分為2種,保持獨佔或者控制時序。

對於保持獨佔來說,可以把一個節點看做是一把鎖,通過創建節點的方式來搶佔鎖資源。如果創建節點成功,客戶端也就持有了這把鎖,如果創建失敗,則訂閱節點的變化,如果收到節點刪除消息,再次嘗試創建節點來搶佔鎖資源。

對於控制時序來說,通過在指定目錄下創建臨時有序節點,編號最小的節點首先持有鎖資源,每個後續節點都訂閱前一個節點。擁有鎖資源的客戶端在操作完畢后,刪除自己創建的節點。後續節點收到前置節點的刪除通知后,即獲取了鎖資源,可以進行業務操作。

Zookeeper基礎

Zookeeper通過節點(znode)來實現原語的功能,並不直接暴露原語。Znode指Zookeeper操作和維護一個小型的數據節點,類似於文件系統的層級樹狀結構進行管理。

    圖:Zookeeper數據結構示例

·  /作為跟目錄節點,根節點下有/workers和/tasks兩個字節點。

· /workers節點作為父節點,其下的每一個znode子節點用於保存系統中的可用worker,節點中保存着worker子節點的元數據信息。

· /tasks節點作為父節點,其下每個znode子節點用於保存一個代執行的任務,節點中保存着任務的詳細數據。

API概念

ZookeeperAPI提供了以下方法來實現地znode的控制。

create /path data

  創建一個名為/path的znode節點,並包含數據data。

delete /path

  刪除名為/path的znode。

exists /path

  檢查是否存在名為/path的節點。

setData /path data

  設置名為/path的znode節點的數據為data。

getData /path

  返回名為/path節點的數據信息。

getChildren /path

  返回所有/path節點的所有子節點列表。

Znode類型

在新建znode時,需要指定該節點類型,不同的類型決定了znode節點的行為方式,Zookeeper提供了4種不同的znode類型。

持久節點和臨時節點

znode節點可以是持久(persistent)節點,還可以是臨時(ephemeral)節點。持久的znode,如/path,只能通過delete來進行刪除。臨時的znode與之相反,當創建的客戶端崩潰或者關閉了與Zookeeper的連接時,這個節點就會被刪除。

持久znode是一種非常有用的znode,可以通過持久類型znode為應用保存一些數據,即使znode的創建者不再屬於應用系統時,數據也可以保存下來而不丟失。例如,在主-從模式中,需要保存從節點的任務分配情況,即使分配任務的主節點已經崩潰了。

一個臨時znode,在以下兩種情況會被刪除:

  1. 當創建該znode的客戶端的會話因超時或主動關閉而中止時。
  2. 當某個客戶端(不一定是創建者)主動刪除該節點時。

注:因為臨時的znode在其創建者的會話過期時被刪除,所以我們現在不允許臨時節點擁有子節點。

有序節點

一個有序znode節點被分配唯一一個單調遞增的整數。當創建有序節點時,一個序號會被追加到路徑之後。例如,客戶端創建一個有序znode節點,其路徑為/tasks/task-,那麼該znode節點為/tasks/task-1。有序znode通過提供了創建具有唯一名稱的znode的簡單方式。同時也通過這種方式可以直觀地查看znode的創建順序。

Znode一共有四種:持久節點、臨時節點、持久有序節點,臨時有序節點。

監視與通知

Zookeeper提供基於通知的機制提供對節點的監視能力。客戶端向Zookeeper註冊需要接收通知的znode,通過對znode的設置監視點(watch)來接收通知。監視點是一個單次觸發的操作,每次設置只會觸發一次。為了接收多個通知,客戶端必須在每次通知後設置新的監視點。在設置新監視點前客戶端會先讀取znode中的數據,所以不同擔心會錯過狀態的變化。

Zookeeper可以定義不同類型的通知,如監控znode的數據變化、監控znode子節點的變化、監控znode的創建或刪除。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

新北清潔公司,居家、辦公、裝潢細清專業服務

※推薦評價好的iphone維修中心

Jmeter系列(34)- 詳解 Counter 計數器

如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

簡單介紹

  • 計數器的作用:循環遞增生成数字
  • 計數器使用 long 來存儲值,因此取值範圍是 -2 ^ 63 2 ^ 63-1 
  • 可以在線程組任意地方添加計數器

 

計數器

 

計數器界面介紹

 

字段介紹

字段 含義
Starting value 初始值,long 整型,默認 0
Increment 每次迭代的遞增值,默認 0,表示不增加
Maximum value 最大值,包含此值
Number format 数字可選格式
Exported Variable Name 引用名稱
Track counter independently for rach user 每個用戶都有一個獨立的計數器
Reset counter on each Thread Group Iteration 每次線程組迭代時計數器將重置為初始值

 

最基礎的栗子

只有計數器的情況下的栗子

線程組結構樹

 

線程組屬性

共有 15 個線程,模擬 15 個用戶

 

計數器

計數器最多循環計數 10 次

 

運行結果

可以看到,因為有 15 個用戶,但計數器最多循環計數 10 次,所以第一輪循環結束後會重頭開始

 

計數器 + 循環控制器的栗子

線程組結構樹

 

線程組屬性

共有 5 個線程,模擬 5 個用戶

 

循環控制器

每個線程運行 3 次

 

計數器

計數器最多循環計數 30 次

 

未勾選【與每用戶獨立的跟蹤計數器】的運行結果

可以看到

  • 因為有 5 個線程,每個線程循環 3 次,一共 15 個請求,所以計數器是循環了 15 次
  • 此時計數器是對所有線程共享的,屬於線程組全局計數器,所以計數器是累計循環了 15 次

 

勾選【與每用戶獨立的跟蹤計數器】的運行結果

可以看到

  • 每個線程運行時,計數器都是從初始值算起的
  • 此時計數器是每個線程獨享的,不再是公共計數器,所以每次有新的線程運行時,都是新的計數器開始循環計數

 

計數器的一些注意事項

使用計數器生成的變量,值的類型為 string,所以有比較之類的操作時,需要帶 “” 操作

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

※回頭車貨運收費標準

Zookeeper分佈式過程協同技術 – 部署及設置

Zookeeper分佈式過程協同技術 –  部署及設置

Zookeeper支持單機模式、偽集群模式、集群模式三種部署方式。演示部署環境為CentOS、jdk版本為1.8、Zookeeper版本為3.4.9。

單機模式

單機模式適合入門學習使用,只需要一台機器就可以輕鬆搭建Zookeeper服務用於學習和測試。

1. 進入官網下載Zookeeper的JAR包,下載地址:https://zookeeper.apache.org/releases.html。

2. 解壓壓縮包,命令:tar -zxvf zookeeper-3.4.9.tar.gz,解壓后目錄格式如下。

3. 進入conf目錄,複製zoo_sample.cfg文件命名為zoo.cfg。這裏可以直接使用默認的參數,也可以根據自己的需要修改。

命令:cp zoo_sample.cfg zoo.cfg

主要配置參數說明

  • clientPort

客戶端連接的服務器所監聽的TCP端口,默認情況下,服務器會監聽所有的網絡連接的這個端口,除非設置了clientPortAddress參數。客戶端口可以設置為任何值,不同的服務器可以設置不同的端口,默認端口號為2181。

  • tickTime

tickTime的時長單位為毫秒,Zookeeper集群中使用的超時時間單位通過tickTime指定。tickTime設置了超時時間的下限值,因為最小的超時時間為一個tick時間,客戶端最小會話超時時間為2個tick時間。

tickTime的默認值是3000毫秒,更低的tickTime值可以更快地發現超時問題,但也導致更高的網絡流量和更高的CPU使用率。

  • dataDir

dataDir用於配置內存數據庫保存的模糊快照目錄,如果某個服務器為集群中的一台,id文件也保存在該目錄下。

  • dataLogDir

用於配置事務日誌的保存目錄。服務端在確認一個事務前必須將數據同步到存儲中,如果寫入磁盤過於忙碌會影響到寫入的吞吐能力。因此,比較好的方案是使用專用的日誌存儲設備,將dataLogDir目錄配置指向該設備。

  • maxClientCnxns

允許每個IP地址發起socket連接的最大數量。Zookeeper通過流量控制和限制值來避免過載情況的發生。當某個IP地址的客戶端建立的連接數大於此值時,服務器會拒絕該IP地址新的連接。

  • initLimit

對於追隨者最初連接到群首時的超時時間,單位為tick(tickTime)值的倍數。

當某個追隨者最初與群首建立連接時,它們之間會傳輸相當多的數據,尤其是追隨者落後整體很多時。配置initLimit參數值取決於群首與追隨者之間的網絡傳輸速度以及傳輸數據量的大小。

但是如果設置值過高,在首次連接到故障的服務器就會消耗更多的時間,同時還會消耗更多的恢復時間。因此在實際部署時,最好進行集群間的網絡基準測試來測試出你所期望的時間。

  • syncLimit

對於追隨者與群首進行sync操作時的超時值,單位為tick(tickTime)值的倍數。

追隨者總是會稍落後於群首,如果群首與追隨者無法進行sync操作,而且超過了syncLimit的tick時間,就會放棄該追隨者。

  • leaderServes

配置值為“yes”或“no”標誌,指示群首服務器是否為客戶端提供服務。擔任群首的服務器需要做很多工作,它需要與所有的追隨者進行通信並會執行所有的變更操作,這意味着群首的負載會比追隨者高很多,如果群首過載,整個系統都有可能受到影響。

4. 進入bin目錄,可以看到很多sh腳本文件,通過zkServer.sh來啟動zookeeper。

操作命令:

啟動命令:.zkServer.sh start

停止命令:.zkServer.sh stop

重啟命令:.zkServer.sh restart

狀態查看命令:.zkServer.sh status

啟動zookeeper服務后,通過status命令可以看到當前服務狀態、使用的配置文件、運行模式。

 這樣Zookeeper的單機部署模式就已經初步完成了。如果需要修改JVM配置,可以修改zkServver.sh文件中的配置,在如下位置加入你需要的參數。

偽集群部署

 偽集群部署指在一台機器上部署多個Zookeeper服務。

1. 首先將之前配置好的Zookeeper服務目錄另外複製兩份,命名為zookeeper-2和zookeeper-3。

2. 然後分別修改三份的zoo.cfg配置項,添加配置 server.x=[hostname]:n:n[:observer],示例如下。

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

Zookeeper服務器需要知道它們如何通信,配置文件中該形式的配置項就指定了服務器x的配置信息,其實x為服務器的ID值(一個整數)。當一個服務器啟動后,就會讀取data目錄下myid文件中的值,之後服務器就會使用這個值作為查找server.x項,通過該項中的數據配置服務器自己。如果需要連接到另外一個服務器y,就會使用server.y項配置信息來與這個服務器進行通信。

hostname為服務器在網絡中的名稱(ip或者主機名),同時後面跟着兩個端口號,第一個端口號用於事務的發送,第二個端口號用於群首選舉。如果最後一個字段標記了observer屬性(選填),服務器就會進入觀察者模式。

三份配置文件的myid和兩個配置端口號以及clientPort不可以重複,因為是在一台機器上部署,生產環境集群部署時可以忽略。最終的配置清單如下:

3. 分別添加myid文件,在data目錄下添加myid文件。

echo ‘1’ > data/myid

4. 分別啟動三個Zookeeper服務,啟動成功后通過status命令可以查看服務的狀態。可以看到目前集群里有一台leader和兩台follower。

集群部署

生產環境的集群部署步驟和偽集群部署並無太多差異,同樣是修改zoo.cfg配置文件並且添加Zookeeper集群信息,集群部署時,客戶端端口號、事務端口號、選舉端口號都可以保持一致。另外集群部署時需要充分考慮集群機器間的網絡情況來制定合理的超時時間設置。

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

擴張的撒哈拉沙漠 破碎的家庭和暴力

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

我家也有太陽能:屋頂型太陽能對鳥兒的致命吸引力

文:宋瑞文(加州能源特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

新北清潔公司,居家、辦公、裝潢細清專業服務

※推薦評價好的iphone維修中心

原子力寄生委員會! 福島輻射污染水問題重重

文:宋瑞文(媽媽監督核電廠聯盟特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

※回頭車貨運收費標準

菲律賓民答那峨島發生規模6.6強震

摘錄自2019年10月16日上報、29日自由時報報導

根據美國地質調查所(USGS)觀測顯示,菲律賓民答那峨島當地時間29日早9時許傳出規模6.6強震。震央位於民答那峨島的達沃市(Davao City)東南方,地震深度僅15.3公里。

截至下午4:00為止,麥格塞塞(Magsaysay)鎮發言人告訴法新社,一名十多歲的男學生逃離校舍時,遭倒下的牆壓死。另有學生在逃出教室時因「踩踏」受傷,所幸保住性命。 科羅納達爾(Koronadal)鎮當局也表示,當地一名66歲男性被倒下的牆壓死。 截至目前至少有50人遭掉落的瓦礫砸傷,包括一所小學的7名師生在逃離校舍時受傷。

本月16日,一場規模6.4的淺層強震才襲擊菲律賓南部,至少1人受傷。根據美國地質調查所,震源深度14公里,震央距離民答那峨島哥倫比歐市(Columbio)約7.7公里。地震發生於當地時間晚間7時37分。其中,基達帕灣市(Kidapawan City)達7級震度,預計仍會有餘震,該市市長宣布17日全面停課。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

宣揚減塑環保 印尼偶戲師回收寶特瓶製玩偶

摘錄自2019年10月29日民視新聞報導

印尼龍目島有一位玩偶大師,為了讓小朋友了解塑膠污染的可怕,因而回收塑膠寶特瓶再廢物利用,製做成演出的玩偶。

劇團的玩偶,從頭到腳,全是塑膠製品。團長拉提夫擔心印尼偶戲傳統失傳,2015年創辦了偶劇團。後來因感到塑膠製品危害無窮,2018年起開始回收塑膠垃圾,主要是寶特瓶,並廢物利用做成玩偶,希望讓小朋友學習從家裡開始管理垃圾,以及養成不亂丟垃圾的習慣。

劇團成員的年齡在7歲到16歲之間。大家先在自家附近撿拾寶特瓶,之後再分類、清洗。接著就發揮創意,將這些瓶子上色、製做耳鼻、手腳等。觀眾不分大人、小孩,都很認同劇團的用心。

劇團原本只在龍目島演出。由於名聲漸漸打開來,開始進軍首都雅加達,也希望能將環保愛地球的理念帶出去。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

因中國反對 鋼鐵產能過剩全球論壇不再續辦

摘錄自2019年10月29日TVBS新聞報導

日本經濟新聞中文網報導,中國、日美歐等33個國家和地區當地時間10月26日在東京召開鋼鐵產能過剩全球論壇的部長級會議。出席論壇的日本經濟產業相梶山弘志在記者會上表示,今後將呼籲中國透過雙邊會談等方式來應對鋼鐵方面的問題。

但由於中國強烈反對論壇延續,該論壇將在2019年到期後終止。

中國官媒新華社在報導中解釋稱,中方認為,論壇到期後結束具有充分的依據和理由。論壇工作職責文件規定,論壇期限為3年,在全體成員協商一致基礎上,可以延長。

此外,新華社引述中方意見表示,中國鋼鐵生產主要滿足國內市場需求。雖然中國鋼鐵產能和產量占全球一半,但中國鋼鐵的消費量也接近全球一半,目前產量的93%用於滿足國內市場的需求,鋼材出口占產量的比例只有7%,沒有衝擊國際市場。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

想大吃柿子?日本福井住宅區2熊佔樹為王

摘錄自2019年10月28日民視新聞報導

25日,日本中部的福井縣勝山市一處住宅區發現有一大一小、研判是親子的兩隻熊,待在一棵位於住宅區的杉樹上,讓鄰近居民人心惶惶。這兩隻熊待在樹上長達3天都沒有下來,牠們佔樹為王的最大理由,是因為隔壁就是一棵結實累累的柿子樹,讓牠們可以不費吹灰之力,只要隨手一抓隨時都有果子可以吃。

由於事發地點位於住宅區,獵師也無法用獵槍驅趕熊,最後還是用了誘捕籠,才終於在28日清晨,捕獲了這兩隻闖入民宅的熊,結束了一場驚魂記。

根據NHK報導,光是這個月,勝山市內就有70起目擊到熊的通報,還有兩人遇襲受傷,研判極可能是被想來吃柿子的熊給襲擊了。

秋天正是柿子盛產的季節,福井縣官方也呼籲民眾,盡早摘下各地果樹上的所有柿子,盡可能斷絕熊的食物來源。

※ 本文與 行政院農業委員會 林務局   合作刊登

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!