zk 的某核心开发者曾说 curator 对于 zk 的影响,就如同 guava 对于 java 的作用一样.
curator 在对 zk 原始的 api 进行了大量包装,提供了一套更易用的 fluent 的 api 框架.但是使用中也存在这一些坑,
- 创建完
pathChildrenCache
,一定记得调用 start 方法!!!不然是不会生效的, - 创建
PathChildrenCache
如果比较多的话,一定要记得自定义其使用的线程池参数,不然每次 new 出来一个PathChildrenCache
,就会自行创建一个单线程池,创建不了多少就会开始抛超最多线程的个数异常. - 失去 zk 连接后,如果重新创建了
curatorFramework
,同时也需要重新创建PathChildrenCache
,之前创建的 Listener 是不会再有事件进来. - 如果子节点个数太多,或者 data 太多,记得设置
jute.maxbuffe
参数,我们的项目中,节点是没有 data 的,但是由于一些公共服务的其 consumers 节点下的 url 实在是太多了,最多的一个 consumers 超过了 10000 个节点,而每个 url 的长度超过了 500 多个字符,正好超过了 zk 设置的 4mb 的数据长度大小,导致异常抛出.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于