Curator框架简要解析(一)curator连接zk客户端

curator创建zookeeper客户端代码如下:

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3);

        CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181",
                5000,5000,retryPolicy);


        client.getConnectionStateListenable().addListener(new ConnectionStateListener() {
            @Override
            public void stateChanged(CuratorFramework client, ConnectionState newState) {

            }
        });


        client.start();

上述代码是大家经常看见的使用curator框架进行创建zookeeper客户端的过程。主要使用的是CuratorFrameworkFactory#newClient方法进行创建zookeeper的客户端

小园子通过源码下载,查询看到CuratorFrameworkFactory#newClient方法的源码如下:

  public static CuratorFramework newClient(String connectString, int sessionTimeoutMs, int connectionTimeoutMs, RetryPolicy retryPolicy)
    {
        return builder().
            connectString(connectString).
            sessionTimeoutMs(sessionTimeoutMs).
            connectionTimeoutMs(connectionTimeoutMs).
            retryPolicy(retryPolicy).
            build();
    }


/**
 点击build()方法代码如下

**/
 public CuratorFramework build() {
     return new CuratorFrameworkImpl(this);
 }

看上述代码是通过一个构造器进行创建了一个CuratorFrameworkImpl对象,然后我们进行查看CuratorFrameworkImpl的构造函数发现,会将创建时候的参数进行一些赋值的操作,里面有一些比较重要的逻辑比方说:

ZookeeperFactory localZookeeperFactory = makeZookeeperFactory(builder.getZookeeperFactory());

第一步就进行创建了zookeeper的工厂方法,我们可以大胆的猜测是通过这个工厂进行创建zookeeper的客户端。

再比如: listeners = new ListenerContainer<CuratorListener>();

这个listeners的创建。这个我们后面再进行分析的操作,我们先继续看在哪里进行创建的zookeeper的客户端,在这里没看到有zookeeper客户端的创建。

 public CuratorFrameworkImpl(CuratorFrameworkFactory.Builder builder)
    {
        ZookeeperFactory localZookeeperFactory = makeZookeeperFactory(builder.getZookeeperFactory());
        this.client = new CuratorZookeeperClient
            (
                localZookeeperFactory,
                builder.getEnsembleProvider(),
                builder.getSessionTimeoutMs(),
                builder.getConnectionTimeoutMs(),
                builder.getWaitForShutdownTimeoutMs(),
                new Watcher()
                {
                    @Override
                    public void p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小园子的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值