服务中间件Zookeeper

Zookeeper是一种分布式,开源的应用协调服务也即是“服务中间件”;主要提供的功能包括:“配置管理”,“分布式锁”,“集群管理”。

1、配置管理:管理服务对象的信息(IP、端口、服务提供功能接口)。

2、分布式锁:控制服务对象的资源(锁住之后,只能有一个服务对象可操作,其它服务对象等待)。

3、集群管理:管理服务对象的节点(每个节点提供的服务相同,则组成一个集群),组成高可用

Zookeeper原理

Zookeeper是一个树形目录服务,其数据模型拥有一个层次化的结构;从图中可看出:一个节点可以保存自己的数据和节点信息,也可以拥有子节点。
在这里插入图片描述

Zookeeper指令

1.服务端指令
linux指令 说明
./zkServer.sh.start 启动服务
./zkServer.sh.status 服务状态
./zkServer.sh.stop 停止服务
./zkServer.sh.restart 重启服务
2.客户端命令
linux指令 说明
./zkcli.sh -server ip:port 连接服务端
quit 断开连接
ls path 显示指定目录下节点
create -[e/s/es] / path value 创建单个节点
set /path value 设置节点
get /path 获取节点值
delete /path 删除单个节点
deleteall /path 删除所有节点

Curator 客户端

curator是Zookeeper的java客户端工具,也是阿帕奇基金组织的顶级项目;他封装了Zookeeper一些javaAPI的方法来对节点进行操作。

1.建立连接
public class CuratorTest {
   
   

//==============================Connect:建立连接========================================================================

    private CuratorFramework client;

    /**
     * 建立连接
     * 第一种:CuratorFrameworkFactory.newClient
     * 第二种:CuratorFrameworkFactory.builder()
     */
    @Before
    public void testConnect() {
   
   
        /*
         * 第一种连接方式
         * CuratorFrameworkFactory.newClient
         * @param connectString       连接字符串。zk server 地址和端口 "192.168.149.135:2181"
         * @param sessionTimeoutMs    会话超时时间 单位ms
         * @param connectionTimeoutMs 连接超时时间 单位ms
         * @param retryPolicy         重试策略
         */

//        重试策略
//        RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 10);
//        创建连接对象
//        CuratorFramework client = CuratorFrameworkFactory.newClient("ZKIP:2181",
//                60 * 1000, 15 * 1000, retryPolicy);
//        开启连接
//        client.start();

        /**
         * 第二种连接方式
         * CuratorFrameworkFactory.builder()
         * namespace:/myCurator/创建的节点
         */
        //重试策略
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 10);
        //创建连接对象
        client = CuratorFrameworkFactory.builder()
                .connectString("ZKIP:2181")
                .sessionTimeoutMs(60 * 1000)
                .connectionTimeoutMs(15 * 1000)
                .retryPolicy(retryPolicy)
                .namespace("myCurator")
                .build();
        //开启连接
        client.start();
    }

2.创建节点
public class CuratorTest {
   
   

//==============================Create:创建节点========================================================================

    /**
     * 创建节点:create
     * 节点类型:持久,临时,持久顺序,临时顺序节点
     * 1.基本创建 :create().forPath("")
     * 2.创建节点 带有数据:create().forPath("",data)
     * 3.设置节点的类型:create().withMode().forPath("",data)
     * 4.创建多级节点  /app1/p1 :create().creatingParentsIfNeeded().forPath("",data)
     */
    @Test
    public void testCreate1() throws Exception {
   
   
        //1.基本创建:如果创建节点,没有指定数据,则默认将当前客户端的ip作为数据存储
        String s = client.create().forPath("/app1");
        System.out.println(s);
    }

    @Test
    public void testCreate2() throws Exception {
   
   
        //2.创建节点,带数据
        String path = client.create().forPath("/app2", "大王来巡山".getBytes());
        System.out.println(path);
    }

    @Test
    public void testCreate3() throws Exception {
   
   
        //3.设置节点类型
//        PERSISTENT:持久化节点
//        PERSISTENT_SEQUENTIAL:持久化顺序节点
//        EPHEMERAL:临时节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值