dra*_*ons 3 cassandra datastax-java-driver
最近,我开始与卡桑德拉工作,我正在读更多的连接池这里。我对池大小感到困惑,无法理解这是什么意思:
poolingOptions
.setCoreConnectionsPerHost(HostDistance.LOCAL, 4)
.setMaxConnectionsPerHost( HostDistance.LOCAL, 10)
.setCoreConnectionsPerHost(HostDistance.REMOTE, 2)
.setMaxConnectionsPerHost( HostDistance.REMOTE, 4)
.setMaxRequestsPerConnection(2000);
Run Code Online (Sandbox Code Playgroud)
以下是我想详细了解的内容:
setCoreConnectionsPerHost,setMaxConnectionsPerHost和setMaxRequestsPerConnection手段?LOCAL和REMOTE这里的意思?如果有人可以用一个例子来解释,那么它真的会帮助我更好地理解。
我们在一个 DC 中有 6 个节点集群,RF 为 3,我们作为本地仲裁读/写。
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);
Run Code Online (Sandbox Code Playgroud)