lua-resty-balancer icon indicating copy to clipboard operation
lua-resty-balancer copied to clipboard

[Advise]the improvement on roundrobin.

Open guanglinlv opened this issue 7 years ago • 1 comments

@doujiang24 , the gcd implement is not fair enough, the following is more better:

 function _M:next()
     local servers=self.servers
     local selectedIdx
     for i = 1, #servers do
        servers[i]['cweight'] = servers[i]['weight'] + severs[i]['cweight']
        if not selectedIdx or servers[selectedIdx]['cweight'] < severs[i]['cweight'] then
            selectedIdx = i
        end
    end

    servers[selectedIdx]['cweight'] = servers[selectedIdx]['cweight'] - self.totalWeight

    return servers[selectedIdx]['name']

 end

guanglinlv avatar Mar 10 '17 09:03 guanglinlv

Possible related consequence of the current implementation: https://github.com/openresty/lua-resty-balancer/issues/44

kalindudc avatar May 11 '22 15:05 kalindudc