ConsistentHashLoadBalance
一致性hash 负载均衡策略,在 2.7.22 版本中新增一段算法保证负载策略更均衡,经测试在provider节点数量稳定的场景下,无法保证 同一 hashKey 能够 hash 到同一 provider 节点,如果希望负载更均衡,个人认为不应该选择一致性 hash 策略,是否应该优先保证稳定场景下的 hash 稳定,或是我个人用法有误,望大佬指点
double overloadThread = ((double) totalRequestCount.get() / (double) serverCount) * OVERLOAD_RATIO_THREAD;
/**
* Find a valid server node:
* 1. Not have accept request yet
* or
* 2. Not have overloaded (request count already accept < thread (average request count * overloadRatioAllowed ))
*/
while (serverRequestCountMap.containsKey(serverAddress)
&& serverRequestCountMap.get(serverAddress).get() >= overloadThread) {
/**
* If server node is not valid, get next node
*/
entry = getNextInvokerNode(virtualInvokers, entry);
serverAddress = entry.getValue().getUrl().getAddress();
}
if (!serverRequestCountMap.containsKey(serverAddress)) {
serverRequestCountMap.put(serverAddress, new AtomicLong(1));
} else {
serverRequestCountMap.get(serverAddress).incrementAndGet();
}
totalRequestCount.incrementAndGet();
ConsistentHashLoadBalance
一致性hash 负载均衡策略,在 2.7.22 版本中新增一段算法保证负载策略更均衡,经测试在provider节点数量稳定的场景下,无法保证 同一 hashKey 能够 hash 到同一 provider 节点,如果希望负载更均衡,个人认为不应该选择一致性 hash 策略,是否应该优先保证稳定场景下的 hash 稳定,或是我个人用法有误,望大佬指点