Skip to content

ConsistentHashLoadBalance hash不稳定 #11947

Description

@default233

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();

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/discussionEverything related with code discussion or question

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions