如今,常见的两大负载均衡解决方案,不外乎是使用标准服务器硬件平台+开源软件,以及专业的应用交付,但孰优孰劣?这个我们终究还是要用事实来说话。
首先,不妨深入分析一下目前应用比较广的两个开源负载软件——Nginx和Haproxy——在技术上的优缺点,以及它们和专业的应用交付之间到底有什么差距。
Nginx
作为一款耳熟能详的产品,Nginx以低系统资源占用、高并发连接性能而著称,殊不知,它本来只是一款源自于俄罗斯的高效Web/电子邮件服务器。当Nginx被引入互联网后,它可以完全实现7层负载的超强反向代理功能也逐渐被人们发现。自此之后,Nginx就作为一款主流开源负载软件被广泛应用了,而它原来的服务器功能,反而很少被人提起——真心是“彪悍的人生不需要解释”。
从Nginx的代码框架上,可以看出,Nginx可分为三大部分,分别是:内容定位、负载均衡和内容加工。
整个框架具备如下特点:
1.具有明显的面向内容的色彩。
2.扩展性极强,模块划分非常精细及合理。
不过,虽然Ngnix应用非常广泛,但毕竟它的设计初衷不是专业负载,所以在负载方面自然存在硬伤:
1.负载均衡算法和健康检查算法非常有限。
2.不支持会话保持,这是非常致命的。
3.没有现成的双机热备方案。
言至此,对Nginx在负载均衡上的表现简而言之就是:根不正,苗不红。
Haproxy
和Nginx相比,Haproxy可以算是科班出身了。在内部处理流程上,负载均衡就是它的主业。
其特点主要表现在:
1.它的设计思路与专业的应用交付设计基本相同,因此能够比较容易友好地进行负载均衡特性的配置。
2.有明确的7层内容交换特性。
3.负载均衡及健康检查算法较丰富,并支持一些动态算法。
4.有双机热备的开源解决方案。
但是,Haproxy也存在着某些显而易见的局限性:
1.应用场景比较单一。其代码和专业的应用交付明显不在一个档次;
2.和专业的应用交付相比,Haproxy缺乏卸载、加速、安全等技术门槛较高的特性。
仅凭以上两点内伤,就确定了Haproxy本质上还是缺乏成为高富帅的潜质。
专业的应用交付与开源软件的差异
专业的应用交付厂商能够为用户提供专业的应用交付解决方案,但很多客户觉得开源软件也能满足需求。那么,开源软件和专业硬件之间的区别到底有多大呢?
首先,就性能而言,开源软件具有两个不可避免的依赖性和局限性:
一.是对发行版操作系统的依赖。
任何一种开源软件都需要依赖某种操作系统,并使用该操作系统的某些资源来实现最基本的功能。
对Nginx和Haproxy而言,它们的依赖性主要表现在:
1、内核的网络接口驱动,它实现数据包的接收和发送;
2、内核的TCP/IP协议栈,它实现基于连接的可靠数据交互。
熟悉Linux内核编程的人都知道,上述两个内核功能都有其性能瓶颈,前者是中断,后者是socket系统调用。基于这两个性能瓶颈做出来的软件,即便自身代码优化到***,性能也不会有质的提高。就算开源操作系统本身有例如epoll、splice等大幅优化的策略,其使用也受到很多限制,效果上始终和专业的负载均衡硬件有着数量级的差异。
开源软件操作系统的依赖性还体现在另一个方面,即三层及三层以下转发特性的依赖。专业的负载均衡设备需要适应各种组网环境,其转发特性和传统的路由器还是有很大差异。因此开源软件搭建的系统,在网络环境支持上有很大的局限。
二.是对硬件平台的局限。
开源系统一般会搭建在基于x86的服务器平台上,但负载均衡器归根到底是一个网络设备,对网络设备来说,最重要的性能参数就是数据吞吐量,而数据吞吐恰恰是服务器平台的弱项。而且基于服务器平台的开源系统性能也很难继续向上优化——这是因为开源软件本身解决不了的问题就是多核并行化和分布式系统。
专业应用交付和开源负载软件,到底哪一款更适合您?这个,最终还是得由用户的具体环境决定。
转载请注明:IT运维空间 » 运维技术 » 谁与争锋!专业应用交付vs开源负载软件
发表评论