3 ms·
I'm thinking of a "load balancer" that charges for basic features like querying for which downstream servers are in service.. HAProxy on the other hand has bee
by Rapzid 7y ago
I'm thinking of a "load balancer" that charges for basic features like querying for which downstream servers are in service..
HAProxy on the other hand has been doing some really fantastic stuff lately that is in the open source. It makes me a bit sad that the former is the "go to" and HAProxy doesn't get the usage it deserves.
To your specific point though I think it's just super tricky to get all the features people expect at the performance they expect as well. You essentially need to implement an very efficient HTTP server, also apparently not trivial, in order to get expected Layer 7 features.. Embedded scripting language support is quickly becoming de facto.. Simple traffic proxy/forwarding is the easy part but getting something competitive together feature and performance wise feels way beyond teeth cutting?
EDIT: Using golang as an example. You would need to either piggy-back the best HTTP server available for your language platform or write your own. The stdlib Golang http server is not competitive performance wise. The reasons for this are pretty well known and seem to be largely accepted by the core team(AFAICT). This won't impact most app and service developers too much, but for an LB service the number of cycles it leaves on the table my not be acceptable at all.
- eloff 7y agoYou can use fasthttp in Go to get performance within about 10% of the best in other languages. See the latest tech empower benchmarks.
- Rapzid 7y agoYup. It's also famously incompatible with the wider ecosystem because it's not a drop in replacement for net/http. There are other criticisms I haven't really looked into as well. Not meant to be my own criticism, just an observation. I believe the net/http interface ossified its own design decisions making it hard/impossible to be compatible with?
- eloff 7y agoThe net/http interface requires too many allocations, which prevents it from running at the same speed. That's why fasthttp uses a different design.
- hinkley 7y agoI’m dealing with some people that have some sort of existential dread of haproxy and I can’t get them to admit why they won’t use it. I’d send them to a therapist but I’m not their boss.