电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java操作Zookeeper原理及過程詳解

瀏覽:49日期:2022-09-01 13:29:13

ZooKeeper 是一個典型的分布式數據一致性解決方案,分布式應用程序可以基于 ZooKeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。

Zookeeper 一個最常用的使用場景就是用于擔任服務生產者和服務消費者的注冊中心。 服務生產者將自己提供的服務注冊到Zookeeper中心,服務的消費者在進行服務調用的時候先到Zookeeper中查找服務,獲取到服務生產者的詳細信息之后,再去調用服務生產者的內容與數據。如下圖所示,在 Dubbo架構中 Zookeeper 就擔任了注冊中心這一角色。

maven依賴

<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version></dependency>

程序其它依賴:

<!-- Logger(log4j2) --><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.2</version></dependency><!-- Log4j 1.x API Bridge --><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.11.2</version></dependency><!-- SLF4J Bridge --><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.11.2</version></dependency><dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions></dependency>

API操作代碼:

package com.zhi.test;import java.util.List;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;import org.junit.jupiter.api.AfterAll;import org.junit.jupiter.api.BeforeAll;import org.junit.jupiter.api.MethodOrderer;import org.junit.jupiter.api.Order;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.TestInstance;import org.junit.jupiter.api.TestInstance.Lifecycle;import org.junit.jupiter.api.TestMethodOrder;/** * Zookeeper操作測試 * * @author 張遠志 * @since 2020年5月3日14:31:28 * */@TestInstance(Lifecycle.PER_CLASS)@TestMethodOrder(MethodOrderer.OrderAnnotation.class)public class ZookeeperTest { private final Logger logger = LogManager.getLogger(this.getClass()); private ZooKeeper zooKeeper; private final String path = '/test'; @BeforeAll public void init() throws Exception { zooKeeper = new ZooKeeper('192.168.59.131:2181', 60000, new Watcher() { public void process(WatchedEvent event) {logger.info('事件類型:{},路徑:{}', event.getType(), event.getPath()); } }); } /** * 添加數據,當路徑已經存在時會報錯,初始版本號為0。第三個參數是權限控制。 <br> * 第四個參數,CreateMode: * <li>PERSISTENT:持久化保存 * <li>PERSISTENT_SEQUENTIAL:持久化保存,并且路徑附加一個自動增長的序號 * <li>EPHEMERAL:臨時數據,客戶端斷開連接時自動刪除數據(dubbo就是采用這種機制) * <li>EPHEMERAL_SEQUENTIAL:客戶端斷開連接時自動刪除數據,并且路徑會附加一個自動增長的序號 * <li>CONTAINER: * <li>PERSISTENT_WITH_TTL:客戶端斷開連接時自動刪除數據,當節點在指定時間沒有被修改且沒有子目錄時,數據會被刪除 * <li>PERSISTENT_SEQUENTIAL_WITH_TTL:客戶端斷開連接時自動刪除數據,路徑會附加一個自動增長的序號,且當節點在指定時間沒有被修改且沒有子目錄時,數據會被刪除 */ @Order(1) @Test public void create() { try { String back = zooKeeper.create(path, '這是一個測試'.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); logger.info('添加一條數據成功,實際路徑:{}', back); } catch (Exception e) { logger.error('調用create出錯', e); } } /** * 判斷路徑是否存在,不存在時返回null */ @Order(2) @Test public void exists() { try { Stat stat = zooKeeper.exists(path, false); logger.info('路徑為{}的節點{}存在', path, stat == null ? '不' : ''); } catch (Exception e) { logger.error('調用exists出錯', e); } } /** * 查詢數據,路徑不存在時會報錯 */ @Order(3) @Test public void find() { try { byte[] bits = zooKeeper.getData(path, false, new Stat()); // 路徑不存在時會報錯 String data = new String(bits); logger.info('路徑{}查詢到數據:{}', path, data); } catch (Exception e) { logger.error('調用getData出錯', e); } } /** * 獲取子目錄,結果為空時返回一個長度為0的ArrayList */ @Order(3) @Test public void children() { try { List<String> list = zooKeeper.getChildren(path, false); logger.info('路徑{}的子目錄有:{}', path, String.join('、', list.toArray(new String[0]))); } catch (Exception e) { logger.error('調用getChildren出錯', e); } } /** * 修改數據,路徑不存在時會報錯,版本號與存儲中不一致時也報錯 */ @Order(4) @Test public void udpate() { try { Stat stat = zooKeeper.exists(path, false); if (stat != null) {stat = zooKeeper.setData(path, '這是一個修改測試'.getBytes(), stat.getVersion()); // 版本號為-1時不做版本校驗logger.info('數據修改成功,原版本號:{},新版本號:{}', stat.getAversion(), stat.getVersion()); } } catch (Exception e) { logger.error('調用setData出錯', e); } } /** * 刪除節點,路徑不存在時報錯,版本號不一致時也會報錯 */ @Order(5) @Test public void delete() { try { zooKeeper.delete(path, -1); // -1表示不做版本校驗 logger.info('根據path刪除數據成功'); } catch (Exception e) { logger.error('調用delete出錯', e); } } @AfterAll public void destory() throws Exception { if (zooKeeper != null) { zooKeeper.close(); } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 浙江皓格药业有限公司| 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 壹作文_中小学生优秀满分作文大全 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 电表箱-浙江迈峰电力设备有限公司-电表箱专业制造商 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 |