zookeeper 使用 简介 curator 的使用

server/2024/12/16 8:43:55/

自定义 RPC 注册中心选型

新时代的 RPC 技术已经不单单的是满足于简单的远程服务调用,也不满足仅仅是对协议,序列化,网络通讯,STUB的这系列的技术的封装和优化。现在的新的技术也会对注册中心,负载均衡的封装,引入了 SOA 的相关架构,例如 GRPC。引入 nameming 的 provider 的相关技术,也可以做扩展使用 cursor | etcd | nacos 等技术。这里我们的自定义的 RPC 也需要对这个注册中心的引入做选型,这里我们选择 zookeeper

zookeeper__4">zookeeper 的简介

  1. 中文直译就是动物管理员,这是因为早期的时候 zookeeper 的诞生主要是为了服务像 hadoop(大象),pig(猪),hive(蜜蜂)这些技术就是大数据相关的技术栈,所以因此得名动物管理员(zookeeper
  2. apache 基金会的顶级开源项目访问的域名(zookeeper.apache.org),是模仿 google 的一个开源项目(chubby)
  3. 他是开源的分布式协调服务框架,(分布式)集群 协调服务(管理) = 用于集群管理的技术
  4. 提供了数据强一致的保证,基于 paxos 算法的 zab 协议

zk 安装(Linux)

  1. 下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
  2. 解压缩 tar -gzxvf apache-zookeeper-3.9.2-bin.tar.gz
  3. 重命名 mv apache-zookeeper-3.9.2-bin apache-zookeeper-3.9.2z
  4. 配置文件修改,zookeeper 的默认的配置文件是 zoo_sample.cfg 我们要把这个修改为 zoo.cfg cp zoo_cample.cfg zoo.cfg

修改配置文件

只需要修改数据存储的目录就像,因为默认的存储的目录是

dataDir=/xing/soft/zookeeper/apache-zookeeper392/data

启动 & 客户端测试

启动服务 zkServer.sh start 然后可以使用命令查看 jps -l 看是否包含进程 org.apache.zookeeper.server.quorum.QuorumPeerMain 然后可以使用命令来使用客户端链接到 zk 服务 zkClt.sh 这样就可以登录到我们的 zk 服务中可以使用 ls / 这个时候可以说正常部署 zookeeper 单机,然后使用 quit 退出当前的会话

zookeeper__30">zookeeper 集群

集群的安装其实只需要关心两个地方的配置

  1. myid 的设置
  2. zoo.cfg 设置(设置 server 的通讯地址默认的端口是2888,38888

设置以后就会默认的选举他们的 master 节点和 fllower 节点

zookeeper__39">zookeeper 节点

持久节点

默认的创建就是持久的节点,create /cloud/zookeeper,持久节点就是默认的节点,并没有什么特殊的地方

临时节点

临时节点需要增加参数 -e 即可 create -e /cloud/temp/zookeeper,临时节点在客户端和服务端断开连接的时候就会自动被删除

有序持久节点

默认的节点就是持久的,增加参数 -s 即可,例如 create -s /cloud/sort/zookeeper 这个就是一个有序的 znode,有序的 znode 有一个特点,他会有一个字增的数字序号,例如我刚刚创建的 clooud/sort/zookeeper 他会有一个序号,-> clooud/sort/zookeeper001,如果我们再次执行刚刚的命令就会再创建一个节点,这个节点的名称会增加一个 -> clooud/sort/zookeeper002

有序临时节点

create -es /cloud/temp_sort/zookeeper

删除节点

delete

这个命令只可以删除一个节点(数据节点),如果是一个目录并且拥有多级是不可以删除的,这个时候需要使用下面的命令

deleteAll

这个命令可以删除非数据节点和包含层级目录的目录节点 deleteall path。

curator 的使用

curator 是解决 zookeeper 的使用复杂,不方便设计不合理的问题他

  • 监听繁琐而且不合理的设置
  • 创建和删除多级目录的问题
  • 多级目录的监听
  • 封装了 zookeeper 的应用场景
  • 完善了客户端操作的可用性(客户端的重试机制

引入依赖

<dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>5.7.0</version>
</dependency>

编码

cuartor 最为核心的一个类就是 CuartorFramework 根据这个命名我们也可以看出来这个是一个框架,这个类可以对 zookeeper 做所有的 crud 的操作。都是围绕这个展开的。接下来我们来看一下他的 api 的简单实用。

cuartor 中给我们封装了比较统一的 api 的使用,并且对 watch 丰富了他的功能。我们首先看一下基本的 crud

java">package com.rpc.zookeeper.curator;import com.rpc.zookeeper.ZkOps;
import lombok.extern.slf4j.Slf4j;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.api.CreateBuilder;
import org.apache.curator.framework.recipes.cache.*;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

http://www.ppmy.cn/server/150580.html

相关文章

2024告别培训班 数通、安全、云计算、云服务、存储、软考等1000G资源分享

大类有&#xff1a;软考初级 软考中级 软考高级 华为认证 华三认证&#xff1a; 软考初级&#xff1a; 信息处理技术员 程序员 网络管理员 软考中级&#xff1a; 信息安全工程师 信息系统监理师 信息系统管理工程师 嵌入式系统设计时 数据库系统工程师 电子商务设…

快速进行tmux及vim配置,打造终端IDE

代理配置 IP"192.168.X.X" PORT"XX" export http_proxy"http://$IP:$PORT" export https_proxy"http://$IP:$PORT"关于tmux部分的快速配置使用 yum install -y tmux git config --global http.sslverify false git clone https://gi…

设置 Git 凭据缓存(针对 HTTPS)

1. 启用凭据缓存 git config --global credential.helper cache默认缓存时间为 15 分钟&#xff0c;可以设置更长时间&#xff08;例如 1 小时&#xff0c;3600 秒&#xff09;&#xff1a; git config --global credential.helper cache --timeout36002. 使用凭据存储&#…

如何在Android设备上复制整个目录到另一个位置?

在Android设备上复制整个目录到另一个位置&#xff0c;通常需要通过adb工具&#xff08;Android Debug Bridge&#xff09;来进行操作&#xff0c;因为它提供了文件系统级别的访问权限。以下是步骤&#xff1a; 打开命令行终端&#xff1a;首先&#xff0c;你需要连接你的Andro…

rabbitMq举例

新来个技术总监&#xff0c;把 RabbitMQ 讲的那叫一个透彻&#xff0c;佩服&#xff01; 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

Oracle plsqldev1106 安装及TNS配置

Oracle plsqldev1106 安装及TNS配置 下载好安装包&#xff0c;直接双击安装 点击 I Agree 默认是C盘的&#xff0c;我改了D盘&#xff0c;根据自己实际情况修改 这里用默认的for current user 也可以&#xff0c;我选了for all user 点Finish&#xff0c;等待安装完成即可 …

JavaScript ES6+ 语法速通

一、ES6 基础语法 1. let 和 const 声明变量 let&#xff1a;块级作用域&#xff0c;可以重新赋值。const&#xff1a;块级作用域&#xff0c;声明常量&#xff0c;不能重新赋值。 let name Li Hua; name Li Ming; // 可修改const age 21; // age 22; // 报错&#xff0…

jmeter CLI Mode 传参实现动态设置用户数

一.需求 CLI 运行模式下每次运行想要传入不同的用户数&#xff0c;比如寻找瓶颈值的场景&#xff0c;需要运行多次设置不同的用户数。 二.解决思路 查看官方API Apache JMeter - Users Manual: Getting Started api CLI Mode 一节中提到可以使用如下参数做属性的替换&#…