龙空技术网

一线互联网企业负载均衡和应用优化基础

少鹰说 278

前言:

此时小伙伴们对“nginx f5对比”可能比较着重,姐妹们都想要学习一些“nginx f5对比”的相关资讯。那么小编在网摘上汇集了一些关于“nginx f5对比””的相关知识,希望我们能喜欢,我们快快来学习一下吧!

一、什么是负载均衡?

负载均衡的作用:把不同的客户端的请求(C/S和B/S架构)通过负载均衡策略分配到不同的服务器集群上去。

二、负载均衡的工作方式?

负载均衡的工作方式:通过更改请求的目的地址对请求进行转发,在服务器返回数据包的时候更改返回数据包的源地址,来保证客户端请求的目的和返回的包是同一个地址。

三、负载均衡设计的三要素?

负载均衡设计的三个要素:分发策略、会话保持和服务器健康检查

3.1 分发策略:即负载均衡设备根据什么样的策略把请求分发到不同的后台服务器,最简单的算法就是轮询,把用户的请求依次分配到服务器上

3.2 会话保持:在大部分的应用中都会涉及到服务器的session控制,而且这些session通常不会再服务器之间进行复制的,也就是说一个用户在登录的时候,如果分配到了某一台服务器上,则最基本的要求就是这个用户后续的请求都分配到这台服务器上,如果分配到其他的服务器上则可能不认识这个用户的请求,而造成请求失败。最简单的会话保持策略是源地址会话保持,也就是负载均衡设备认为同一个源地址过来的所有请求都是发自于用一个客户端,在源地址会话保持的情况下,下一个客户端的第一个请求会按照负载均衡的策略进行分配,一旦分配了一台服务器之后,后续的请求都会发到这台服务器,当然对于一些应用如新闻、图片、等静态的内容就不需要会话保持了。

3.3 健康检查:负载均衡设备必须检测后台服务器是否正常工作,如果发现某一台服务器出现了故障,则需要把这台服务器从负载均衡组里摘掉,当故障服务器恢复服务的时候,在把服务器重新加入到负载均衡组里进行处理。

四、负载均衡的负载方式?

4.1 四层负载均衡:就是以tcp的一个连接为最小单位,也就是以一个socket连接的最小单位来进行转发,在一个socket里面跑了多少个交易和负载均衡无关,常见的如tcp四层端口负载。

4.2 七层负载均衡:负载均衡设备可以按照协议识别每一笔交易,并以每个交易为最小单位进行转发,比如在一个http1.1的连接中可以包含多个request/response,四层负载均衡一旦确定第一个连接的分配后,就不能对后续的request/response进行后续处理了,而七层负载均衡处理能把每一个http request/response分别进行处理。

五、负载均衡的比较?

f5和nginx的对比:nginx是一款软件的负载均衡,优点基于特定环境、配置简单、使用灵活、成本低廉,可以满足大部分的负载均衡需求,对网络依赖性比较小,但是nginx不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。f5是一款硬件的负载均衡,处理能力更强,而且与系统无关,支持12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器,f5具有动态Session的会话保持功能,f5的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器,并且还可以做网络出口的链路负载均衡,但是f5成本比较高,最便宜的都要十几万一台,如果公司是开矿的,不考虑成本,那可以优先考虑硬件负载均衡把他作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务。

六、负载均衡简单实现方式?

6.1 DNS负载均衡:通过DNS协议实现,对于同一个域名,DNS可以同时提供多个ip地址对应,浏览器会选择第一个地址发出请求,而多个dns地址在local dns返回给客户端的时候会轮询返回,所以不同的用户得到的第一个地址是不一样的,因此,对一个域名提供多个地址可以实现负载均衡的效果。另一种dns负载均衡的方式是dns服务器判断客户端local dns的源地址,根据不用的源地址返回不同的ip地址和域名对应,比如来源是联通,就返回联通的服务器地址,来源是电信,就返回电信的服务器地址,这样也能实现负载均衡的效果。

6.2 重定向负载均衡:一些协议比如http是可以支持重定向的,负载均衡设备通过算法决定用户的请求应该去某台服务器的时候,就返回一个302重定向指令使用户重新发送一个请求到目的服务器,这样实现负载均衡。

七、访问优化分为两部分,客户端优化和服务端优化:

客户端优化:主要是优化客户端的访问速度,可以通过以下几种技术手段:

7.1 多并发连接:默认情况下,ie7.0以下或者Firefox对于同一个域名或地址,都只会用两个tcp连接访问网站,当一个网站上有几十个对象(js,css,jpg,gif等),这些对象就都会在两个tcp连接中按照request/response方式依次下载,在局域网没什么感觉,但一到了广域网环境下,由于广域网延迟就会造成tcp传输效率急剧下降(因为延迟在每一次数据包的传输过程中都会被加入),解决办法就是使用多个域名来下载这些对象,即使这些域名都对应同一个ip,浏览器也会并发多个连接同时去下载对象,这也是flashget,网络蚂蚁下载东西比单独ie下载速度快的一个主要原因。

7.2 http压缩,大部分的浏览器,比如ie和Firefox都可以支持gzip和deflat两种协议的解压缩,而http的页面内容大部分都是以明文,所以,把服务器返回的内容进行压缩后,传输给客户端,客户端在进行解压缩,通常情况下,压缩比可以到1:5,也就是100k的页面可以压缩到20k,这样,在网络传输的数据量就小了很多,客户端打开页面的速度也快了许多。

7.3 cdn技术,将内容推送到客户端比较近的地方,因此可以加快客户端的页面打开速度,同时降低服务器的压力

服务端的优化:主要是减轻服务器的压力

7.4 cache技术,通过大量的内存cache服务器,可以有效的降低后台服务器的压力,避免将业务服务器直接暴露在前端,专门设计的cache服务器常具有比较常规的web服务器更好的处理性能

7.5 在一些商业版本的负载均衡设备中,还提供了连接优化,也就是把很多个客户端的tcp连接聚合成少量的tcp连接到后台服务器,这样后台服务器就不用频繁开启和关闭tcp连接了,从而达到降低服务器cpu占用率的目的,ssl硬件加解密技术,可以直接通过硬件ssl芯片进行ssl加解密的工作,其他还有一些功能就不在这讨论了

7.6 tcp层面优化:主要通过调整服务器内核的tcp堆栈参数实现,在新的linux版本包括Windows server2008里面都有很多tcp堆栈参数调整项,默认值不一定是最好的,有些时候通过一些调整能对应用系统有很大的帮助。

想要学习Dubbo框架、zookeper基本原理、redis分布式缓存、JVM性能优化,Nginx+apache+Tomcat集群部署、大数据hadoop,Hbase实时计算spark、storm、数据分析分词和权重等核心技术;需要的可以关注之后私信哈,记得要点赞转发噢!!!

标签: #nginx f5对比