什么是负载均衡?

当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。

第一种:轮询方式

第二种:随机方式

第三种:加权轮询方式

第四种:一致哈希方式

轮询方式:

轮询法的优点在于:试图做到请求转移的绝对均衡

轮询法的缺点在于:为了做到请求转移的绝对均衡,必须付出相当大的代价,因为为了保证pos变量修改的互斥性,需要引入重量级的悲观锁synchronized,这将会导致该段轮询代码的并发吞吐量发生明显的下降

随机方式:通过系统随机函数,根据后端服务器列表的大小值来随机选择其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果。

加权轮询:不同的服务器可能机器配置和当前系统的负载并不相同,因此它们的抗压能力也不尽相 同,给配置高、负载低的机器配置更高的权重,让其处理更多的请求,而低配置、高负载的机器,则给其分配较低的权重,降低其系统负载。加权轮询法可以很好地 处理这一问题,并将请求顺序按照权重分配到后端。

一致哈希:

步骤:

  1. 首先求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。
  2. 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
  3. 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。

  从上图的状态中添加一台memcached服务器。余数分布式算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但Consistent Hashing中,只有在园(continuum)上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响,如下图所示:

转载于:https://www.cnblogs.com/qkqBeer/articles/10906959.html

负载均衡—几种常见算法相关推荐

  1. Java代码实现负载均衡五种算法

    前言: 负载均衡是为了解决并发情况下,多个请求访问,把请求通过提前约定好的规则转发给各个server.其中有好几个种经典的算法.在用java代码编写这几种算法之前,先来了解一下负载均衡这个概念. 1. ...

  2. 亿级Web系统负载均衡几种实现方式

    aspirant 架构师技术联盟 负载均衡(Load Balance)是集群技术(Cluster)的一种应用技术.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应 ...

  3. 数组的合并和升序排列_JavaScript - 数组排序 6 种常见算法是什么?

    前言 着急用的话,选择前两个就行了,后面的看看就好. 开发中,遇到数组排序的需求很频繁,这篇文章会介绍几个常见排序思路. 一.希尔排序(性能最好) 如果要从大到小排列,则 while(arr[n] & ...

  4. 【笔记】三张图读懂机器学习:基本概念、五大流派与九种常见算法

    文章目录 [笔记]三张图读懂机器学习:基本概念.五大流派与九种常见算法 Chapter 1: A look at Machine learning 1.What is it? 2.How does m ...

  5. 负载均衡策略_常见的负载均衡策略

    轮询(Round Robin): 这种方法就会将 收到的请求循环分配到服务器集群中的每台机器,即有效服务器.如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及敷在相同的应用程序. ...

  6. Nginx 负载均衡4种模式

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80541464 本文出自[赵彦军的博客] 4 种负载均衡算法 upstream 支持 ...

  7. 负载均衡一致性哈希算法实现 | nginx 负载均衡一致性哈希源码分析 | ngx_http_upstream_consistent_hash_module 源码分析

    这是本学期分布式计算/系统课程负载均衡节的课后作业,理解七层反向代理的负载均衡 Nginx 中使用的的一致性哈希算法.开头只是讲一些没用的东西,后面主要是分析 Nginx 的 O(1) 时间复杂度的一 ...

  8. 负载均衡有哪些常见策略?

    分析&回答 轮循 Round Robin 这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器.如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量 以及负载相 ...

  9. 负载均衡之跑马竞赛算法

    跑马竞赛算法是什么?是一种能良好感知服务端负载进行连接的负载均衡算法.当客户端与服务端进行长连接时,客户端需要选择合适的一台服务器节点起进行连接.客户端选择服务端的ip有多种方式,跑马竞赛算法相比于其 ...

最新文章

  1. vue前端表格插件_Grid.js - 跨框架的前端表格插件
  2. python了解一下_想要精通python?19个语法了解一下!
  3. Linux文件权限基本配置
  4. 取两个数较小值c语言_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美...
  5. mysql数据库五大约束_数据库基础知识:数据库中的约束和三大范式
  6. Python核心编程(第九章)--文件和输入输出
  7. 将devexpress中控件添加到vs工具箱中
  8. C++判断文件夹是否存在
  9. 三种方法绘制雷达图,用最快的时间做出最好看的可视化图表
  10. 联邦快递就华为包裹被转运致歉 称有关货件正退回发货方
  11. jsp action java_jsp中Action使用session方法实例分析
  12. windows下的内存泄露检测工具VLD使用
  13. 计算机等级考试无纸化模拟软件(免费版)
  14. 频率分析法破译密码和破译原理
  15. NX二次开发(Python)-UIStyler-选择体和按钮操作
  16. App首次进入引导界面
  17. sv_labs学习笔记——sv_lab1(System Verilog)
  18. 陀螺仪的简单介绍讲解
  19. 数据分析——1.环境搭建(Jupyter Lab安装教程)
  20. Android传感器——传感器监听器及摇一摇案例

热门文章

  1. CRC16循环冗余校验 RTU-MODBUS标准 Linux C
  2. 浅谈对程序员的认识_浅谈IT界程序员大佬普遍对性的追求
  3. cve20190708补丁的kb名称_微软KB4495667补丁(CVE 2019-0708补丁)V1.1 官方版
  4. 【转】java提高篇(二)-----理解java的三大特性之继承
  5. Vertex and Fragment Shader
  6. 【观点】从曾成杰案看民间金融的高风险与银行缺失的机制创新
  7. ASP.NET MVC 重点教程一周年版 第七回 UrlHelper 【转】
  8. 服务器控件HtmlTable下控件赋值问题
  9. 微信支付—微信H5支付「PC端扫码支付」
  10. Android中WebService的应用