身为30K的程序员你还不懂四层与七层负载均衡以及负载均衡算法?
本文是给大家讲解的内容是四层与七层负载均衡以及负载均衡算法。
四层与七层负载均衡
服务端负载均衡分为四层负载均衡和七层负载均衡。
四层负载均衡
四层负载均衡支持IPv4协议和IPv6协议,是基于流的服务端负载均衡,对报文进行逐流分发,将同一条流的报文分发给同一个服务器。四层负载均衡对基于HTTP的七层业务无法做到按内容进行分发,限制了负载均衡的适用范围。四层负载均衡有NAT(Network AddressTranslation,网络地址转换)和直接路由(Direct Routing,以下简称DR)两种应用方式。
七层负载均衡
七层负载均衡只支持IPv4协议,是基于内容的服务端负载均衡,对报文的承载内容进行深度解析,包括HTTP、RTSP等,根据其中的内容进行逐包分发,按既定策略将连接导向指定的服务器,实现了使用范围更广泛的负载均衡。七层负载均衡仅支持NAT方式。
负载均衡算法
负载均衡算法决定了后端的哪些健康服务器会被选中。使用算法的前提条件是定义一个服务器列表,每个负载均衡的算法会从中挑出一个服务器作为算法的结果。常用的算法如下。
● 轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部的服务器。该算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
● 权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如,服务器A的权值被设计成1,服务器B的权值是3,服务器C的权值是6,则服务器A、B、C将分别接收到10%、30%、60%的服务请求。该算法能确保高性能的服务器的使用率更高,避免低性能的服务器负载过重。
● 随机均衡(Random):把来自网络的请求随机分配给内部的多个服务器。
● 权重随机均衡(Weighted Random):类似于权重轮循均衡算法,只是在处理请求时是一个随机选择的过程。
● 响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部各服务器对探测请求的最快响应时间来决定让哪个服务器来响应客户端的服务请求。该算法能较好地反映服务器的当前运行状态,但这里的最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
● 最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异。随着工作时间的增加,如果采用简单的轮循或随机均衡算法,每个服务器上的连接进程可能会有极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部的每个服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使负载更加符合实际情况,更加均衡。
● 处理能力均衡:该算法将把服务请求分配给内部处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以该算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡中。
● DNS响应均衡:在Internet上,无论是HTTP、FTP还是其他的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其他的IP地址响应。这种均衡策略适合应用在全局负载均衡下,对本地负载均衡是没有意义的。
本文给大家讲解的内容是四层与七层负载均衡以及负载均衡算法
下篇文章给大家讲解的内容是Spring Cloud Ribbon
觉得文章不错的朋友可以转发此文关注小编;
感谢大家的支持!
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。