Difference between revisions of "Apertium-apy/load balancing"
Jump to navigation
Jump to search
(Created page with "<pre>OrderedDict( ( (ServerHost, ServerPort), #('http://localhost/', 2738) (AggregateServerScore, { #12.55266488 - Sum of values in following dict (weight ...") |
|||
Line 12: | Line 12: | ||
The plan for a "Fastest" paradigm load balancer (Random, RoundRobin, and LeastConnections exist; WeightedRandom in dev.) |
The plan for a "Fastest" paradigm load balancer (Random, RoundRobin, and LeastConnections exist; WeightedRandom in dev.) |
||
# On gateway start, call each server's '/list's and initalize the server pool while checking for valid responses |
|||
# For each request, inform the handler on request start and end |
|||
# If the request is on the list of acceptable benchmark URLs, update the cooresponding moving average and aggregate score, re-sort the serverpool ( :\ ) |
|||
# Periodically, call each server's '/list's and drop all existing data (what intervals?) |
|||
# When the request handler asks for a server, return the handler which has the LOWEST aggregateServerScore - this will form a negative feedback loop |
|||
Future: integrate least connections and fastest load balancer... maybe even query servers to ask for their current load |
Future: integrate least connections and fastest load balancer... maybe even query servers to ask for their current load status |
||
Notes to self: |
Notes to self: |
||
# Ignore requests that response is 4xx HTTP code |
|||
# If server returns a 5xx for a '/list' at anytime, float('inf') for that server (effectively remove it from pool), let it only reenter the server pool when periodic testing occurs |
|||
# Check if pool is ever empty, if so, raise critical error and return 503 for all requests |
|||
Balkan langs page: |
|||
1. bg-el number in wrong place |
|||
2. mkd-en number in wrong place |
Revision as of 01:32, 25 December 2013
OrderedDict( ( (ServerHost, ServerPort), #('http://localhost/', 2738) (AggregateServerScore, { #12.55266488 - Sum of values in following dict (weight them somehow - check numbers to see how) '/list.*': MovingAverageResponseTime (how many? - exponential moving average maybe?) '/analyze': MovingAverageResponseTime/ResponseLength, '/translate': MovingAverageResponseTime/ResponseLength, '/generate': MovingAverageResponseTime/ResponseLength } ) ... )
The plan for a "Fastest" paradigm load balancer (Random, RoundRobin, and LeastConnections exist; WeightedRandom in dev.)
- On gateway start, call each server's '/list's and initalize the server pool while checking for valid responses
- For each request, inform the handler on request start and end
- If the request is on the list of acceptable benchmark URLs, update the cooresponding moving average and aggregate score, re-sort the serverpool ( :\ )
- Periodically, call each server's '/list's and drop all existing data (what intervals?)
- When the request handler asks for a server, return the handler which has the LOWEST aggregateServerScore - this will form a negative feedback loop
Future: integrate least connections and fastest load balancer... maybe even query servers to ask for their current load status
Notes to self:
- Ignore requests that response is 4xx HTTP code
- If server returns a 5xx for a '/list' at anytime, float('inf') for that server (effectively remove it from pool), let it only reenter the server pool when periodic testing occurs
- Check if pool is ever empty, if so, raise critical error and return 503 for all requests