SpringBoot整合Zookeeper
引入Jar包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version>
</dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.1.0</version><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions>
</dependency>
Zookeeper配置
Zookeeper配置连接信息
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ZookeeperConfig {@Bean("zookeeperClient")public CuratorFramework create() {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", retryPolicy);client.start();return client;}
}
Zookeeper 的使用
节点监控
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.TreeCache;
import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
import org.apache.curator.framework.recipes.cache.TreeCacheListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import com.plf.zookeeper.service.NodeService;@Component
@Order(1)
public class ZookeeperInit implements CommandLineRunner {private static final String ROOT_PATH = "/server";public TreeCache treeCache;@Autowiredprivate CuratorFramework zookeeperClient;@Autowiredprivate NodeService nodeService;@Overridepublic void run(String... args) throws Exception {if (!nodeService.isExitNode(ROOT_PATH)) {nodeService.createNode(ROOT_PATH);}// 监视某个节点的数据变化treeCache = new TreeCache(zookeeperClient, ROOT_PATH);treeCache.getListenable().addListener(new TreeCacheListener() {@Overridepublic void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {ChildData eventData = event.getData();switch (event.getType()) {case NODE_ADDED:System.out.println(eventData.getPath() + "节点添加" + eventData.getPath() + "\t添加数据为:"+ new String(eventData.getData()));break;case NODE_UPDATED:System.out.println(eventData.getPath() + "节点数据更新\t更新数据为:" + new String(eventData.getData())+ "\t版本为:" + eventData.getStat().getVersion());break;case NODE_REMOVED:System.out.println(eventData.getPath() + "节点被删除");break;default:break;}}});// 启动监视器对象treeCache.start();}
}
节点新增
import org.apache.curator.framework.CuratorFramework;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class NodeService {@Autowiredprivate CuratorFramework zookeeperClient;public void createNode(String nodePath) {try {zookeeperClient.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath(nodePath);} catch (Exception e) {e.printStackTrace();}}public boolean isExitNode(String path) {try {Stat stat = zookeeperClient.checkExists().forPath(path);if(stat == null) {return false;}return true;} catch (Exception e) {e.printStackTrace();}return false;}
}
还有很多其他的方法可以自行扩展。
相关文章:
SpringBoot整合Zookeeper
引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>s…...
Java和C#选哪个?
选择语言是一个非常重要的决定,因为它可能会对你的职业生涯产生深远的影响。C#和Java都是非常流行的编程语言,它们都有自己的优点和适用场景。 可以从下面几个方面来考虑: 1、就业前景: 就业前景是选择专业时需要考虑的一个非常…...
首批!棱镜七彩通过汽车云-汽车软件研发效能成熟度模型能力评估
2023年7月25-26日,由中国信息通信研究院、中国通信标准化协会联合主办的“2023年可信云大会”隆重召开。会上,在中国信息通信研究院云计算与大数据研究所副所长栗蔚的主持下,中国信通院发布了“2023年上半年可信云评估结果”,并由…...
【Docker】容器的数据卷
目录 一、数据卷的概念与作用 二、数据卷的配置 三、数据卷容器的配置 一、数据卷的概念与作用 在了解什么是数据卷之前我们先来思考以下这些问题: 1.如果我们一个容器在使用后被删除,那么他里面的数据是否也会丢失呢?比如容器内的MySQL的…...
CentOS7安装jenkins
一、安装相关依赖 sudo yum install -y wget sudo yum install -y fontconfig java-11-openjdk二、安装Jenkins 可以查看官网的安装方式 安装官网步骤 先导入jenkins yum 源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo…...
Hadoop的伪分布式安装方法
实验环境: 操作系统:Linux (Ubuntu 20.04.5) Hadoop版本:3.3.2 JDK版本:1.8.0_162 hadoop与jdk的安装包可详见博客中: https://blog.csdn.net/weixin_52308622/article/details/131947961?spm1001.2014.3001.550…...
iOS 应用上架的步骤和工具简介
APP开发助手是一款能够辅助iOS APP上架到App Store的工具,它解决了iOS APP上架流程繁琐且耗时的问题,帮助跨平台APP开发者顺利将应用上架到苹果应用商店。最重要的是,即使没有配置Mac苹果机,也可以使用该工具完成一系列操作&#…...
【信号去噪】基于马氏距离和EDF统计(IEE-TSP)的基于小波的多元信号去噪方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
智驾SOC shell编程应用实战笔记
文章目录 1. 引言2. 基础2.1 "$"的作用3. 实战笔记3.1 统计某一端口的连接数3.2 获取当前脚本执行的绝对路径3.3 判断某一文件是否存在参考1. 引言 智驾SOC(System on a Chip)是指集成了处理器、存储器、外设和其他功能模块的片上系统,广泛应用于汽车领域中的智能…...
C#实现计算题验证码
开发环境:C#,VS2019,.NET Core 3.1,ASP.NET Core API 1、建立一个验证码控制器 新建两个方法Create和Check,Create用于创建验证码,Check用于验证它是否有效。 声明一个静态类变量存放列表,列…...
【lesson6】Linux下:第一个小程序,进度条代码
文章目录 准备工作sleep问题fflush回车与换行的区别 进度条代码 准备工作 sleep问题 首先我们来看一段代码: 这时候有个 问题这个代码是输出“hello world”还是先sleep三秒? 再来一段代码 这个代码是先sleep三秒还是先输出“hello world”ÿ…...
PostgreSQL实战-pg13主从复制切换测试
PostgreSQL实战-pg13主从复制切换测试 配置PostgreSQL的环境变量 修改/etc/profile文件, vim /etc/profile添加如下内容: # 指定postgres的数据位置 export PGDATA=/var/lib/pg13/data数据联动测试 清空数据表数据 TRUNCATE TABLE tablename;主库清空数据表数据 从库对…...
如何使用OpenCV库进行图像检测
import cv2 # 加载Haar级联分类器 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml) # 读取输入图像 img cv2.imread(input_image.jpg) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用Haar级联分类器进行人脸检测 …...
Mybatis中where 1=1 浅析
在一些集成mybatis的工程中经常看到where11 的代码,也有同事问我,这样写有什么用,下面对其进行简单的分析记录一下。 1、场景 看下面这样一段xml中的代码 <select id"queryBook" parameterType"com.platform.entity.Book…...
element中el-input组件限制输入条件(数字、特殊字符)
1、只能输入纯数字 <el-input v-model"aaa" type"text" input"(v)>(aaav.replace(/[^\d]/g,))" /> 2、只能输入纯数字和小数(比如:6.66) <el-input v-model"aaa" type"text&quo…...
会议OA项目之会议发布(一)
目录 前言: 会议发布的产品原型图: 1.会议发布 1.1实现的特色功能: 1.2思路: 使用的数据库: 我们要实现多功能下拉框的形式选择可以参考原文档:https://hnzzmsf.github.io/example/example_v4.html#down…...
【Android】对象为null的一个原因:在方法内部,重新创建了一个新的对象并将其赋值给原对象,但这并不会改变原始的原对象的引用
疑问 现在有代码如下: private GameList multiGameList;/*** 获取多人游戏列表** return 多人游戏列表*/ public GameList getMultiGameList() {if (null multiGameList) {createMultiOrSingleGameList(multiGameList,GameList.TYPE_MULTI);}return multiGameLis…...
macbook 软件iMovie for Mac(专业视频剪辑工具)中文版
iMovie mac中文版是一款针对Mac平台量身定做的视频编辑工具,软件凭借流线型设计和直观的编辑功能,可以让您感受前所未有的方式制作好莱坞风格的预告片和精美电影,并且还可以浏览视频资料库,快速共享挚爱瞬间,创建精美的…...
web APIs-练习一
轮播图点击切换: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…...
AX88179A千兆网卡芯片,支持switch联网
AX88179是世界上第一个USB 3.0,千兆以太网控制器,它在单一芯片上集成了USB 3.0 PHY和10/100/1000Mbps千兆以太网MAC / PHY。AX88179是最新此外ASIX的USB-到-LAN产品组合,提供一个小的形式因素的解决方案和插头-和-打法可用性,使嵌…...
Qwen3-14B部署避坑指南:从环境配置到服务上线的完整流程
Qwen3-14B部署避坑指南:从环境配置到服务上线的完整流程 1. 环境准备与系统要求 在开始部署Qwen3-14B之前,确保你的硬件和软件环境满足以下要求: 1.1 硬件配置建议 组件最低配置推荐配置GPUNVIDIA T4 (16GB)NVIDIA A10G (24GB)或A100 (40…...
Lingbot-Depth-Pretrain-ViTL-14在互联网内容审核中的深度场景理解应用
Lingbot-Depth-Pretrain-ViTL-14在互联网内容审核中的深度场景理解应用 每天,互联网上都会产生数以亿计的图片和视频。对于平台的内容审核团队来说,这既是流量的盛宴,也是巨大的挑战。传统的审核方式,无论是依赖人工还是基于二维…...
HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集
HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集 最近在尝试各种翻译工具时,我偶然间用到了HUNYUAN-MT 7B模型来处理一些工作上的专业文档。说实话,一开始没抱太大期望,毕竟专业翻译的门槛不低,尤其是那些充满术语和…...
Linux七大常见误解与真相解析
1. Linux 神话的起源与现状Linux 作为开源操作系统的代表,自1991年诞生以来就伴随着各种误解和神话。这些误解往往源于早期Linux的使用门槛较高、图形界面不够完善等历史原因。但经过30多年的发展,现代Linux发行版已经发生了翻天覆地的变化。在技术社区中…...
Realtek RTL8821CU无线网卡驱动解决方案 - Linux系统WiFi适配完美指南
Realtek RTL8821CU无线网卡驱动解决方案 - Linux系统WiFi适配完美指南 【免费下载链接】rtl8821CU Realtek RTL8811CU/RTL8821CU USB Wi-Fi adapter driver for Linux 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8821CU 你是否在Linux系统上使用Realtek RTL8821CU…...
**发散创新:基于微应用架构的轻量级权限控制实战设计**在现代前端开
发散创新:基于微应用架构的轻量级权限控制实战设计 在现代前端开发中,**微应用(Micro Frontend)*8 已成为构建复杂单页应用(SPA)的标准方案之一。它允许团队独立开发、部署和维护各自的功能模块,…...
AI赋能:让快马平台解析21届智能车赛规则并生成智能算法代码
最近在准备21届智能车比赛时,发现今年的赛道规则特别复杂,各种新加入的元素和评分标准让人有点头大。正好尝试用InsCode(快马)平台的AI辅助开发功能来帮忙解析规则并生成算法代码,整个过程意外地顺利,分享下具体实现思路。 规则文…...
认知内耗:在亚马逊,为何品牌名内部的“关键词”正在相互厮杀
在亚马逊的品牌丛林中,最隐蔽的悲剧莫过于:你精心构思的品牌名,其内部的各个组成部分(如“欧文斯”、“康宁”、“玻璃纤维”),并未协同指向你,反而各自激活了消费者心智中其他更强大品牌的“认…...
Oracle日期处理进阶:除了EXTRACT,这些场景你还可以试试INTERVAL和TO_CHAR
Oracle日期处理进阶:解锁INTERVAL与TO_CHAR的高阶应用场景 在Oracle数据库的日常开发中,日期时间处理是每个开发者都无法回避的课题。当我们已经熟练掌握了EXTRACT这类基础函数后,往往会发现单纯提取日期部分已经无法满足复杂业务场景的需求—…...
Python大麦网智能抢票脚本:三分钟搭建你的自动购票系统
Python大麦网智能抢票脚本:三分钟搭建你的自动购票系统 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到心仪的演唱会门票而烦恼吗?每次开…...
