sbetter_meter (sbroker v1.1.1)
Registers the process with and updates the sbetter_server
with approximate queue sojourn times for use with the sbetter
load balancer.
sbetter_meter
can be used as the sbroker_meter
in a sbroker
or a sregulator
. It will provide the capability to do best of 2 random choices load balancing, using sbetter
, between sbroker
or sregulator
processes using the sojourn time of their queues. Its argument, spec()
, is of the form: #{ask => #{upper => AskUpper :: non_neg_integer()}, % default: 5000
ask_r => #{upper => AskRUpper :: non_neg_integer()}, % default: 5000
update => Update :: pos_integer()} % default: 100
AskUpper
is the maximum ask
sojourn time in milliseconds (defaults to 5000
) and AskRUpper
is the maximum ask_r
sojourn time in milliseconds (defaults to 5000
) that will be updated to the sbetter_server
for use with sbetter
. If a match doesn't occur on the sbroker
or sregulator
the approximate sojourn time will increase unbounded for one of the two queues. Limiting this value prevents the situation where one process becomes stuck as the "worst" option because it hasn't matched for the longest when the processes' queues would be equivalently "bad".
For example if using the sbroker_timeout_queue
with (the default) timeout of 5000
, then all requests are dropped after 5000
and so become approximately equivalent once the sojourn time is 5000
milliseconds.
Update
is the update interval in milliseconds when the process is idle (defaults to 100
).See also: sbetter, sbetter_server.
Link to this section Summary
Link to this section Types
spec/0
Specs
spec() :: #{ask => #{upper => AskUpper :: non_neg_integer()}, ask_r => #{upper => AskRUpper :: non_neg_integer()}, update => Update :: pos_integer()}.