{"push_id":1306931759,"size":3,"distinct_size":3,"ref":"refs/heads/bounded-chash","head":"b700cb2afacefe40cf0dc2c3fc39271b972a4a4a","before":"48a8a087b30145d0d7d70ebf8d838eddf02a080e","commits":[{"sha":"c12827636b715fe69b1a70efa5b892ccb89d56ca","author":{"name":"Andrew Rodland","email":"f9ea02e8a8bcdd781ac8f9fbf81e9d6fd88649c9@vimeo.com"},"message":"Compute a \"cumulative weight\" to allow chash balancing to hit its target\n\nFor active servers, this is the sum of the eweights of all active\nservers before this one in the backend, and\n[srv->cumulative_weight .. srv_cumulative_weight + srv_eweight) is a\nspace occupied by this server in the range [0 .. lbprm.tot_wact), and\nlikewise for backup servers with tot_wbck. This allows choosing a\nserver or a range of servers proportional to their weight, by simple\ninteger comparison.","distinct":true,"url":"https://api.github.com/repos/arodland/haproxy/commits/c12827636b715fe69b1a70efa5b892ccb89d56ca"},{"sha":"10b069d12cc91ffe6ab1108f0dfe1ce511c49534","author":{"name":"Andrew Rodland","email":"f9ea02e8a8bcdd781ac8f9fbf81e9d6fd88649c9@vimeo.com"},"message":"Add hash-balance-factor option for hash-type consistent.\n\n0 will mean no balancing occurs; otherwise it represents the ratio\nbetween the highest-loaded server and the average load, times 100 (i.e.\na value of 150 means a 1.5x ratio), assuming equal weights.","distinct":true,"url":"https://api.github.com/repos/arodland/haproxy/commits/10b069d12cc91ffe6ab1108f0dfe1ce511c49534"},{"sha":"b700cb2afacefe40cf0dc2c3fc39271b972a4a4a","author":{"name":"Andrew Rodland","email":"f9ea02e8a8bcdd781ac8f9fbf81e9d6fd88649c9@vimeo.com"},"message":"Implement actual bounded-load hash algorithm\n\nThe consistent hash lookup is done as normal, then if balancing is\nenabled, we progress through the hash ring until we find a server that\ndoesn't have \"too much\" load. In the case of equal weights for all\nservers, the allowed number of requests for a server is either the\nfloor or the ceil of (num_requests * hash-balance-factor / num_servers);\nwith unequal weights things are somewhat more complicated, but the\nspirit is the same -- a server should not be able to go too far above\n(its relative weight times) the average load. Using the hash ring to\nmake the second/third/etc. choice maintains as much locality as\npossible given the load limit.","distinct":true,"url":"https://api.github.com/repos/arodland/haproxy/commits/b700cb2afacefe40cf0dc2c3fc39271b972a4a4a"}]}
{"actor":{"display_login":"arodland"}}