为什么策展人不使用连接池来管理连接



我是使用策展人的新手,我发现一些框架使用连接池来管理连接,如jdbc,redis.但是我在策展人中找不到连接池,为什么策展人不提供连接池以减少每个连接消耗的资源。

一个 CuratorFramework 实例包装了一个 ZooKeeper 实例,而 ZooKeeper 实例又保持与 ZooKeeper 节点的连接。

ZooKeeper提供以下订购保证:

  • 线性化写入:所有更新 ZooKeeper 状态的请求都是可序列化的,并尊重优先级;
  • FIFO客户端顺序:来自给定客户端的所有请求都按照客户端发送的顺序执行。

假设存在两个CuratorFramework实例 A 和 B 的连接池。我们向 A 发出写入请求以创建 znode/a并将 A 返回到连接池。然后,我们从连接池中获取另一个CuratorFramework实例。这次我们得到B。我们向 B 发出读取请求以读取/a。我们可能无法获得/a,因为无法保证读取请求将在写入请求之后放置。只有同样的连接,我们才能保证秩序。所以连接池存在这种数据不一致的问题。

另一个问题是短暂的znode。使用一个CuratorFramework实例创建的临时 znode 仅对自身可见。使用连接池,我们只能在使用创建它们的同一CuratorFramework实例时读取临时 znode。

最新更新