操作Zookeeper

告别误唤醒!S32K3xx低功耗设计避坑指南:Fast Standby模式与WISR寄存器操作详解 本文深入解析了NXP S32K3xx系列MCU在低功耗设计中常见的误唤醒问题,并提供了基于Fast Standby模式的解决方案。文章重点剖析了DCMRWF5寄存器的配置方法、WISR/WISR_64唤醒中断状态寄存器的标志位处理策略,以及如何利用32KB Standby SRAM保存唤醒状态,从而帮助开发者构建稳定可靠的汽车电子低功耗系统。 阅读详情

操作Zookeeper

 

可以通过图形化界面进行操作使用的工具是 zookeeper-dev-ZooInspector.jar

连接到我的zk之后:

1、Java操作zk

依赖:

  <dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.6</version>
	</dependency>
  </dependencies>
     

代码:

package com.toov5.zookeeper;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;

public class JavaZKTest {
    private static final String CONNECTSTRING ="192.168.91.5";
    private static int   SESSIONTIMEOUT=5000;  //超时时间
    //使用Java并发包的 信号量 控制zk连接成功之后 开始创建
    private static final CountDownLatch countDownLatch = new CountDownLatch(1);
    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
        ZooKeeper zooKeeper = null;
        try {
            //1zk创建了一个连接
             zooKeeper =  new ZooKeeper(CONNECTSTRING, SESSIONTIMEOUT, new Watcher() {
                
                public void process(WatchedEvent event) {
                    //监听节点是否发生变化  连接成功 (代码从上往下执行,创建节点 直接copy)
                    // 获取事件状态
                    KeeperState keeperState = event.getState();
                    // 获取事件类型
                    EventType eventType = event.getType();
                    if (KeeperState.SyncConnected == keeperState) {  //状态判断
                        if (EventType.None == eventType) {
                            countDownLatch.countDown(); //--操作 到0时候 await启动了哦
                            System.out.println("zk 启动连接..."); //才可以去创建节点的逻辑执行  需要用到信号量
                        }
                    }    
                }
            });    
             countDownLatch.await();  //不为0  一直等待~~
               //创建持久节点  
               //Ids.OPEN_ACL_UNSAFE连接权限
              //// CreateMode对应好多模式  关于 SEQENTIAL 重名情况下 加了个id 保证唯一性
            String createNode = zooKeeper.create("/test666", "toov5".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println("节点名称"+createNode);
        } catch (Exception e) {
            
        }finally {
            if (zooKeeper != null) {  //关闭连接
                zooKeeper.close();          
            }
        }
    
 }
}

结果:

 

 

 

 注意如果创建父子关系,必须先创建父 在创建子

然后:

 

 

 说明:

  1. 1.   创建持久节点,并且允许任何服务器可以操作

      String result = zk.create("/itmayiedu_Lasting", "Lasting".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

      System.out.println("result:" + result);

  1. 2.   创建临时节点

      String result = zk.create("/itmayiedu_temp", "temp".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);

      System.out.println("result:" + result);

 

创建节点(znode) 方法:

create:
提供了两套创建节点的方法,同步和异步创建节点方式。
同步方式:
参数1,节点路径《名称) : InodeName (不允许递归创建节点,也就是说在父节点不存在
的情况下,不允许创建子节点)
参数2,节点内容: 要求类型是字节数组(也就是说,不支持序列化方式,如果需要实现序
列化,可使用java相关序列化框架,如Hessian、Kryo框架)
参數3,节点权限: 使用Ids.OPEN_ACL_UNSAFE开放权限即可。(这个参数一般在权展
没有太高要求的场景下,没必要关注)
参数4,节点类型: 创建节点的类型: CreateMode,提供四种首点象型

 

PERSISTENT                                    持久化节点

PERSISTENT_SEQUENTIAL          顺序自动编号持久化节点,这种节点会根据当前已存在的节点数自动加 1

EPHEMERAL                                   临时节点, 客户端session超时这类节点就会被自动删除

EPHEMERAL_SEQUENTIAL          临时自动编号节点

 

Watcher

在ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。

 

 

什么是Watcher接口

同一个事件类型在不同的通知状态中代表的含义有所不同,表列举了常见的通知状态和事件类型。

Watcher通知状态与事件类型一览

