Gearman

In some cases, load balancing rather than raw speed may be the main goal; a Web server, for instance, could use Gearman to send tasks for which it is not optimized to another computer (which may be running on a different architecture, using another operating system, or loaded with a computer language better suited to a particular operation).

Brian Aker and Eric Day rewrote the framework in C. Gearman assigns each involved computer a role as client, job server, or worker.

It does this specifically to avoid thundering herd problems which are common to cache hit failures.

Gearman implements a protocol that consists of binary packets containing requests and responses; this protocol defines the structure of messages passing between the three parts of a Gearman implementation.

"[1] Currently there are client libraries for C, Perl, Node.js, Python, PHP, Ruby, Java, .NET, JMS, MySQL, PostgreSQL, and Drizzle.

The Gearman Application Stack.