负载均衡的几种常用方案

总结下负载均衡的常用方案及适用场景;

Round Robin 轮询调度

以轮询的方式依次请求调度不同的服务器;
实现时,一般为服务器带上权重;这样有两个好处:

  1. 针对服务器的性能差异可分配不同的负载;
  2. 当需要将某个结点剔除时,只需要将其权重设置为0即可;

优点:实现简单、高效;易水平扩展;
缺点:请求到目的结点的不确定,造成其无法适用于有写的场景(缓存,数据库写)
应用场景:数据库或应用服务层中只有读的场景;

随机方式

请求随机分布到各个结点;在数据足够大的场景能达到一个均衡分布;
优点:实现简单、易水平扩展;
缺点:同Round Robin,无法用于有写的场景;
应用场景:数据库负载均衡,也是只有读的场景;

哈希方式

根据key来计算需要落在的结点上,可以保证一个同一个键一定落在相同的服务器上;
优点:相同key一定落在同一个结点上,这样就可用于有写有读的缓存场景;
缺点:在某个结点故障后,会导致哈希键重新分布,造成命中率大幅度下降;
解决:一致性哈希 or 使用keepalived保证任何一个结点的高可用性,故障后会有其它结点顶上来;
应用场景:缓存,有读有写;

一致性哈希

在服务器一个结点出现故障时,受影响的只有这个结点上的key,最大程度的保证命中率;
如twemproxy中的ketama方案;
生产实现中还可以规划指定子key哈希,从而保证局部相似特征的键能分布在同一个服务器上;
优点:结点故障后命中率下降有限;
应用场景:缓存;

根据键的范围来负载

根据键的范围来负载,前1亿个键都存放到第一个服务器,1~2亿在第二个结点;
优点:水平扩展容易,存储不够用时,加服务器存放后续新增数据;
缺点:负载不均;数据库的分布不均衡;(数据有冷热区分,一般最近注册的用户更加活跃,这样造成后续的服务器非常繁忙,而前期的结点空闲很多)
适用场景:数据库分片负载均衡;

根据键对服务器结点数取模来负载;

根据键对服务器结点数取模来负载;比如有4台服务器,key取模为0的落在第一个结点,1落在第二个结点上。
优点:数据冷热分布均衡,数据库结点负载均衡分布;
缺点:水平扩展较难;
适用场景:数据库分片负载均衡;

纯动态结点负载均衡

根据CPU、IO、网络的处理能力来决策接下来的请求如何调度;
优点:充分利用服务器的资源,保证个结点上负载处理均衡;
缺点:实现起来复杂,真实使用较少;

不用主动负载均衡;

使用消息队列转为异步模型,将负载均衡的问题消灭
负载均衡是一种推模型,一直向你发数据,那么,将所有的用户请求发到消息队列中,所有的下游结点谁空闲,谁上来取数据处理;转为拉模型之后,消除了对下行结点负载的问题;
优点:通过消息队列的缓冲,保护后端系统,请求剧增时不会冲垮后端服务器;
水平扩展容易,加入新结点后,直接取queue即可;
缺点:不具有实时性;
应用场景:不需要实时返回的场景;
比如,12036下订单后,立刻返回提示信息:您的订单进去排队了...等处理完毕后,再异步通知;

相关开源工具

  • HAProxy:可用来做redis多个结点的负载均衡、也可做mysql等数据库的负载、支持4层负载和7层负载;(一般配合Keepalived做高可用)

  • Twemproxy:用来做redis的结点的分片、redis的存储受限与单个结点的内存容量,数据量大到需要分片,使用twemproxy可做到对业务层透明的分片;
    twemproxy也是使用的单线程reactor模型,一个twemproxy后端接再多的redis结点,其能够支撑的TPS不会超过单个redis结点的处理能力,使用时需要启动多个twemproxy对外提供查询结点;

  • nginx:目前的明星开源产品,只支持7层负载,除了用于反向代理负载均衡,更出名的是作为WEB服务器;

  • LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,采用IP负载均衡技术和基于内容请求分发技术。未用过这个,有兴趣的同学可看看这篇文章:http://www.ha97.com/5646.html;

Posted by: 大CC | 27NOV,2015
博客:blog.me115.com [订阅]
Github:大CC

