了解cassandra池选项(setcoreconnectionsperhost和setmaxconnectionsperhost)?

xfb7svmp  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(392)

我最近开始和cassandra合作,我在这里读到了更多关于连接池的内容。我对游泳池的大小感到困惑,不明白这意味着什么:

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

下面是我想详细了解的内容:
我想知道你做了什么 setCoreConnectionsPerHost , setMaxConnectionsPerHost 以及 setMaxRequestsPerConnection 什么意思?
是什么 LOCAL 以及 REMOTE 在这里是什么意思?
如果有人能用一个例子来解释,那真的会帮助我更好地理解。
我们有一个6个节点的集群,全部在一个dc中,rf为3,读/写为本地仲裁。

p5cysglq

p5cysglq1#

cassandra协议允许在同一网络连接上并行提交多个查询以供执行,而无需等待答案。这个 setMaxRequestsPerConnection 设置一个连接中可以同时有多少个正在运行的查询-最大限制取决于协议,由于协议v3,它是32k,但实际上您需要将其保持在1000-2000左右-如果您有更多的查询,则表明服务器不支持您的查询。
驱动程序正在打开到群集中每个节点的连接,这些连接被标记为 LOCAL -如果它们是应用程序本地的数据中心中的节点(在负载平衡策略中显式设置,或者从第一个接触点推断),或者 REMOTE 如果它们连接到其他数据中心中的节点。
此外,驱动程序还可以打开到节点的多个连接。有两个值控制它们的数量: 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个连接

相关问题