HAProxy has a TCP mode and HTTP mode, TCP mode is much faster. Bouncy parses HTTP it just uses a minimal pure JavaScript parser which, last time i checked, wasn't faster than the node's HTTP parser but does support some offset information that is needed for header injection.
-Mikeal On Apr 19, 2013, at 2:04PM, Arnout Kazemier <[email protected]> wrote: > Isn't this more or less the same as bouncy? https://github.com/substack/bouncy > Also, HAProxy doesn't need to run TCP mode, it parses HTTP as you can select > different backends based on hostnames or paths. > On Friday, April 19, 2013 at 10:57 PM, Mikeal Rogers wrote: > >> Time for another log on the "http proxy" bonfire. >> >> I've been poking at this problem a long time and I think I may have cracked >> it. >> >> Node should have the fastest HTTP load balancer, and it doesn't currently. >> The fastest open source HTTP balancer I know of is haproxy in TCP mode (does >> not fully parse HTTP). I've taken the same approach, not parsing HTTP, and >> pushed the first release today of hostproxy >> (https://github.com/mikeal/hostproxy). >> >> hostproxy does not parse HTTP, it doesn't even parse headers other than >> host. It gives you an API to return a stream that the incoming connection >> will be piped to along with an API for inserting new headers (like >> x-forwarded-for). >> >> var hostproxy = require('hostproxy') >> , net = require('net') >> ; >> >> hostproxy(function (host) { >> if (host === 'mysite.com') return net.connect(80, 'mysite.com') >> return net.connect(80, 'fallback.com') >> }).listen(80) >> >> There is still plenty of optimizing to be done. Lots of return early >> functions that aren't inlined and a few copies buffer copies that could get >> factored out but until I have a good way of benchmarking it I'm not >> comfortable poking at it. If people have some good benchmarking systems >> setup I'd love to know how it performs next to haproxy in TCP mode. >> >> -Mikeal >> >> -- >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > > -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