负载均衡的几种常用方案相关推荐

  1. nginx负载均衡的5种策略

    nginx负载均衡的5种策略 nginx负载均衡 发布于 2018-04-19 要理解负载均衡,必须先搞清楚正向代理和反向代理. 负载均衡的几种常用方式 1.轮询(默认) 每个请求按时间顺序逐一分配到 ...

  2. 【Nginx】实现负载均衡的几种方式

    要理解负载均衡,必须先搞清楚正向代理和反向代理. 正向代理与反向代理[总结] 注: 正向代理,代理的是用户. 反向代理,代理的是服务器 什么是负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压 ...

  3. 深入浅出LVS:企业集群平台负载均衡的三种模式和算法实现

    一.LVS集群常见架构图 Load Balancer层:位于整个集群系统的最前端,由一台或多台负载调度器(Director Server)组成.LVS核心模板IPVS就安装在Director Serv ...

  4. Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n

    负载均衡的概念: Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法. 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务 ...

  5. VMware ESX 主机的网卡负载均衡配置3种方法

    VMware ESX 5.0 网卡负载均衡配置3种方法 (1) 基于端口的负载均衡 (Route based on the originating virtual port ID)(这个是默认支持) ...

  6. 浅析负载均衡的6种算法,Ngnix的5种算法

    转载自 浅析负载均衡的6种算法,Ngnix的5种算法. 常见的几种负载均衡算法 1.轮询法 将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统 ...

  7. IIS Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要: 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应 ...

  8. 微服务(三) 【手摸手带你搭建Spring Cloud】 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡?ribbon负载均衡有几种策略?Ribbon是什么?

    在上一章,我介绍了springcloud的eureka搭建.我们做了服务注册.最后我们还介绍了一些续约,失效剔除等参数配置.已经不需要再通过手动输入ip去访问服务,而是通过中心只需要通过服务名就可以获 ...

  9. nginx实现负载均衡的6种方式

    nginx实现负载均衡的6种方式 一.负载均衡 1.轮询 2.权重 3.ip_hash 4.最少连接least_conn nginx.conf配置文件内容详解 后续更新 一.负载均衡 nginx负载均 ...

最新文章

  1. 网站建设案例欣赏_网站制作设计案例_成都辰星建站
  2. mysql创建一个表用来快速查询表_mysql数据库的创建表格、查询(多表查询)
  3. (二)Harbor WEB的使用
  4. 如何从头开始以正确的面向对象方式创建Java Web Framework
  5. Java虚拟机(十二)——StringTable
  6. webpack4导入全局sass文件
  7. arcgis批量裁剪tif文件
  8. element-ui ele-calendar 清除选中 事件
  9. 山西等保测评机构项目测评收费价格标准参考
  10. 汇总:所有你该知道的AR/VR/3D技术与发展
  11. 计算机软考答题卡填涂格式,全国计算机软考网络工程师填涂答题卡须知
  12. 计算机学科教育案例怎么写,关于举办2019年学院《计算机应用基础》课程教学改革实验案例征文比赛的通知...
  13. Oracle--ORA-01144 报错解决方案
  14. 第九单元 DRF框架及APIView
  15. 表格的计算机在哪个文件夹,如何查看当前打开的Excel表格文件在电脑中的保存位置...
  16. 消防工程用黄铜洒水喷头浇注系统设计优化分享
  17. android editext下拉框,android实现下拉框和输入框结合
  18. 我们必须要相信那些不可能的事情
  19. NIPTeR包分析 NIPT
  20. CMD指令大全《花钱值得收藏》(100个指令)

热门文章

  1. 我的公交一卡通用不了了-_-
  2. 携手广通,聚焦ITIL——BROADA举办首届BTE认证培训
  3. HttpURLConnection与HttpClient浅析---转
  4. 关于 top、left 结合 translate 实现居中的原理探讨
  5. 谈谈读“SEO实战密码”的一些感悟
  6. Android Studio项目引入外部库注意事项(PullToRefresh)
  7. 普通内部类里面为什么不能有static字段
  8. 如何不停机迁移一个mysql INNODB 数据库?
  9. memcached 缓存服务器
  10. [51单片机] HC-SR04超声波测距仪 基础代码