常见的负载均衡策略
随机、hash、轮询、权重、最小连接数、最快响应速度
适用场景
1、在短连接中 因为连接快速建立销毁 因为数据延时容易造成堆积效应, 随机、hash、轮询、权重 四种方式大致能够保持整体是均衡的,服务端重启也不会影响整体均衡
2、最小连接、最快响应速度是有状态的算法,因为数据延时容易造成堆积效应
3、长连接,连接会一直保持,断连后需要重新选择一个新的服务节点,当服务重启后,最终连接数会出现不均衡的情况
4、随机、轮询、权重的策略在客户端重连切换时可以使用
长连接相对短连接的优势
在整体连接稳定时,服务端需要一个rebalance机制,将集群视角的连接数重新洗牌分配,趋向另外一种稳态
Nacos负载均衡方案
客户端随机选择/基于权重随机+服务端运行时柔性调整
1、建立连接:启动时实时连接一次,失败后进入异步重连
2、连接切换
- 服务端推送切换
异步切换节点,指定IP,只做一次客户端连接尝试,失败后正常切换 - 心跳失败
心跳失败时,启动切换 - 请求失败时
如果连接状态不合法,启动异步重连
服务端重启时连接切换的流程
1、服务集群中的Server1要重启,将Server1的连接数上限设置为0
2、Server1推送给他所服务的客户端,告诉客户端我要下班了
3、客户端接收到Server1发送过来的连接重置指令,然后进行节点切换
4、Server1进行重启,重启好之后,告诉其他的Server,我来上班了,让集群知道Server1可以正常提供服务了
通过控制台监控数据和运维管理
1、Server之间的数据共享,包含负载计算数据、变更管理、权重值、节点监控数据、调节策略数据
2、通过web ui控制台可以查看到这些监控数据包括基础系统信息和连接数
3、通过控制台也可以进行运维操作 比如重启(柔性驱逐)/连接数上限调整/指定节点重置