负载均衡和应用优化基础
1、DNS负载均衡,通过DNS协议实现,对于同一个域名,DNS可以同时提供多个IP地址对应,浏览器会选择第一个地址发出请求,而多个DNS地址在 Local DNS返回给客户端的时候会轮询返回,所以不同的用户得到的第一个地址是不一样的。因此,对一个域名提供多个地址可以实现负载均衡的效果。另外一种DNS 负载均衡的方式是DNS服务器判断客户端local DNS的源地址,根据不同的源地址返回不同的IP地址和域名对应。比如来源是网通,就返回网通的服务器地址,来源是电信,就返回电信的服务器地址。这样也能实现负载均衡的效果。
2、NAT负载均衡
3、重定向负载均衡,一些协议比如HTTP是可以支持重定向的,负载均衡设备通过算法决定用户的请求应该去某台服务器的时候,就返回一个302重定向指令使用户重新发送一个请求到目的服务器。这样实现负载均衡。
在实际的网站环境中,由于每个编程人员的考虑角度不同,很多时候开发人员考虑的是如何实现功能和业务,很少考虑访问速度究竟如何。他们的开发环境都是很好的100M,1000M的网络环境,而实际应用中客户端可能来自于任何的地点和位置,有国外的访问、CDMA、GPRS、跨运营商等都有可能。当这些用户访问一个不优化的网站的时候,就会暴露出各种各样的问题了。
访问优化分为两个部分,客户端优化和服务器端优化:
客户端优化
主要是优化客户端的访问速度。客户端的访问优化可以通过以下几种技术手段:
1、多并发连接,默认情况下,IE 7.0和以下或者Firefox对于同一个域名或地址,都只会用两个TCP连接访问网站,当一个网站上有几十个对象(js,CSS,jpg,gif等)。这些对象就都会在两个TCP连接中按照request/response方式依次下载。在局域网没什么感觉,但一到了广域网环境下,由于广域网的延迟就会造成TCP传输效率急剧下降(因为延迟在每一次数据包的传输过程中都会被加入)。解决的办法就是使用多个域名来下载这些对象,即使这些域名都对应同一个 IP,浏览器也会并发多个连接同时去下载对象。这也是Flashget,网络蚂蚁下载东西比单独IE下载速度快的一个主要原因。
2、HTTP压缩,大部分的浏览器,比如IE和Firefox都可以支持gzip和deflat两种协议的解压缩。而HTTP 的页面内容大部分都是以明文,所以,把服务器返回的内容进行压缩后,传输给客户端,客户端再进行解压缩。通常情况下,压缩比可以到1:5,也就是100K 的页面可以压缩到20K,这样,在网络上传输的数据量就小了很多。客户端打开页面的速度也快了许多。
3、CDN技术,将内容推送到离客户端比较近的地方。因此可以加快客户端的页面打开速度,同时降低服务器压力。
服务器端优化:
主要是减轻服务器的压力
1、Cache技术,通过大量的内存Cache服务器,可以有效的降低后台服务器的压力。避免将业务服务器直接暴露在前端。专门设计的Cache服务器通常具有比常规的Web服务器更好的处理性能。
2、在一些商业版本的负载均衡设备中,还提供了连接优化,也就是把很多个客户端的TCP连接聚合成少量的TCP连接到后台服务器,这样后台服务器就不用频繁开启和关闭TCP连接了,从而达到降低服务器CPU占用率的目的。SSL硬件加解密技术,可以直接通过硬件SSL芯片进行SSL加解密的工作。其他还有一些功能就不在这里讨论了。
TCP层面优化:
主要通过调整服务器内核的TCP堆栈参数实现,在新的Linux版本包括Windows Server 2008里面都有很多的TCP 堆栈参数调整项,默认值不一定是最好的,有些时候通过一些调整能对应用系统有很大的帮助。这一块俺现在还不是很清楚怎么调整,有兴趣的同学可以讨论一下。
No comments:
Post a Comment