Dubbo的一種負載均衡算法(rtt排序)

一、 題目要求:

    題目來自阿里雲中間件性能挑戰賽,找一種性能最佳的Dubbo負載均衡算法。

     provider的性能要求

二、分析

    其實一個比較能代表當前provider性能的指標就是rtt(round-trip-time,一次調用返回時間), 這一指標比剩餘線程數、CPU/內存佔用率、權重比值都更直接體現provider的當前性能。因此,應當儘量地去應用這一指標來發揮狀態上佳的provider的性能,讓幹活兒快的多幹點。因此,可以使用rtt排序的方法來選擇rtt最小的provider。同時需要注意兩點:

1. rtt不能使用單個的rtt,因爲這個具有偶然性。應該使用n個的平均或者加權,同時n也不能太大,否則不靈敏。這裏取5~10。

2. 注意每個provider所能容納的請求數,當超過了就會失敗,所以要注意限流。當rtt最小的provider到了最大數,就要根據rtt排序選下一個provider。如果rtt相同,則根據權重隨機。

三、線上表現

    稍好於最大剩餘線程數,平均127.5萬左右,最大129.6萬。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章