- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 C* 的巨大查询集。我已经使用
限制异步查询执行器Semaphore maxInFlight = new Semaphore(MAX_REQUEST_PER_CON_REMOTE);
...
maxInFlight.acquireUninterruptibly();
ResultSetFuture future = executeAsync(...);
Futures.addCallback(future, new FutureCallback<ResultSet>() {
@Override
public void onSuccess(ResultSet rs) {
...
maxInFlight.release();
}
@Override
public void onFailure(Throwable t) {
...
maxInFlight.release();
}, executor);
其中MAX_REQUEST_PER_CON_REMOTE是MaxRequestsPerConnection参数。MaxConnectionsPerHos 默认等于 1,我没有更改它。
随着节点数量的增加或复制因子的增加,我相信我可以增加 MaxConnectionsPerHos 或 MaxRequestsPerConnection 来提高生产力。增加其中一项或多项是否有任何优势?
然后我想更改信号量许可的依赖关系,但实际上不知道如何操作。这个想法是添加监听器并在添加或删除主机时更新 maxInFlight。
最佳答案
如果您不使用白名单或黑名单策略,则驱动程序将单独连接到每个主机(当然取决于配置,如果您使用 DC Aware 策略)。因此,当您添加新节点时,驱动程序将添加到该节点的新连接,并且负载将被重新分配(如果您的查询没有“热”分区)。如果您增加复制因子,那么它也没有多大关系,因为向副本发送请求将不是由驱动程序完成,而是由“协调器”节点完成...
因此,当您在本地 DC 中有 N 个节点时,理论上您最多可以发送 N * MaxInFlighConnections
个请求(但这取决于请求中数据的分布)。
此外,我发现您正在使用 MAX_REQUEST_PER_CON_REMOTE
- 最好仅将请求发送到本地 DC 的节点。此外,您还可以为每个连接配置最多 32k 个请求,在大多数情况下,这对于一个执行请求的客户端来说已经足够了。
您可以在Driver's documentation中找到更多信息.
附注我有一个separate class它使用与 Semaphore 相同的方法,但会自动添加监听器 - 请随意获取它。
关于java - MaxConnectionsPerHost 与 MaxRequestsPerConnection Cassandra 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105966/
我正在处理 C* 的巨大查询集。我已经使用 限制异步查询执行器 Semaphore maxInFlight = new Semaphore(MAX_REQUEST_PER_CON_REMOTE); .
我是一名优秀的程序员,十分优秀!