隨機策略:
publicclass randomloadbalance extends
abstractloadbalance
}if (totalweight > 0 && !sameweight) }}
//如果權重相同或權重為0則均等隨機
return
invokers.get(random.nextint(length));
}}
由此判斷出,random是執行緒安全的!輪訓策略:
publicclass roundrobinloadbalance extends
abstractloadbalance
}atomicpositiveinteger sequence =sequences.get(key);
if (sequence == null
)
int currentsequence =sequence.getandincrement();
if (maxweight > 0 && minweight < maxweight)
if (v.getvalue() > 0) }}
}//取模輪循
return invokers.get(currentsequence %length);
}private
static
final
class
private
intvalue;
value)
public
intgetvalue()
public
void setvalue(int
value)
public
void
decrement()
}}
這裡要用concurrentmap記錄每個invokers list 對應乙個記數,記數每次呼叫加1,然後取模來算出呼叫哪乙個invoker。
最少活躍數策略:
publicclass leastactiveloadbalance extends
abstractloadbalance else
if (active == leastactive) }}
//assert(leastcount > 0)
if (leastcount == 1)
if (!sameweight && totalweight > 0)
}//如果權重相同或權重為0則均等隨機
return
invokers.get(leastindexs[random.nextint(leastcount)]);
}}
一致性hash策略:
publicclass consistenthashloadbalance extends
abstractloadbalance
return
selector.select(invocation);
}private
static
final
class consistenthashselector
for (invokerinvoker : invokers) }}
}public invokerselect(invocation invocation)
private
string tokey(object args)
}return
buf.tostring();
}private invokerselectforkey(long
hash)
else
}invoker =virtualinvokers.get(key);
return
invoker;
}private
long hash(byte digest, int
number)
private
byte
md5(string value)
catch
(nosuchalgorithmexception e)
md5.reset();
byte
bytes;
try
catch
(unsupportedencodingexception e)
md5.update(bytes);
return
md5.digest();}}
}
這個一致性hash放節點的時候的key用的是ip位址,在查詢的時候使用呼叫方法的引數集合,這裡可能會有問題,不建議使用。
dubbo負載均衡
在集群負載均衡時,dubbo提供了多種均衡策略,預設為random隨機呼叫。random loadbalance 隨機,按權重設定隨機概率。在乙個截面上碰撞的概率高,但呼叫量越大分布越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。roundrobin loadbalance 輪循,...
dubbo負載均衡
負載均衡 在集群負載均衡時,dubbo 提供了多種均衡策略,預設為 random 隨機呼叫。負載均衡策略 random loadbalance 1 隨機,按權重設定隨機概率。2 在乙個截面上碰撞的概率高,但呼叫量越大分布越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。roundro...
Dubbo 負載均衡
負載均衡策略 dubbo內建了四種負載均衡策略 randomloadbalance 隨機負載均衡,預設的策略 roundrobinloadbalance 輪詢負載均衡 leastactiveloadbalance 最少活躍呼叫數 consistenhashloadbalance 一致性雜湊,相同引數...