KeeperState

EventType

触发条件

说明

 

None
(-1)

客户端与服务端成功建立连接

 

SyncConnected
(0)

NodeCreated
(1)

Watcher监听的对应数据节点被创建

 

 

NodeDeleted
(2)

Watcher监听的对应数据节点被删除

此时客户端和服务器处于连接状态

 

NodeDataChanged
(3)

Watcher监听的对应数据节点的数据内容发生变更

 

 

NodeChildChanged
(4)

Wather监听的对应数据节点的子节点列表发生变更

 

Disconnected
(0)

None
(-1)

客户端与ZooKeeper服务器断开连接

此时客户端和服务器处于断开连接状态

Expired
(-112)

Node
(-1)

会话超时

此时客户端会话失效,通常同时也会受到SessionExpiredException异常

AuthFailed
(4)

None
(-1)

通常有两种情况,1:使用错误的schema进行权限检查 2:SASL权限检查失败

通常同时也会收到AuthFailedException异常

 

表7-3中列举了ZooKeeper中最常见的几个通知状态和事件类型。

回调方法process()

process方法是Watcher接口中的一个回调方法,当ZooKeeper向客户端发送一个Watcher事件通知时,客户端就会对相应的process方法进行回调,从而实现对事件的处理。process方法的定义如下:

abstract public void process(WatchedEvent event);

这个回调方法的定义非常简单,我们重点看下方法的参数定义:WatchedEvent。

WatchedEvent包含了每一个事件的三个基本属性:通知状态(keeperState),事件类型(EventType)和节点路径(path),其数据结构如图7-5所示。ZooKeeper使用WatchedEvent对象来封装服务端事件并传递给Watcher,从而方便回调方法process对服务端事件进行处理。

提到WatchedEvent,不得不讲下WatcherEvent实体。笼统地讲,两者表示的是同一个事物,都是对一个服务端事件的封装。不同的是,WatchedEvent是一个逻辑事件,用于服务端和客户端程序执行过程中所需的逻辑对象,而WatcherEvent因为实现了序列化接口,因此可以用于网络传输。

服务端在生成WatchedEvent事件之后,会调用getWrapper方法将自己包装成一个可序列化的WatcherEvent事件,以便通过网络传输到客户端。客户端在接收到服务端的这个事件对象后,首先会将WatcherEvent还原成一个WatchedEvent事件,并传递给process方法处理,回调方法process根据入参就能够解析出完整的服务端事件了。

需要注意的一点是,无论是WatchedEvent还是WatcherEvent,其对ZooKeeper服务端事件的封装都是机及其简单的。举个例子来说,当/zk-book这个节点的数据发生变更时,服务端会发送给客户端一个“ZNode数据内容变更”事件,客户端只能够接收到如下信

public class ZkClientWatcher implements Watcher {
    // 集群连接地址
    private static final String CONNECT_ADDRES = "192.168.110.159:2181,192.168.110.160:2181,192.168.110.162:2181";
    // 会话超时时间
    private static final int SESSIONTIME = 2000;
    // 信号量,让zk在连接之前等待,连接成功后才能往下走.
    private static final CountDownLatch countDownLatch = new CountDownLatch(1);
    private static String LOG_MAIN = "【main】 ";
    private ZooKeeper zk;

