基於ZK的分布式集群管理

2021-10-05 20:34:20 字數 1629 閱讀 5396

分布式集群管理常見的需求

主動檢視線上服務節點

檢視服務節點資源使用情況

服務離線通知

服務資源(cpu、記憶體、硬碟)超出閥值通知

架構設計

節點結構

root-manger // 根節點

server00001 ://服務節點 1

server00002 ://服務節點 2

server........n ://服務節點 n

服務狀態資訊:

ipcpu

memory

disk

資料生成與上報

建立臨時節點:

定時變更節點狀態資訊:

主動查詢

1、實時查詢 zookeeper 獲取集群節點的狀態資訊。

被動查詢

監聽根節點下子節點的變化情況,如果cpu 等硬體資源低於警告位則發出警報。

關鍵**

private string server = "192.168.0.149:2181";

zkclient zkclient;

private static agent instance;

private static final string rootpath = "/root-manger";

private static final string servicepath = rootpath + "/service";

private string nodepath;

private thread statethread;

listlist = new arraylist<>();

public static void premain(string args, instrumentation instrumentation)

instance.init();

}// 初始化連線

public void init() catch (interruptedexception e)

}}, "zk_statethread");

statethread.setdaemon(true);

statethread.start();

}// 構建根節點

public void buildroot()

}// 生成服務節點

public void createservernode()

// 監聽服務節點狀態改變

public void updateservernode()

// 更新服務節點狀態

public string getosinfo() catch (jsonprocessingexception e)

}public void updatenode(string path, object data) else

}public static string getlocalip() catch (unknownhostexception e)

return addr.gethostaddress();}}

ZK分布式鎖

分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式。如果不同的系統或者是同乙個系統的不同主機之間共享了乙個或者一組資源,那麼訪問這些資源的時候,往往需要一些互斥手段來防止彼此之間的干擾,以保證一致性,在這種情況下,就需要分布式鎖了 zookeeper中有一種節點叫做順序節點,假如我們在 lock...

zk分布式鎖

zk 分布式鎖,其實可以做的比較簡單,就是某個節點嘗試建立臨時 znode,此時建立成功了就獲取了這個鎖 這個時候別的客戶端來建立鎖會失敗,只能註冊個 監聽這個鎖。釋放鎖就是刪除這個 znode,一旦釋放掉就會通知客戶端,然後有乙個等待著的客戶端就可以再次重新加鎖。zookeepersession ...

用zkClient基於zk實現分布式鎖

用zk做分布式鎖的基本原理 zk的節點特性,在同級目錄下,相同名稱的節點只有乙個 基於該思想,有2中建立分布式鎖的思路,分別如下 給乙個唯一的值,幾個程序同時去建立該節點,只有乙個能成功,成功的程序處理完業務之後,刪除掉該節點,剩下的程序又去競爭 缺點,當競爭的節點較多時,會產生驚群效應 另乙個思路...