Nginx 和 haproxy现在都能支持http/tcp/udp的负载均衡,nginx的采用类似编程语言的配置,用文档结构表示配置关系,看起来比较清晰,haproxy的配置有点像网络设备,定义和引用,有时候搞清一个逻辑需要上下来回翻看。
nginx是master-workers多进程,每个进程单线程,多核CPU能充分利用;haproxy是多线程,单进程就能实现超高性能,虽然haproxy也能多进程,但是网上资料多认为开了多进程也不能提升性能,不建议多进程跑。
即使做反向代理nginx性能略低于haproxy,但实际两者性能都超高,我在阿里云1c1g云主机上压测nginx,http性能至少能达到2000qps,而开启了https以后,性能大约550次握手/s。性能问题几乎不用担心。
nginx特点有:
1.使用花括号,层级化的配置文件结构
2.除了自带的map、if语句可以实现简单逻辑,原生支持js/perl脚本,非官方支持lua
3.除了做负载均衡还可以做静态web服务器,缓存服务器(Haproxy不行)
4.模块化,按需编译,因为模块化,所以可选很多第三方扩展模块
5.开源版本只有基础功能,更多的功能要折腾第三方模块,或者花钱买官方扩展版的nginx plus
haproxy特点有:
1.定义和引用,命令式的配置结构
2.支持acl,但不支持其他脚本语言(评论里有人说现在可以支持了)
3.做负载均衡性能比nginx好
4.有一个状态统计页面
5.官方支持会话保持、健康检查等(nginx开源版不带)
6.基础功能覆盖要比nginx开源版好,但是不易扩展,缺乏第三方资源。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。