dispatcher: relative weight distribution #219
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was confused a little while using dispatcher weight alg. Smth like this If some host go away:
30/30/40 -> 70/30/0 (the third one was failed). This transformation is more correct in my mind:
30/30/40 -> 50/50/0. So I have to assign some hook to dispatcher:dst-down/dispatcher:dst-up route for rebalancing
“rweight” (relative weight) parameter is added in this branch. rweight is in the integer range from 1 to 100 (weight, not percentage).
Active host usage probability is rweight/(sum of all active host rweights in destination group).
So INACTIVE/DISABLED destinations are removed from probability calculation.
let’s we have rweights 1/2/1; 100 calls will be distributed as 25/50/25
after third host failing (via ds_mark_dst([state]) or RPC dispatcher.set_state or via module pinging): 33/67/0