完整的故障處理恢復機制

2021-09-25 20:54:11 字數 818 閱讀 4462

一、完整的故障處理恢復機制

服務的發現依賴註冊在zk上的服務節點

一般閘道器層與業務邏輯層都是使用長連線,一般不使用http協議(原因:io不高,都包含頭資訊,http經常是短連線),一般使用rpc通訊

1.故障自動發現

1.1. 一般業務層(zkclient)與zk都維護著乙個心跳, 業務邏輯層提供的伺服器掛了,zk就會檢測到。

1.2.zk不能發現的場景 

另外:當業務邏輯層提供的服務假死,但是zkclient程序心跳是存在的,所以這時zk是發現不了服務異常,這時就靠閘道器自己發現,就是所謂的融斷機制。

閘道器發現業務邏輯層服務異常機制:通過將業務邏輯層返回響應碼放到乙個佇列,另外開啟乙個執行緒每隔一秒去掃瞄這個佇列,當這個佇列中的返回響應碼超過一定比例時就可以斷定服務異常,就可以將對應該業務邏輯的連線線程池斷了。同時閘道器層會將對應的業務邏輯層對應的資訊給控制中心元件,控制中心會將對應的業務邏輯層服務重啟(控制中心一般會有乙個控制中心的客戶端agent在業務邏輯層)

1.2.1.虛擬機器與物理機場景 :

agent重啟步驟:1)、jstack 2次  列印堆疊資訊且列印2次用於上下文對比

2)、kill:將執行緒殺了後zk就會察覺然後將執行緒摘除

3)、sleep:給zk預留時間

4)、start:給zk通知閘道器

1.2.2.容器場景 :

2)、kill pod

2.故障服務自動摘除

當zk服務端發現客戶端掛了就會將對應的節點刪掉,閘道器層通過watch機制就會發現對應的業務節點掛了,就會將對應的業務節點的長連線接斷掉。

3.請求自動重試

4.服務恢復自動發現

Eclipse撤銷恢復機制分享

來看下命令模式的高階篇。redo undo操作的實現 1.首先參照 上面講解了撤銷恢復的機制 2.機制中講了三種上下文 globalundocontext 全域性上下文 與任意乙個上下文匹配,這時都能重操作歷史記錄堆疊中取出來 undocontext 輕量級 乙個簡單,輕量級的undocontext...

mysql 原理 innodb恢復機制

舉例說明 機制 資料頁a的lsn為100,資料頁b的lsn為200,checkpoint lsn為150,系統lsn為300,表示當前系統已經更新到300,小於150的資料頁已經被刷到磁碟上,因此資料頁a的最新資料一定在磁碟上,而資料頁b則不一定,有可能還在記憶體中。lsn本身你可以理解為不同時間點...

資料庫 基於日誌系統的恢復機制

對於需要持久化資料的軟體或者系統,必須要解決的問題是如何處理意外中斷導致的資料丟失問題。比如乙個交易系統,使用者正在購買商品,突然斷電了,那麼如何恢復使用者的賬戶資訊?該不該扣款?商家的商品到底有沒有賣出?這一些列的問題需要資料庫恢復機制解決。而恢復機制需要借助日誌系統才能展開。日誌記錄了系統中發生...