写点什么

架构师训练营 week5 - 学习总结

用户头像
devfan
关注
发布于: 2020 年 07 月 08 日



本周学习总结,主要对负载均衡架构进行一个简单的梳理:

负载均衡架构

1.分类

1.1 HTTP重定向负载均衡

HTTP重定向服务器是一台普通的应用服务器,其唯一个功能就是根据用户的HTTP请求计算出一台真实的服务器地址,并将该服务器地址写入HTTP重定向响应中(重定向响应状态码为302)返回给用户浏览器。用户浏览器在获取到响应之后,根据返回的信息,重新发送一个请求到真实的服务器上。



优点

实现简单

缺点

浏览器需要两次请求服务器才能完成一次访问,性能较差。



1.2 DNS负载均衡

DNS负载均衡是最常见的一种负载均衡方式,一般用于地理级别的负载均衡。DNS进行域名解析时每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。

优点:
  • 将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦。

  • 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。

  • 对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问。

  • 服务器可以位于互联网的任意位置。

  • 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能。

缺点:
  • 目前的DNS是多级解析的,每一级DNS都可能缓存A记录,当某台服务器下线之后,即使修改了A记录,要使其生效也需要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终导致用户访问失败。

  • 不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好。

  • 可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题

1.3 反向代理负载均衡

反向代理服务器管理了一组服务器,根据对应的负载均衡算法将不同的请求转发到不同的服务器上。



优点
  • 反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提供有益的性能;

  • 由于网络外部用户不能直接访问真实的服务器,具备额外的安全性

缺点
  • 反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡

  • 针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈。

1.4 IP负载均衡

IP负载均衡工作在传输层,它可以修改发送来的IP数据包,将数据包的目标地址修改为实际服务器地址。

优点

IP负载均衡在内核进程完成数据分发,处理性能很好

缺点

最大响应数据吞吐量将受到负载均衡服务器网卡带宽的限制

1.5 数据链路层负载均衡

数据链路层负载均衡通过修改通信协议数据包的mac地址进行负载均衡

2. 算法

2.1 轮询法

将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

2.2 随机法

通过随机算法,根据服务器的列表大小值来随机选取其中的一台服务器进行访问。随着调用次数增多,其实际效果越来越接近于平均分配调用量到每一台服务器,也就是轮询的结果。

2.3 源地址哈希法

通过哈希函数计算客户端的IP地址得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

2.4 加权轮询法

不同的服务器的配置和当前负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

2.5 加权随机法

与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

2.6 最小连接数法

最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前



用户头像

devfan

关注

还未添加个人签名 2017.11.12 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 week5 - 学习总结