zk 的某核心开发者曾说 curator 对于 zk 的影响, 就如同 guava 对于 java 的作用一样. curator 在对 zk 原始的 api 进行了大量包装, 提供了一套更易用的 fluent 的 api 框架. 但是使用中也存在这一些坑, 创建完pathChildrenCache, 一定记得调用 st ..

zk 连接工具 curator 使用上的一些坑

zk 的某核心开发者曾说 curator 对于 zk 的影响, 就如同 guava 对于 java 的作用一样.

curator 在对 zk 原始的 api 进行了大量包装, 提供了一套更易用的 fluent 的 api 框架. 但是使用中也存在这一些坑,

  1. 创建完pathChildrenCache, 一定记得调用 start 方法!!! 不然是不会生效的,
  2. 创建PathChildrenCache如果比较多的话, 一定要记得自定义其使用的线程池参数, 不然每次 new 出来一个PathChildrenCache, 就会自行创建一个单线程池, 创建不了多少就会开始抛超最多线程的个数异常.
  3. 失去 zk 连接后, 如果重新创建了curatorFramework, 同时也需要重新创建PathChildrenCache, 之前创建的 Listener 是不会再有事件进来.
  4. 如果子节点个数太多, 或者 data 太多, 记得设置jute.maxbuffe参数, 我们的项目中, 节点是没有 data 的, 但是由于一些公共服务的其 consumers 节点下的 url 实在是太多了, 最多的一个 consumers 超过了 10000 个节点, 而每个 url 的长度超过了 500 多个字符, 正好超过了 zk 设置的 4mb 的数据长度大小, 导致异常抛出.

  • Curator
    2 引用
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    46 引用 • 28 回帖
回帖   
请输入回帖内容...