-- 关于分布式,集群与负载均衡相关的联系与区别
【官网】:#
应用场景
当单体应用无法满足需求,需要拆散服务,或横向增加服务器节点时我们慢慢的就要接触集群管理,分布式处理等问题了。基础资源
无
使用须知
请结合实际应用场景处理相关问题
配置步骤
【分布式】.
[定义]
一个程序或系统,只要不同业务运行在不同的机器上,就可以叫分布式.
1)最简单的一个分布式架构图.
[分布式目的]
可靠性:解决中心化带来的中心宕机,整个系统崩溃的问题.
分散负载:减轻中心化带来的高负载。
[分布式的问题]
一致性
[注1]Load Balance是负载均衡。
【集群】.
[定义]
集群就是实现相同业务的机器(物理的或逻辑的)集合,可以属于同一机房,也可分属不同的机房。
但集群上跑的不一定是分布式系统。
1)分布式与集群的区别与联系.
|
分布式(工作方式) |
集群(节点集合) |
概念 |
一个系统不同的业务模块运行在不同的机器上. |
运行相同业务的多个机器(逻辑上的,可以不在同一个机房) |
当一个节点挂掉后 |
系统崩溃 |
一个节点挂掉另外一个节点立刻顶上。 |
优化性能的方式 |
不同业务运行在不同节点,缩短业务执行时间 |
提高单位时间内的任务数 |
联系 |
分布式上每个节点(代表一个业务)都可以做集群. |
[比喻]
饭店人多了,请多个厨师可以炒相同菜,厨师就是集群。
后来为了提高效率,请了切菜员,(切菜与炒菜就是分布式的).
后来切菜的也不够用了,又请了一个切菜员,切菜员也成了一个切菜的集群了。
[参考]https://www.cnblogs.com/aspirant/p/5697807.html
【负载均衡】
[定义]
按照一定的策略把任务分配到不同的操作单元上去执行.
[负载均衡的实现方式]
|
概念 |
特征 |
http重定向 |
http的head中location重定向. |
注1:至少保证转移请求的压力小于执行请求的压力,才有意义.//类似下载站 注2: 受限于主服务器的限制.
|
DNS负载均衡 |
Dns解析域名到ip. |
注1:可以把用户请求解析到最近的一个服务器。 注2:会有解析缓存延时。 |
反向代理负载均衡 |
任何对于实际服务器的HTTP请求与响应都必须经过调度器 |
注1:几乎所有主流的Web服务器都热衷于支持基于反向代理的负载均衡. 注2:反向代理的调度器扮演的是用户和实际服务器中间人的角色,调度器转发请求并等待实际服务器的HTTP响应,并将它反馈给用户。 注3:策略丰富可以根据不同实际服务器配置设置权重。 注4:调度服务器可以知道实际服务器的tcp连接数,响应时间,流量,是否可用等,可以基于此调节均衡策略. 注5:由于使用http层面,建立连接这些有不小的消耗,性能极致无法发挥出来。 |
IP负载均衡(LVS-NAT) |
NAT服务器:相对于反向代理负载均衡,它工作在传输层 |
它可以修改发送来的IP数据包,将数据包的目标地址修改为实际服务器地址 |
直接路由(LVS-DR) |
NAT是工作在网络分层模型的传输层(第四层),而直接路由是工作在数据链路层(第二层) |
它通过修改数据包的目标MAC地址(没有修改目标IP),将数据包转发到实际服务器上,不同的是,实际服务器的响应数据包将直接发送给客户羰,而不经过调度器。 |
IP隧道(LVS-TUN) |
|
基于IP隧道的请求转发机制:将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器, 然后实际服务器的响应数据包可以直接到达用户端。目前Linux大多支持,可以用LVS来实现,称为LVS-TUN,与LVS-DR不同的是, 实际服务器可以和调度器不在同一个WANt网段,调度器通过 IP隧道技术来转发请求到实际服务器,所以实际服务器也必须拥有合法的IP地址。 |
[注]负载均衡有硬件和软件两种.
[硬件负载均衡]:
将4-7层负载均衡功能做到一个硬件里面,如F5,梭子鱼. f5-bigip 性能比较好,立竿见影,价格昂贵,一般适合于大型网站公司,网游公司。
[软件负载均衡]
分为四层和七层 LVS属于四层负载均衡,工作在tcp/ip协议栈上,通过修改网络包的ip地址和端口来转发, 由于效率比七层高,一般放在架构的前端. 七层的负载均衡有nginx, haproxy, apache等, 工作在应用层,因此可以将HTTP请求等应用数据发送到具体的应用服务器, 如将图片请求转发到特定的服务器上,总之可以做到更智能的负载均衡,这些功能在四层负载均衡上不好实现,一般放在架构的后面位置,布置在应用服务器前面.
[负载均衡的算法]
1. 轮询(Round Robin)
2、加权轮询(Weighted Round Robin)
3、动态轮询
4、随机
5、最快算法(最快算法基于所有服务器中的最快响应时间分配连接)
6、最少连接(系统把新连接分配给当前连接数目最少的服务器)
[参考]https://blog.csdn.net/nicewuranran/article/details/52860769
常见问题
快速入门
无