`
zkl_1987
  • 浏览: 245793 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Katta源码分析(1)--显示节点

阅读更多

看源码,老实说我没什么很好的方法。所以,只能静下心来看,一步一步的看。

我认为每个程序都有个门,要想进入,首先得把这个门找到,而我找到的katta的门是Katta.java

Katta.java中有个main方法,接收你输入的命令(String[] args)
1.startNode
2.startMaster
3.version
4.zk
5.search
6.addIndex
7.removeIndex
8.mergeIndexes
9.listIndexes
10.listNodes
11.showStructure
12.check
13.listErrors
14.redeployIndex

如果想要知道有多少个节点已经连接了,那么输入listIndexes
main方法先判断是否有值输入,如果没有调用printUsageAndExit(),给出输入的格式并退出程序。
现在当然是有输入咯,然后就是要Katta显示所有节点了,它调用Katta的构造函数
katta = new Katta();

Katta的构造函数,它调用了ZkConfiguration ,ZKClient的构造函数。
public Katta() throws KattaException {
final ZkConfiguration configuration = new ZkConfiguration();
_zkClient = new ZKClient(configuration);
_zkClient.start(10000);
}

ZkConfiguration 它继承了KattaConfiguration类,KattaConfiguration类是一个配置类,它读取katta.zk.properties

文件,生成Properties,方便下一步的读取操作。
ZKClient它实现了Zookeeper的Watcher,Watcher是一个事件处理程序的接口。

_zkClient = new ZKClient(configuration);
在ZKClient的构造函数中,把configuration作为参数传了进去,然后读取katta.zk.properties这个文件的

zookeeper.servers,zookeeper.timeout和zookeeper.clientPort
_zkClient.start(10000);
打开一个Zookeeper的客户端,并等待Zookeeper服务器的连接。
使用同步的机制, getEventLock().lock();

调用ZooKeeper的构造函数:
ZooKeeper  _zk = new ZooKeeper(_servers, _timeOut, this);
把从katta.zk.properties这个文件中读取的服务器名,超时时间和Zookeeper它本身作为参数传入这个构造函数。

在Zookeeper的构造函数中又调用了ClientCnxn  的构造函数
ClientCnxn  cnxn = new ClientCnxn(host, sessionTimeout, this);
ClientCnxn  为客户端管理socket的i/o,并保持一份可用的服务器连接。

在ClientCnxn的构造函数中调用了两个线程,SendThread和EventThread
SendThread  这个类服务那些即将离任的请求队列。
EventThread  这个类服务于返回的信息事件。

当ZooKeeper的状态为CONNECTED时说明已经连接。

katta实例调用它的listNodes()方法以显示节点
在listNodes()方法中,调用ZKClient的getKnownNodes()方法,返回一个List对象。
NodeMetaData nodeMetaData = new NodeMetaData();
Katta把节点信息封装到NodeMetaData 对象中。

Table table = new Table();
table.addRow(nodeMetaData.getName(), nodeMetaData.getStartTimeAsDate(), nodeState.name());
把需要显示的数据封装到Katta的Table中

System.out.println(table.toString());
显示出来。
分享到:
评论
3 楼 di1984HIT 2014-05-25  
katta好久不更新了。
2 楼 xuanguoliang 2011-11-11  
先顶你一个。
学习就到此为止了? 两年都没有更新了?
1 楼 blue_1986 2009-04-14  
希望能继续更新。。。期待ing。。。

相关推荐

Global site tag (gtag.js) - Google Analytics