了解 Cassandra 池选项(setCoreConnectionsPerHost 和 setMaxConnectionsPerHost)?
Understand Cassandra pooling options (setCoreConnectionsPerHost and setMaxConnectionsPerHost)?
我最近开始使用 Cassandra,并且正在阅读有关连接池的更多信息 here。我对池大小感到困惑,无法理解这里的含义:
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,我们 read/write 作为本地仲裁。
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 个连接
我最近开始使用 Cassandra,并且正在阅读有关连接池的更多信息 here。我对池大小感到困惑,无法理解这里的含义:
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,我们 read/write 作为本地仲裁。
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 个连接