ZooKeeper源码阅读(二)---客户端流程

本文详细解析了ZooKeeper客户端的启动、连接建立、sendthread逻辑、IO操作、EventThread处理以及命令流程。重点介绍了客户端如何与服务器交互,通过sendthread进行IO读写,EventThread处理事件,并通过命令队列发送请求。文章末尾提出了关于消息丢失重传机制的疑问,并预告下篇将探讨ZooKeeper的watcher机制。
摘要由CSDN通过智能技术生成

由于zk客户端流程对于zk单机服务或者集群基本一致,所以先从zk客户端源码开始学习。

1、客户端启动

首先我们启动一个单机的server,然后给ZookeeperMain打上断点进入调试

//成员变量    
private static final Logger LOG = LoggerFactory.getLogger(ZooKeeperMain.class);
//当前支持解析的command命令如ls等
    static final Map<String, String> commandMap = new HashMap<String, String>();
    static final Map<String, CliCommand> commandMapCli = new HashMap<String, CliCommand>();

    protected MyCommandOptions cl = new MyCommandOptions();
//当前会话的历史命令---history命令就是从这个里面取
    protected HashMap<Integer, String> history = new HashMap<Integer, String>();
    protected int commandCount = 0;
    protected boolean printWatches = true;
    protected int exitCode = ExitCode.EXECUTION_FINISHED.getValue();

    protected ZooKeeper zk;
    protected String host = "";
    private CountDownLatch connectLatch = null;</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值