    public void createConnection(String connectAddres, int sessionTimeOut) {
        try {
            zk = new ZooKeeper(connectAddres, sessionTimeOut, this);
            System.out.println(LOG_MAIN + "zk 开始启动连接服务器....");
            countDownLatch.await();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean createPath(String path, String data) {
        try {
            this.exists(path, true);
            this.zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println(LOG_MAIN + "节点创建成功, Path:" + path + ",data:" + data);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 判断指定节点是否存在
     * 
     * @param path
     *            节点路径
     */
    public Stat exists(String path, boolean needWatch) {
        try {
            return this.zk.exists(path, needWatch);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public boolean updateNode(String path,String data) throws KeeperException, InterruptedException {
        exists(path, true);
        this.zk.setData(path, data.getBytes(), -1);
        return false;
    }

    public void process(WatchedEvent watchedEvent) {

        // 获取事件状态
        KeeperState keeperState = watchedEvent.getState();
        // 获取事件类型
        EventType eventType = watchedEvent.getType();
        // zk 路径
        String path = watchedEvent.getPath();
        System.out.println("进入到 process() keeperState:" + keeperState + ", eventType:" + eventType + ", path:" + path);
        // 判断是否建立连接
        if (KeeperState.SyncConnected == keeperState) {
            if (EventType.None == eventType) {
                // 如果建立建立成功,让后程序往下走
                System.out.println(LOG_MAIN + "zk 建立连接成功!");
                countDownLatch.countDown();
            } else if (EventType.NodeCreated == eventType) {
                System.out.println(LOG_MAIN + "事件通知,新增node节点" + path);
            } else if (EventType.NodeDataChanged == eventType) {
                System.out.println(LOG_MAIN + "事件通知,当前node节点" + path + "被修改....");
            }
            else if (EventType.NodeDeleted == eventType) {
                System.out.println(LOG_MAIN + "事件通知,当前node节点" + path + "被删除....");
            }

        }
        System.out.println("--------------------------------------------------------");
    }

    public static void main(String[] args) throws KeeperException, InterruptedException {
        ZkClientWatcher zkClientWatcher = new ZkClientWatcher();
        zkClientWatcher.createConnection(CONNECT_ADDRES, SESSIONTIME);
//        boolean createResult = zkClientWatcher.createPath("/p15", "pa-644064");
        zkClientWatcher.updateNode("/pa2","7894561");
    }

}

 注意在创建节点时候,一定要写 “/”  比如“/test” !!!!!!

 

下面的例子很有意义的,监听的:

package com.toov5.zookeeper;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.jboss.netty.handler.codec.http.websocketx.WebSocketHandshakeException;
import org.apache.zookeeper.ZooKeeper;

public class JavaZKTest {
    private static final String CONNECTSTRING ="192.168.91.5";
    private static int   SESSIONTIMEOUT=5000;  //超时时间
    //使用Java并发包的 信号量 控制zk连接成功之后 开始创建
    private static final CountDownLatch countDownLatch = new CountDownLatch(1);
    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
        ZooKeeper zooKeeper = null;
        try {
            //1zk创建了一个连接
             zooKeeper =  new ZooKeeper(CONNECTSTRING, SESSIONTIMEOUT, new Watcher() {
                
                public void process(WatchedEvent event) {
                    //监听节点是否发生变化  连接成功 (代码从上往下执行,创建节点 直接copy)
                    // 获取事件状态
                    KeeperState keeperState = event.getState();
                    // 获取事件类型
                    EventType eventType = event.getType();
                    if (KeeperState.SyncConnected == keeperState) {  //状态判断
                        if (EventType.None == eventType) {
                            countDownLatch.countDown(); //--操作 到0时候 await启动了哦
                            System.out.println("zk 启动连接..."); //才可以去创建节点的逻辑执行  需要用到信号量
                        }
                        if (EventType.NodeCreated==eventType) {
                            System.out.println("zk时间通知,获取当前在创建节点..");
                        }
                    }    
                }
            });    
             countDownLatch.await();  //不为0  一直等待~~
             String path="/tooov5";
             zooKeeper.exists(path, true); //true时候有事件通知
               //创建持久节点  
               //Ids.OPEN_ACL_UNSAFE连接权限
              //// CreateMode对应好多模式  关于 SEQENTIAL 重名情况下 加了个id 保证唯一性
            String createNode = zooKeeper.create(path, "toov5".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println("节点名称"+createNode);
        } catch (Exception e) {
            
        }finally {
            if (zooKeeper != null) {  //关闭连接
                zooKeeper.close();          
            }
        }
    
 }
}

代码这样修改:

 

 节点的 增加 删除 修改 都可以监听到!!!!!!!!!

 

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试 本文详细介绍了在 CentOS 7 系统上安装与配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载与部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行与 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。 阅读详情

相关推荐

昇腾310B实战:FFmpeg硬件加速全流程解析与性能优化

本文详细解析了昇腾310B与FFmpeg硬件加速的全流程,包括环境配置、性能优化及常见问题排查。通过实战案例展示,昇腾310B在视频转码中性能提升可达6倍,同时降低功耗,特别适合多媒体处理和高性能计算场景。

m3n5b7v8c9x的博客 735

zookeeper服务注册

zookeeper 启动: sh bin/zkServer.sh start 查看服务状态: sh bin/zkServer.sh status 停止: sh bin/zkServer.sh stop 重启: sh bin/zkServer.sh restart get /services/application/2bf4ff71-16ad-4965-b7ba-1e095c29dd7f tomcat占用8080端口 换点端口号 sudo find / -name to

笑一个吧 1907

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

使用Java客户端API操作Zookeeper

使用Java客户端API操作Zookeeper使用Java客户端API操作Zookeeper 准备环境 连接到zookeeper 创建节点 查询节点获取子节点的内容 列出子节点 修改节点关于Watcher 删除节点在了解了使用zkCli操作zookeeper之后,下面就是使用Java来操作zookeeper。就像操作数据库一样,数据库可以使用客户端工具来连接,也可以提供Java的api来链接。至于为

happyfly的博客 4922

Polymarket链上预测市场自动化交易代理开发实战指南

自动化交易代理是量化交易的核心工具,它通过预设的算法规则,自动执行市场分析、决策与下单操作,旨在提升交易效率与纪律性。其技术原理通常涉及实时数据获取、策略引擎计算、交易执行与风险管理等模块的协同工作。在区块链与DeFi领域,这类代理的价值尤为凸显,能够高效处理链上合约交互,捕捉去中心化市场的套利机会。具体到应用场景,链上预测市场如Polymarket,为自动化策略提供了丰富的博弈标的。本文以Polymarket交易代理项目为例,深入剖析其基于Node.js与ethers.js的技术栈实现,详解从环境配置、策

weixin_42533910的博客 581

iOS Certificates, Identifiers & Profiles简介

1. Certificates Certificates是生成开发和生产所需的证书。 2.1 certSigningRequest文件 生成证书前,需要先生成certSigningRequest文件,certSigningRequest文件由【钥匙串访问】生成。 选择菜单【钥匙串访问】,【证书助理】下的【从证书颁发机构请求证书…】 填写【用户电子邮件地址: 】,将【请求是:】的选项改为【储存到磁盘】 输入certSigningRequest文件的文件名,并指定保存位置。 保存certSignin

假装你是大灰狼的专栏 7058

zookeeper 与 java 交互小结

不多说,直接上代码。关于zookeeper 的一些介绍和场景,会过一段时间总结发出来。这里是java 操作zookeeper 的api。默认已经在本机安装好了zookeeper 的serverpom.xml 如下<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zooke

哎幽的成长 5万+

spring-ai学习(四)-MCP

创建一个springai项目1.依赖。

zql1455890112的博客 1384

python基础知识1,自我练习,自我理解

#正则表达 import re pattern=r’123[0-9]\w+’ #正则表达式模式字符 string=“123425456 123d588545” #match的正则验证方法 match=re.match(pattern,string) print(match) print(match.start()) print(match.end()) print(match.span()) ...

weixin_43789351的博客 732

OpenSpec 从入门到精通:AI 时代的最佳 SDD 范式

同样都是「先写规范再写代码」的开源 SDD 框架,OpenSpec(https://github.com/fission-ai/openspec) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。这些问题需要人来做判断,AI 做不了这个主。整个流程跑下来,OpenSpec 产出的效果还是令人满意的,一些前期没有考虑到的细节 AI 都补上了,生成的相关文档也有利于开发人员的知识对齐,可以尝试在团队内部推广。

qq_39093474的博客 929

基于PPT的三维光路结构示意图绘制实例演示-技术细节

基于PPT的三维光路结构示意图绘制实例演示-技术细节

简单光学 7470

通过git来下载管理linux源码和u-boot源码

linux源码对应的相关浏览器地址: https://www.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/ linux-stable版本的源码git下载地址: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git git地址

月出皎兮。 佼人僚兮。 舒窈纠兮。 劳心悄兮。 4733

手把手教你学simulink(31.31)--双向DCDC电源场景示例:设计并实现一个基于变频控制的双向降压变换

设计并实现一个基于 Simulink 的双向降压变换器,能够在充电模式(从高压侧向低压侧传输能量)和放电模式(从低压侧向高压侧传输能量)之间切换,确保输出电压稳定,并根据负载变化自动调整工作模式。

MHD0815的博客 343

Zookeeper基础操作

Zookeeper基础操作。

渔阳的博客 4358

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Zookeeper集群操作

Zookeeper集群操作

weixin_44936816的博客 1486

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

zookeeper-python操作zookeeper

引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。 具体的安装可以参考我另一篇文章:zookeeper-安装 这里讲解一下zookeeper的基本知识以及python相关的zk操作 zookeeper介绍 python操作 下面是python的操作方法函数,挑一些最常用的详细解释 方法 说明 start 连接zookeeper create 创建节点 get 获取节点的值 get_children 获取子节点列表..

龙叔运维的博客 2847

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Zookeeper节点操作

ephemeralOwner = 0x0 如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是临时节点,ephemeralOwner值为0。ZooKeeper其实也是一个分布式集群,其中维护了一个目录树结构,在这个目录树中,组成的部分是一个个的节点。pZxid = 0x800000002 对应节点与子节点(或者子节点)的修改的时间,与孙子节点无关。mZxid = 0x800000002 对应节点最近一次修改的时间,与子节点无关。

千锋教育 1859

使用curator操作zookeeper

使用Java操作zookeeper时,一般有两种方式:使用zkclient或者curator,相比较来说,curator的使用较为简便。今天就来看看如何使用curator来操作zookeeper。      需要的依赖如下: org.apache.curator curator-framework 2.8.0

在远行的路上 1万+

【zookeeper】zookeeper的shell操作

在前一章的基础上,在启动Zookeeper服务之后,输入以下命令,连接到Zookeeper服务。连接成功之后,系统会输出Zookeeper的相关环境及配置信息,并在屏幕输出“welcome to Zookeeper!输入help之后,屏幕会输出可用的Zookeeper命令,如下图所示。

margu_168的博客 1482

zookeeper的shell操作

zookeeper的shell操作 要使用shell命令去操作zookeeper之前需要先启动zookeeper。启动命令在之前安装教程中。 启动命令:/export/server/zookeeper/bin/zkServer.sh start 查看启动后的状态:/export/server/zookeeper/bin/zkServer.sh status 1. 启动zookeeper的shell...

xxydzyr的博客 1308

ZooKeeper学习(三)ZooKeeper API操作

这里写目录标题API准备工作创建maven项目配置pom文件创建配置文件API操作测试zookeeper能否连接 API准备工作 创建maven项目 点击新建项目 随便写就行 配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

秘密的博客 3881

五、Zookeeper的Shell操作

Zookeeper的Shell操作 文章目录Zookeeper的Shell操作1、显示所有命令2 、查看当前Zookeeper中所含的内容3、查看当前节点数据4、创建节点:5、获取节点:6、修改节点:7、监听节点:8、删除节点: ZooKeeper服务命令: 启动ZK服务: sh bin/zkServer.sh start 查看ZK服务状态: sh bin/zkServer.sh status 停止ZK服务: sh bin/zkServer.sh stop 重启ZK服务: sh

m0_52426915的博客 3340

zookeeper实战04-Java操作zookeeper

基本的 测试zookeeper连接案列 import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.slf4j.Logger; import org.slf4j.LoggerFactory;...

松花江畔 2371

ZooKeeper的安装与操作

是一个分布式的、开放源码的分布式应用程序协调服务,它是的Chubby服务的开源实现,也是和等大数据生态系统中的重要组件。ZooKeeper的目标是为分布式应用提供一致性服务,包括配置维护、域名服务、分布式同步和组服务等。它封装了复杂且易出错的关键服务,通过简单的接口和高效、稳定的系统提供给用户。ZooKeeper的工作原理基于,该算法通过选举产生一个领导者(leader),只有领导者能提交proposer,以此来解决Paxos算法中可能存在的活锁问题。

m0_70988704的博客 4100

【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作

安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作

2201_75539359的博客 9525

使用zookeeper API实现zookeeper的基本操作

参考了网上的一个例子,现在程序可以跑了,但是由于时间原因,明天再做深入研究。 这里先记下参考的例子及其代码(https://blog.youkuaiyun.com/u010398771/article/details/82420504) package zookeeper; import java.util.List; import java.util.concurrent.CountDownLatc...

MY BLOG 803
上一篇: Zookeeper集群搭建安装
下一篇: Zookeeper实现负载均衡原理
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值