我正在使用 astyanax 连接池,定义如下:
ipSeeds = "LOAD_BALANCER_HOST:9160";
conPool.setSeeds(ipSeeds)
.setDiscoveryType(NodeDiscoveryType.TOKEN_AWARE)
.setConnectionPoolType(ConnectionPoolType.TOKEN_AWARE);
但是,我的集群有 4 个节点,并且有 8 台客户端机器连接在上面。LOAD_BALANCER_HOST
将请求转发到我的四个节点之一。
在客户端节点上,我有:
$netstat -an | grep 9160 | awk '{print $5}' | sort |uniq -c
235 node1:9160
680 node2:9160
4 node3:9160
4 node4:9160
因此,虽然 ConnectionPoolType 是TOKEN_AWARE
,但我的客户端似乎主要连接到 node2,有时连接到 node1,但几乎从不连接到节点 3 和 4。
问题是:为什么会发生这种情况?令牌感知连接池不应该查询节点列表的环并使用循环算法连接到所有活动节点吗?