由dubbo开始看看所谓的软负载均衡

待总结

我们在微服务架构中,常用一些注册中心进行订阅消费我们的服务,这时候对于同一服务请求会有不同的机器同时可以提供服务,这时是怎么选择哪一台机器去连接获取服务呢?

负载均衡设备作为纵跨网络2-7层协议的设备,往往放置再网络设备和应用设备的连接处,
同时它也有另一个称呼:4/7层交换机,但它首先是个2-3层交换机。

在没有部署负载均衡设备之前,用户直接访问服务器地址(中间或许有在防火墙上将服务器地址映射成别的地址,但本质还是一对一)。当单台服务器无法处理大量用户的访问时,就要考虑多台服务器提供服务,就需实现负载均衡了。负载均衡设备实现的原理是把多台服务器的地址映射成一个对外的服务IP(可以成为VIP),这个过程对用户是透明的,由负载均衡设备进行分发处理用户请求后统一出口响应。

例如下面的例子,用户访问一个域名,先通过DNS服务器查询解析这个域名的公网地址(其实就是负载均衡设备的IP),接下来访问该地址,到达负载均衡设备,由此重新修改请求数据包部分数据,如将请求地址(目的地址)改为分发处理的服务器地址,这叫NAT,同时返回时也可能有NAT。

下面先总结一下三个基本的特征:负载均衡算法(策略),健康检查,会话保持

负载均衡算法

轮询(RoundRobin):按请求顺序分发请求给队列中的服务器处理

比率(Ratio):给队列中的每个服务器分配一个加权值为比例,把每个请求按比例分发

优先权(Priority):给所有服务器分组,给每个组定义优先权,按照优先级分发请求到组(组内分发可按照轮询或者比率)

最少连接数(LeastConnection):负载均衡设备记录每个服务器或者服务端口上的连接数,新的连接将分发给连接数少的服务器

最快响应时间(Fast Response time):新的连接分发给响应最快的服务器

哈希算法(Hash):将客户端的源地址端口进行哈希运算,根据结果分发给对应的机器

基于策略:针对不同的数据流设置导向规则,用户自行编辑流量分配策略,利用这些策略对通过的数据流实施导向控制

基于数据包内容:可根据HTTP的url是否带有.jpg扩展名,分发给指定的服务器处理

健康检查

健康检查用于负载均衡设备检查服务器开放的各种服务的可用状态,可配置的检查方法有如ping,TCP,UDP,HTTP,FTP,DNS等。

创建健康检查可以设定检查的间隔时间和尝试次数。最好结合应用情况来评估设置,既不会对业务产生影响,又不会对负载设备产生很大负担。

会话保持

假设同一个用户的不同请求连续访问,连接是需要重新分发还是固定服务器处理呢?

其实由于服务器之间很难做到实时同步用户访问信息,比如用户登陆请求在一台机器处理,后续应用请求分发给其他机器处理的话,这时实时获取到集群其他机器中该用户的登陆信息成本是跟高的,所以对于同一用户的连续请求在负载均衡设备做会话保持动作,将同源地址请求分发给同一机器响应处理。当然对于一些静态页面数据可以不用保持会话,例如公告新闻类,在每台机器的响应结果都是一样的。

补充知识

一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。 
具体说: 
物理层:网卡,网线,集线器,中继器,调制解调器 
数据链路层:网桥,交换机 
网络层:路由器 
网关工作在第四层传输层及其以上。 
集线器是物理层设备,采用广播的形式来传输信息。 
交换机就是用来进行报文交换的机器。多为链路层设备(二层交换机),能够进行地址学习,采用存储转发的形式来交换报文.。 
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。

交换机和路由器的区别

交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。

使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的隔离广播风暴,减少误包和错包的出现,避免共享冲突。

交换机在同一时刻可进行多个端口对之间的数据传输。每一端口都可视为独立的网段,连接在其上的网络设备独自享有全部的带宽,无须同其他设备竞争使用。当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络的全部带宽,都有着自己的虚拟连接。假使这里使用的是10Mbps的以太网交换机,那么该交换机这时的总流通量就等于2×10Mbps=20Mbps,而使用10Mbps的共享式HUB时,一个HUB的总流通量也不会超出10Mbps。

总之,交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。

从过滤网络流量的角度来看,路由器的作用与交换机和网桥非常相似。但是与工作在网络物理层,从物理上划分网段的交换机不同,路由器使用专门的软件协议从逻辑上对整个网络进行划分。例如,一台支持IP协议的路由器可以把网络划分成多个子网段,只有指向特殊IP地址的网络流量才可以通过路由器。对于每一个接收到的数据包,路由器都会重新计算其校验值,并写入新的物理地址。因此,使用路由器转发和过滤数据的速度往往要比只查看数据包物理地址的交换机慢。但是,对于那些结构复杂的网络,使用路由器可以提高网络的整体效率。路由器的另外一个明显优势就是可以自动过滤网络广播。

集线器与路由器在功能上有什么不同?

首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足。

总的来说,路由器与交换机的主要区别体现在以下几个方面:

(1)工作层次不同 
最初的的交换机是工作在数据链路层,而路由器一开始就设计工作在网络层。由于交换机工作在数据链路层,所以它的工作原理比较简单,而路由器工作在网络层,可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

(2)数据转发所依据的对象不同 
交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用IP地址来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。

(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域 
由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

(4)路由器提供了防火墙的服务 
路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

原文地址:https://www.cnblogs.com/guapiwangxi/p/10579258.html