我最近开始和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,读/写为本地仲裁。
1条答案
按热度按时间p5cysglq1#
cassandra协议允许在同一网络连接上并行提交多个查询以供执行,而无需等待答案。这个
setMaxRequestsPerConnection
设置一个连接中可以同时有多少个正在运行的查询-最大限制取决于协议,由于协议v3,它是32k,但实际上您需要将其保持在1000-2000左右-如果您有更多的查询,则表明服务器不支持您的查询。驱动程序正在打开到群集中每个节点的连接,这些连接被标记为
LOCAL
-如果它们是应用程序本地的数据中心中的节点(在负载平衡策略中显式设置,或者从第一个接触点推断),或者REMOTE
如果它们连接到其他数据中心中的节点。此外,驱动程序还可以打开到节点的多个连接。有两个值控制它们的数量:
core
-最小连接数,以及max
-上限是多少。如果您提交不符合现有限制的新请求,驱动程序将打开新连接。所以在你的例子中:
对于本地数据中心,它最初将为每个节点打开4个连接,最多可以打开10个连接
对于其他数据中心,它将打开2个连接,最多可以扩展到4个连接