负载均衡《构建高性能web站点》

作者:heyue 时间:2011-05-04 分类:互联网技术 评论:12 条 浏览:4490

由于单机性能是有限的,不管机器多么牛逼,最后都会受限于一些硬件和一些软件,在这个时候web的水平扩展变得非常重要。

常见的负载均衡的方式:

1.程序重定向

2.dns的A记录或者CNAME进行负载均衡

3.七层http反向代理负载均衡,也就是常见的nginx、HAProxy、varnish

4.四层负载均衡,在IP层实现的负载均衡

总结1:http重定向负载均衡

这个很好处理啊,当一个请求来的时候,通过一定的策略,把请求放到后端服务器。比如。策略一般用随机转发,或者通过监控后端机器的流量、负载等数据,发送到中转机进行一些简单的策略调度。

总结2:DNS负载均衡

这个应该所有的大型互联网公司都在用,首先是因为不能把所有的鸡蛋放在一个篮子里面,如果把所有的数据、程序放在一个地方,要是地震了不就全挂了。

但是dns不能实时的,有一定的缓存区,也就是你的机器挂掉了,dns才不管这个呢,依旧指向这个ip,一般公网上的dns提供商指定的最短dns的过期时间为3600s(一个小时),这是无法接受的。现在发现的dnspod 可以设置的最短的dns过期时间是600s,这个对于中小型网站来说,还是一个不错的选择。

dns负载均衡还有一个用处就是智能解析,可以把电信的解析到电信的机器,网通的解析到网通的机器,同样有dnspod可以做这个事情,这个比较适合中型网站。

动态dns:大型互联网公司一般都自己管理自己的dns,首先是业务台复杂,其次是cdn太多,最后是需要迅速切换流量和处理宕机事故。据我所知,新浪的dns过期时间是120s,也就是可以接受2分钟来切换故障(不知道我理解对与否).

总结3:反向代理负载均衡

nginx、HAProxy、varnish、squid都是目前最好的反向代理服务器。反向代理服务器需要的几个特性:

  1. 自身效率高,别弄到最后瓶颈在反向代理服务器
  2. 能对后端服务器有权重设置
  3. 对后端服务器有健康检查、异常服务器自动删除、自动恢复的功能
  4. 尽量只转发动态耗时的处理程序,静态的最好本地直接向浏览器传输。

总结4:IP层——四层的负载均衡(NAT)

核心思想:由linux内核来实现,在网络数据包从内核缓冲区到达用户程序地址空间前,尽早转发到其他服务器上。

首先,网络七层是分开设计的,IP层工作在应用层下,可以透明地进行转发,而应用层根本不知道下面的事情。

比如LVS,F5都是四层的负载均衡软件和设备

LVS-NAT,核心,修改包头

总结5:直接路由,也是修改数据包头,让真实服务器不经过负载均衡设备,直接传输数据给客户端。

LVS-DR

请求:浏览器————————>负载均衡设备——————–>真实服务器

响应:真实服务器——————————–>浏览器

写完了,大概总结了一下,没太好的思路,因为在大公司里面,这些都是系统工程师、运维做好了的,开发工程师一般不用考虑这个,但是我依旧感觉这个东西就是互联网的设置之一,毕竟一个服务器也干不了啥….

标签: , , ,

相关推荐
更多

程序员与文人
Posted on 05月01日
Kyoto Cabinet 基本规格书【转】
Posted on 06月20日
这两个月应该看的书
Posted on 04月10日
Thrift vs. Protocol Buffers
Posted on 06月23日