1.大型网站架构分析
网站在大流量的访问时通过负载均衡将流量分发到各地区、不同性能的服务器上进行处理,有效解决大流量的并发的请求。
架构图:

原理
客户端访问时,通过CDN和DNS加速访问得到回源信息,通过信息将会访问到服务器最外层的路由器和交换机(router),router将访问的流量负载到不同的lvs机器上去,lvs是基于4层的负载均衡器,它不会解析包的内容,但会根据TCP协议修改包的头信息然后转发给接入层(nginx),lvs内部是可以配置一些负载均衡的策略。当流量到达nginx时它会解析包的内容,根据包的service name(即域名)跳转到底层的server服务器,可以根据域名的权重进行server的分配。
lvs层、接入层、server层之间是存在心跳检测的,其中某台机器异常将会自动减掉。通过这样的集群方式就能确保我们的服务是高可用的。如果当前这个机房挂掉了就需要做双机房的部署。
补充:1.四层负载均衡是基于IP+端口的负载均衡,处在传输层
2.七层负载均衡是基于URL等应用层信息的负载均衡。这里说的几层的意思都是基于OSI七层模型来说的,自上而下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
2.nginx 负载均衡算法
1.Round-robin(轮循)
2.Weight-round-robin (带权轮循)
3.Ip-hash(Ip哈希)
带权轮循
原理:
upstream testP{
server 192.168.1.112:8080 weight=1;#Server A
server 192.168.1.113:8080 weight=1;#Server B
}
执行顺序图:
实现代码:
func weight_round_robin(){
A = A + 1;
B = B + 3;
if(A >= B){
target = A;
B -= 3;
A - = 3;
}else{
target = B;
B -= 3;
}
return target;
}
完毕!