CuratorFrameworkFactory中有个Builder,每次建新节点defaultData都是ip,也可以设置,压缩provider可以进行设置
CuratorFramework接口实现了Closeable接口,提供了多数操作,重点留意inTransaction,sync鞥操作,因为内部保存internal watcher,可能阻碍gc,需要调用clearWatcherReferences清理
CuratorFrameworkImpl:
exeuctorService是包含两个线程的线程池,一个用于listener,一个用于background操作。对于background操作(backgroundoperationsLoop)在client连接的情况下进行操作,未连接情况下尝试重连,如果超出connection timeouts抛出CuratorConnectionLossException,未超时的情况下sleep 1秒把操作重新放入队列。如果在执行background时出现连接失败,则使用client重试策略确定是否要重试,重试则重新放入任务队列。
CuratorEvent是各种zk操作或后台方法的超集(实现类是CuratorEventImpl)。
OperationAndData有重要的五个成员:
BackgroundOperation<T> operation,T data,BackgroundCallback callback(background完成之后做的回调),ErrorCallback<T> errorCallback,Object context,此外还保存序号(ordinal)用于比较,保存开始时间,重试次数,便于重试策略。
在client中注册的watcher中对事件回调所有listener(CuratorListener类型),关闭时回调CLOSING事件。
logError时会调所有UnhandledErrorListener。
ConnectionStateManager封装了ListenerContainer<ConnectionStateListener>,在状态变更时做调用,对CONNECTED/LOSS/SUSPENDED的处理是单独的一个线程处理,而状态变更是从外部传给ConnectionStateManager。代码中发现,curator中有个特点是,有时不使用单独的变量表明结束,直接用Thread.currentThread().isInterrupted()。
NamespaceImpl中基本没有什么,FailedDeleteManager似乎是为delete准备的,NamespaceFacede实现了CuratorFrameImpl,将其功能代理给对应的CuratorFramewokImpl,相关路径都交给对应的Namespace类处理。
NamespaceFacadeCache里面展示了guava中Cache,CacheBuilder,LoadingCache的用法,比较简洁。
Pathable接口是带有forPath方法的。
zk中带transaction支持,也支持sync从master同步数据。
CuratorTempFrameworkImpl会定时关闭client,这是通过buildTemp获取的。
CuratorFramework接口实现了Closeable接口,提供了多数操作,重点留意inTransaction,sync鞥操作,因为内部保存internal watcher,可能阻碍gc,需要调用clearWatcherReferences清理
CuratorFrameworkImpl:
exeuctorService是包含两个线程的线程池,一个用于listener,一个用于background操作。对于background操作(backgroundoperationsLoop)在client连接的情况下进行操作,未连接情况下尝试重连,如果超出connection timeouts抛出CuratorConnectionLossException,未超时的情况下sleep 1秒把操作重新放入队列。如果在执行background时出现连接失败,则使用client重试策略确定是否要重试,重试则重新放入任务队列。
CuratorEvent是各种zk操作或后台方法的超集(实现类是CuratorEventImpl)。
OperationAndData有重要的五个成员:
BackgroundOperation<T> operation,T data,BackgroundCallback callback(background完成之后做的回调),ErrorCallback<T> errorCallback,Object context,此外还保存序号(ordinal)用于比较,保存开始时间,重试次数,便于重试策略。
在client中注册的watcher中对事件回调所有listener(CuratorListener类型),关闭时回调CLOSING事件。
logError时会调所有UnhandledErrorListener。
ConnectionStateManager封装了ListenerContainer<ConnectionStateListener>,在状态变更时做调用,对CONNECTED/LOSS/SUSPENDED的处理是单独的一个线程处理,而状态变更是从外部传给ConnectionStateManager。代码中发现,curator中有个特点是,有时不使用单独的变量表明结束,直接用Thread.currentThread().isInterrupted()。
NamespaceImpl中基本没有什么,FailedDeleteManager似乎是为delete准备的,NamespaceFacede实现了CuratorFrameImpl,将其功能代理给对应的CuratorFramewokImpl,相关路径都交给对应的Namespace类处理。
NamespaceFacadeCache里面展示了guava中Cache,CacheBuilder,LoadingCache的用法,比较简洁。
Pathable接口是带有forPath方法的。
zk中带transaction支持,也支持sync从master同步数据。
CuratorTempFrameworkImpl会定时关闭client,这是通过buildTemp获取的。
本文详细介绍了CuratorFramework的核心组件及工作原理,包括Builder、CuratorFrameworkImpl、CuratorEvent等,并探讨了线程池、重试策略及事件监听机制。
1万+

被折叠的 条评论
为什么被折叠?



