首页 > 其他分享 >分布式系统-负载均衡

分布式系统-负载均衡

时间:2023-12-07 21:15:00浏览次数:24  
标签:负载 请求 算法 动态化 均衡 分布式系统 节点 路由

分布式系统中,业务系统都是集群部署,而且一般会做微服务化。那么,从一个系统rpc请求到另一个系统,应该路由到哪一台节点呢?这,就涉及到负载均衡。

负载均衡的核心,便是负载均衡算法,算法有很多,主要介绍其中六种,并说一说各自算法的优缺点。

1. 加权随机

加权随机,顾名思义,就是路由到哪一台节点,是通过随机算法来得到,权重设置大的节点,概率也大。

比如有节点A B C,权重分别为3 2 1,可以建一个数组  A A A B B C,通过随机数,得到数组下标,便可以得到路由节点。

优点:实现简单,当请求多了以后,各节点请求比例会按照权重来分布。

缺点:权重不好分配,不能动态化,性能差的节点可能积累慢请求。

2. 加权轮询

顾名思义,就是按照权重轮询。

比如有节点A B C,权重分别为3 2 1,可以建一个数组  A A A B B C,直接循环往复的轮询即可,这种算法可能导致短时间内权重大的节点流量过大。

为了解决这个问题,一般借鉴nginx的平滑加权轮询,如下:

 经过这样的一轮后,又回到了起点,从而周而复始。

优点:流量平滑的路由到各节点,且按权重分配。

缺点:权重不好分配,不能动态化,性能差的节点可能积累慢请求。

3. 一致性hash

相同的参数,路由到固定的节点。

优点:当服务提供者是有状态的,适合用这个算法。

缺点:可能某台节点承受很大的流量。

4. 最少活跃优先

所谓活跃,便是服务提供者仍在处理请求,活跃数越少,说明服务提供者的处理能力越强,则优先路由到该节点。

如果活跃数相同,则加权随机分配。

优点:动态化路由请求,保证性能好的节点来处理请求。

缺点:可能导致流量集中在高性能节点。

5. 最短响应优先

在一个滑动窗口内,节点的平均响应时间最短的,优先分配。相等,则加权随机分配。

优点:动态化路由请求,保证性能好的节点来处理请求。

缺点:可能导致流量集中在高性能节点。

6. P2C类算法

随机选择两个节点,通过比较两个节点的性能或者负载,分配给更佳的那一个节点。

比如通过活跃数(活跃数越小,说明处理能力越强),比如通过节点的CPU负载(负载越小,说明节点还能承受更多的流量)。

优点:动态化路由请求,性能差的节点也有更多机会承载流量。

缺点:可能导致多台性能差的节点积累慢请求。

标签:负载,请求,算法,动态化,均衡,分布式系统,节点,路由
From: https://www.cnblogs.com/kingcode/p/17883944.html

相关文章

  • 查看linux负载情况
    1.cpu负载平均负载:指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是单位时间内活跃的进程数。1.1uptime命令20:47:25显示当前系统时间up20:39系统已运行时间loadaverage:1.05,1.07,1.04......
  • 直方图均衡化原理与实现
    一直方图均衡化的概念直方图均衡化(HistogramEqualization)是一种**增强图像对比度**(ImageContrast)的方法,其主要思想是将一副图像的**灰度直方图分布**通过**累积分布函数**变成**近似均匀分布**(直观上在某个灰阶范围内像素值保持一致),从而增强图像的对比度。为了将原图像的......
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
    前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成SentinelSpringMvc集成Sentinel一、Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel......
  • 分布式系统HDFS
    1、完全分布式搭建hadoop102[namenode,datanode],hadoop103[datanode],hadoop104[secondarynamenode,datanode]缺少104,配置104选择完全克隆103机器的名称hadoop104配置机器的IP192.168.18.104修改vim /etc/sysconfig/network-scripts/ifcfg-ens33重启⽹络......
  • nginx负载均衡 报错 “验证视图状态 MAC 失败。如果此应用程序由网络场或群集托管,请确
    在网上搜寻了很久看了很多关于验证视图状态MAC失败的解决方法。大部分人都说是在页里或web.config里加EnableEventValidation="false"EnableViewStateMac="false"ViewStateEncryptionMode="Never"这些属性的设置。但是这并不从根本上解决问题,相反这样做了反而更加不安全。我......
  • haproxy+nginx实现web负载均衡集群:
    haproxy+nginx实现web负载均衡集群: 主机|系统|IP地址|主要软件|—|—|—|—|—Haproxy服务器|CentOS7.9X86_64|192.168.8.101|haproxy-1.5.19.tar.gzNginx服务器1|CentOS7.9X86_64|192.168.8.200|nginx-1.12.0.tar.gzNginx服务器2|CentOS7.9X86_64|192.168.8.20......
  • P8755 [蓝桥杯 2021 省 AB2] 负载均衡
    原题链接我曾经写题时有个疑惑,那就是会不会算力恢复之后大于最大算力?其实不会,把消耗的算力想象成占领,恢复算力想象成撤离,不管怎么恢复,领地都是那个领地。#include<bits/stdc++.h>usingnamespacestd;intpower[200005]={0};structunit{intwhen,who,recover;//......
  • 阿里云-负载均衡
    CLB负载均衡负载均衡是将访问流量根据转发策略分发到后端多台ECS云服务器上的流量分发控制服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。可以参考此文档负载均衡-阿里云帮助中心(aliyun.com) 先远程链接一下进......
  • nginx+keepalived+http高可用和负载均衡:(实验)
    1.先NGINX负载均衡(2台)一模一样,客户端设置域名解析,负载均衡器的名称www.web.com YJ.li容器 数据库 自动化 网站架构 管理Nginx-keepalived+Nginx实现高可用集群 Keepalived+Nginx高可用集群(主从模式)#集群架构图:说明:Keepalived机器同样是nginx......
  • CFS(六)PELT负载统计
    前言PELT全称per-entityloadtracking,用于实现调度实体级别的负载信息统计,能够为调度决策提供更细粒度的信息。上文中的组调度的任务组权重分配就依赖于负载信息,除此之外负载均衡场景也需要精准的对每个核的负载情况进行分析,PELT相比于rq级的负载统计,除了能知道负载的情况还能够......