Python director schedulers
--------------------------

The scheduler controls how client hits are distributed amongst the
backend servers. They're typically a very small piece of code - 
see the file pdschedulers.py in the package for the current 
schedulers.

Current schedulers
==================

random

  For each hit, randomly choose from available servers

roundrobin

  Distribute hits in a round-robin fashion; so for three servers A, B, C
  hits would go A B C A B C A B C ...

leastconns

  Send the hit to the backend server with the least number of current
  open connections. Assuming that the server holds the TCP connections
  open while processing, this will often lead to a quite effective load
  balancing, as the faster servers will process and finish connections 
  faster than the slower servers.

leastconnsrr

  Send the hit to the backend server with the least number of current
  connections. If multiple machines have the same number of open 
  connections, send to the least recently used.


Future work
===========

The following are not new scheduler types, but options for the existing
schedulers.

sticky

  Prefer the same server address for a given client address. Useful 
  when the backend servers have some form of per-client caching.

weighted

  Explicitly provide weighting for different servers. E.g. if the
  default weighting is 1, then a server with a weighting of 0.5 will
  only receive half as many hits as the default.

