funnel - a connection multiplexer mysql-proxy plugin
This blueprint outlines a use case and implementation of a connection multiplexer plugin for mysql-proxy.
A multiplexer will allow a large number of front-end client connections to be 'funneled' into a smaller user-defined limit of back-end connections to the mysqld. For all incoming 'queries' a front-end connection will be assigned a back-end connection and then disconnected from that back-end once the query has completed. If a back-end connection is not available and the user-defined maximum of back-end connections has been reached, then the front-end connection will be placed into a backlog queue and the query will be handled once a back-end connection has become available and all prior pending items in the backlog have been cleared.
This primary use case will be for hosting the funnel plugin on the same machine as the mysqld instance, although future enhancements may be made to allow proxying to multiple back-ends
The basic feature set will be:
* a user-defined maximum of back-end connections
* a simplified connection pool and backlog queue
* basic profiling of query time and backlog time
* usage for a single user at a single host
* managing/
A more complete feature set will include:
* more flexible authentication and user account usage
* transactional/
* support for multiple backends and query load balancing
Blueprint information
Related branches
Related bugs
Sprints
Whiteboard
There is currently a proof-of-concept supplying the basic featureset available in trickie's launchpad branch. Details and specifics are still up for discussion.