【问题标题】:Cassandra Connection PoolingCassandra 连接池
【发布时间】:2015-11-13 21:33:38
【问题描述】:

我想在应用服务器上创建 Cassandra 作为数据源,它具有类似于 OracleDataSource 的连接池容量。任何应用程序服务器都支持此功能吗?

我的应用程序将部署在 2 个节点上,到目前为止,我正在每个节点上创建一个静态的 1 个集群,并为每个键空间创建 1 个会话我想将连接池容量添加到此设置中。我知道有一个选项可以使用 PoolingOptions 设置连接池。

cluster = Cluster
            .builder()...
            .withPoolingOptions(poolingOptions).build();
session = cluster.connect("keyspace");

以下是我的疑惑

  1. 如何动态增加/减少连接数。
  2. 我的请求是同步请求,最多可以同时从每个主机切断多少个请求。
  3. 增加1个节点的连接数是否会影响其他节点的连接?因为两个节点使用的数据中心是相同的。
  4. cassandra 提供的默认池化机制是什么

【问题讨论】:

    标签: java cassandra datastax


    【解决方案1】:

    我们的文档中的This page 详细介绍了它(您没有说明您使用的是哪个版本,因此请使用左上角的下拉菜单选择相关文档)。

    快速回答您的问题:

    1. 配置不同的核心/最大池大小。
    2. 连接数 * 每个连接的请求数(两者都因驱动程序版本、Cassandra 版本和您的配置而异,有关详细信息,请参阅文档)
    3. 节点按“距离”分类(由您的LoadBalancingPolicy 确定,但这通常与集群拓扑有关)。相同距离的节点获得相同的池配置,因此如果您的主机位于同一个数据中心,它们将使用相同的池策略。
    4. 默认值取决于驱动程序/Cassandra 版本(同样,请参阅文档了解完整详细信息)。

    【讨论】:

    • 您好,我们正在使用 Cassandra 2.0,您能否让我知道,当有负载时我们应该增加池的数量或者我们应该增加连接的数量,请让我知道如何继续。让我知道是否建议在一个池中拥有多个会话,以便我们可以跨多个会话分配负载。
    • 我想知道请求达到最大负载后是否会排队?
    • 你应该增加连接数。如果池已满,请求将排队,它们等待PoolingOptions#getPoolTimeoutMillis,然后移动到下一个主机。
    猜你喜欢
    • 2013-10-22
    • 2015-04-28
    • 1970-01-01
    • 2018-06-27
    • 2013-12-23
    • 2016-05-05
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多