欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ZooKeeper異常該怎么解決

ZooKeeper異常該怎么解決,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)建站專注于通江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城系統(tǒng)網(wǎng)站開發(fā)。通江網(wǎng)站建設(shè)公司,為通江等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

在Java API中的每一個ZooKeeper操作都在其throws子句中聲明了兩種類型的異常,分別是InterruptedException和KeeperException。

(一)InterruptedException異常

如果操作被中斷,則會有一個InterruptedException異常被拋出。在Java語言中有一個取消阻塞方法的標(biāo)準(zhǔn)機制,即針對存在阻塞方法的線程調(diào)用interrupt()。一個成功的取消操作將產(chǎn)生一個InterruptedException異常。

ZooKeeper也遵循這一機制,因此你可以使用這種方法來取消一個ZooKeeper操作。使用了ZooKeeper的類或庫通常會傳播InterruptedException異常,使客戶端能夠取消它們的操作。InterruptedException異常并不意味著有故障,而是表明相應(yīng)的操作已經(jīng)被取消,所以在配置服務(wù)的示例中,可以通過傳播異常來中止應(yīng)用程序的運行。

(二)KeeperException異常

(1) 如果ZooKeeper服務(wù)器發(fā)出一個錯誤信號或與服務(wù)器存在通信問題,拋出的則是KeeperException異常。

針對不同的錯誤情況,KeeperException異常存在不同的子類。

例如: KeeperException.NoNodeException是KeeperException的一個子類,如果你試圖針對一個不存在的znode執(zhí)行操作,拋出的則是該異常。

每一個KeeperException異常的子類都對應(yīng)一個關(guān)于錯誤類型信息的代碼。

例如: KeeperException.NoNodeException異常的代碼是KeeperException.Code.NONODE

(2) 有兩種方法被用來處理KeeperException異常:

①捕捉KeeperException異常,并且通過檢測它的代碼來決定采取何種補救措施;

另一種是捕捉等價的KeeperException子類,并且在每段捕捉代碼中執(zhí)行相應(yīng)的操作。

(3) KeeperException異常分為三大類

① 狀態(tài)異常 

當(dāng)一個操作因不能被應(yīng)用于znode樹而導(dǎo)致失敗時,就會出現(xiàn)狀態(tài)異常。狀態(tài)異常產(chǎn)生的原因通常是在同一時間有另外一個進(jìn)程正在修改znode。例如,如果一個znode先被另外一個進(jìn)程更新了,根據(jù)版本號執(zhí)行setData操作的進(jìn)程就會失敗,并收到一個KeeperException.BadVersionException異常,這是因為版本號不匹配。程序員通常都知道這種沖突總是存在的,也都會編寫代碼來進(jìn)行處理。

一些狀態(tài)異常會指出程序中的錯誤,例如KeeperException.NoChildrenForEphemeralsException異常,試圖在短暫znode下創(chuàng)建子節(jié)點時就會拋出該異常。

② 可恢復(fù)異常

可恢復(fù)的異常是指那些應(yīng)用程序能夠在同一個ZooKeeper會話中恢復(fù)的異常。一個可恢復(fù)的異常是通過KeeperException.ConnectionLossException來表示的,它意味著已經(jīng)丟失了與ZooKeeper的連接。ZooKeeper會嘗試重新連接,并且在大多數(shù)情況下重新連接會成功,并確保會話是完整的。

但是ZooKeeper不能判斷與KeeperException.ConnectionLossException異常相關(guān)的操作是否成功執(zhí)行。這種情況就是部分失敗的一個例子。這時程序員有責(zé)任來解決這種不確定性,并且根據(jù)應(yīng)用的情況來采取適當(dāng)?shù)牟僮鳌T谶@一點上,就需要對“冪等”(idempotent)操作和“非冪等”(Nonidempotent)操作進(jìn)行區(qū)分。冪等操作是指那些一次或多次執(zhí)行都會產(chǎn)生相同結(jié)果的操作,例如讀請求或無條件執(zhí)行的setData操作。對于冪等操作,只需要簡單地進(jìn)行重試即可。對于非冪等操作,就不能盲目地進(jìn)行重試,因為它們多次執(zhí)行的結(jié)果與一次執(zhí)行是完全不同的。程序可以通過在znode的路徑它的數(shù)據(jù)中編碼信息來檢測是否非冪等操怍的更新已經(jīng)完成。

③不可恢復(fù)的異常 

在某些情況下,ZooKeeper會話會失效——也許因為超時或因為會話被關(guān)閉,兩種情況下都會收到KeeperException.SessionExpiredException異常,或因為身份驗證失敗,KeeperException.AuthFailedException異常。無論上述哪種情況,所有與會話相關(guān)聯(lián)的短暫znode都將丟失,因此應(yīng)用程序需要在重新連接到ZooKeeper之前重建它的狀態(tài)。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

文章標(biāo)題:ZooKeeper異常該怎么解決
文章轉(zhuǎn)載:http://www.chinadenli.net/article22/gcsccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司App開發(fā)電子商務(wù)網(wǎng)站內(nèi)鏈云服務(wù)器企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)