sbetter_server with
approximate queue sojourn times for use with the sbetter load balancer.
Behaviours: sbroker_meter.
See also: sbetter, sbetter_server.
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).
spec() = #{ask => #{upper => AskUpper::non_neg_integer()}, ask_r => #{upper => AskRUpper::non_neg_integer()}, update => Update::pos_integer()}
Generated by EDoc