【发布时间】:2018-06-29 16:26:48
【问题描述】:
我正在为 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 以提高生产力。 增加一个或另一个有什么好处吗?
然后我想更改信号量许可的依赖关系,但实际上不知道如何。这个想法是在添加或删除 Host 时添加侦听器并更新 maxInFlight。
【问题讨论】:
标签: java performance cassandra bigdata datastax-java-driver