You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a feature request for a new Route: AllSizeRoute.
Properties:
size: max or min
Immediately sends the same request to all child route handles.
Collects all replies and responds with the size reply.
For numbers => min == smallest reply value (e.g. If 0, 5, & 14 came back, return 0)
For numbers => max == largest reply value (e.g. If 0, 5, & 14 came back, return 14)
If all replies are errors, returns the last error.
If all replies are not numbers, returns an error.
If some replies are not numbers, return the size reply of those that are numbers.
Why:
If using mcrouter to create a highly-available (replicated, no spof)
counter cluster, where counters can only increase, no existing routes
can return the largest value from all child route handles. The best
that can be achieved at the moment (afaik) is:
Using AllMajorityRoute on get ensures that a missed incr on
one memcached doesn't impact the returned value, but it's far from
bullet proof (ex: if incr is applied only on 1 of the 3, it undercounts).
Note: Concept could be extended to Strings (Min/Max == Smallest or
Longest value length (e.g. "foo" < "foobar").
Note: size option list could be extended to include median, avg, 95th%, etc.
If there's already a better way of achieving this, please let me know,
I might have missed an available Route (or a clever way of composing
them). Thanks!
The text was updated successfully, but these errors were encountered:
I have a feature request for a new Route: AllSizeRoute.
Properties:
size
:max
ormin
Immediately sends the same request to all child route handles.
Collects all replies and responds with the
size
reply.For numbers => min == smallest reply value (e.g. If 0, 5, & 14 came back, return 0)
For numbers => max == largest reply value (e.g. If 0, 5, & 14 came back, return 14)
size
reply of those that are numbers.Why:
If using mcrouter to create a highly-available (replicated, no spof)
counter cluster, where counters can only increase, no existing routes
can return the largest value from all child route handles. The best
that can be achieved at the moment (afaik) is:
Using
AllMajorityRoute
onget
ensures that a missedincr
onone memcached doesn't impact the returned value, but it's far from
bullet proof (ex: if
incr
is applied only on 1 of the 3, it undercounts).Note: Concept could be extended to Strings (Min/Max == Smallest or
Longest value length (e.g. "foo" < "foobar").
Note:
size
option list could be extended to includemedian
,avg
,95th%
, etc.If there's already a better way of achieving this, please let me know,
I might have missed an available Route (or a clever way of composing
them). Thanks!
The text was updated successfully, but these errors were encountered: