基於zookeeper集群下的分布式佇列

2021-09-03 01:38:13 字數 1748 閱讀 7473

在傳統的單程序程式設計中,我們使用佇列來儲存一些資料結構,用來在多執行緒之間共享或傳遞資料。

分布式環境下,我們同樣需要乙個類似單程序佇列的元件,用來實現跨程序、跨主機、跨網路的資料共享和資料傳遞,這就是我們的分布式佇列。

zookeeper可以通過順序節點實現分布式佇列。

圖中左側代表zookeeper集群,右側代表消費者和生產者。

生產者通過在queue節點下建立順序節點來存放資料,消費者通過讀取順序節點來消費資料。

offer核心演算法流程

poll核心演算法流程

1、新建工程:zookeeper-queue

/*** 入隊

*/public void offer(string nodedata) 節點", "/queue");

zkclient.createpersistent("/queue");

}string path = "/queue" + "/queue-";

string ephemeralsequential = zkclient.createephemeralsequential(path, nodedata);

logger.info("{}建立{}佇列節點", nodedata, ephemeralsequential);

}public void poll() else if (num1 < num2) else

}});

logger.info("節點{}的子節點有:{}", "/queue", children.tostring());

for (string string : children) 出隊,資訊為:{}", path, data);

zkclient.delete(path);

}logger.info("佇列節點{}完成出隊", "/queue");}}

weblistener.class:

@component

public class weblistener implements servletcontextlistener catch (exception e)

//消費者出隊

zookeeperqueue.poll();

}@override

public void contextdestroyed(servletcontextevent sce)

}

2、執行及執行結果:

windows下zookeeper集群的搭建

這裡面有windows下簡單的搭建 先將zk考三份 然後進入conf裡面修改zoo.cfg 第乙個裡面0 the number of milliseconds of each tick ticktime 2000 initlimit 10synclimit 5datadir e zookeeper ...

zookeeper集群 Zookeeper集群搭建

zookeeper有兩種執行模式 單機模式和集群模式。因為單機模式只是在開發測試時使用,所以這裡就不介紹單機模式的搭建。注意 因為zookeeper遵循半數原則,所以集群節點個數最好是奇數。ip位址 系統環境 192.168.0.10 centos7 jdk8 192.168.0.11 centos...

zookeeper集群 Zookeeper集群搭建

埠分別為 2181 2182 2183。投票選舉埠分別為 2881 3881 2882 3882 2883 3883。tar zxf zookeeper 3.4.6.tar.gz 將解壓後的 zookeeper 應用目錄重新命名,便於管理 在 zookeeper01 應用目錄中,建立 data 目錄...