【问题标题】:Understand Cassandra pooling options (setCoreConnectionsPerHost and setMaxConnectionsPerHost)?了解 Cassandra 池选项(setCoreConnectionsPerHost 和 setMaxConnectionsPerHost)?
【发布时间】:2020-09-20 11:36:01
【问题描述】:

我最近开始使用 Cassandra,我正在阅读有关连接池 here 的更多信息。我对池大小感到困惑,无法理解这意味着什么:

poolingOptions
    .setCoreConnectionsPerHost(HostDistance.LOCAL,  4)
    .setMaxConnectionsPerHost( HostDistance.LOCAL, 10)
    .setCoreConnectionsPerHost(HostDistance.REMOTE, 2)
    .setMaxConnectionsPerHost( HostDistance.REMOTE, 4)
    .setMaxRequestsPerConnection(2000);

下面是我想详细了解的:

  1. 我想知道setCoreConnectionsPerHostsetMaxConnectionsPerHostsetMaxRequestsPerConnection是什么意思?
  2. LOCALREMOTE 是什么意思?

如果有人可以举例说明,那真的会帮助我更好地理解。

我们有一个 6 个节点的集群,全部在一个 dc 中,RF 为 3,我们作为本地仲裁进行读/写。

【问题讨论】:

    标签: cassandra datastax-java-driver


    【解决方案1】:

    Cassandra 协议允许在同一网络连接上并行提交执行多个查询,而无需等待答案。 setMaxRequestsPerConnection 设置一个连接中可以同时进行多少个正在进行的查询-最大限制取决于协议,并且由于协议 v3,它是 32k,但实际上您需要将其保持在 1000-2000 左右-如果您有更多,那么这表明服务器无法满足您的查询。

    驱动程序正在打开与集群中每个节点的连接,并且这些连接被标记为LOCAL - 如果它们连接到应用程序本地的数据中心中的节点(在负载平衡策略中明确设置,或从第一个联系点推断),或者REMOTE,如果它们是其他数据中心中的节点。

    此外,驱动程序可以打开多个到节点的连接。并且有 2 个值控制它们的数量:core - 最小连接数,max - 上限是多少。如果您提交不符合现有限制的新请求,驱动程序将打开新连接。

    所以在你的例子中:

    poolingOptions
        .setCoreConnectionsPerHost(HostDistance.LOCAL,  4)
        .setMaxConnectionsPerHost( HostDistance.LOCAL, 10)
        .setCoreConnectionsPerHost(HostDistance.REMOTE, 2)
        .setMaxConnectionsPerHost( HostDistance.REMOTE, 4)
        .setMaxRequestsPerConnection(2000);
    
    • 对于本地数据中心,最初每个节点会打开4个连接,可能会增长到10个连接
    • 对于其他数据中心,它将打开 2 个连接,最多可以增长到 4 个连接

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 2011-09-30
      • 1970-01-01
      • 2012-09-27
      • 2015-11-13
      • 2014-03-06
      • 2010-09-08
      • 1970-01-01
      • 2011-09-23
      相关资源
      最近更新 更多