`
2277259257
  • 浏览: 520084 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

负载均衡的几种常用方案

 
阅读更多

负载均衡的几种常用方案

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

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;
分享到:
评论

相关推荐

    Nginx-配置负载均衡的几种方式

    本文将详细介绍Nginx配置负载均衡的几种常用方法及其应用场景。 #### 二、Nginx负载均衡基础配置 首先,我们需要了解Nginx负载均衡的基本配置步骤: 1. **创建Upstream块**:在`http`节点下添加`upstream`节点,该...

    Web负载均衡 2020

    本文将围绕“Web负载均衡”这一主题,深入探讨几种典型的负载均衡技术和实施策略。 #### 一、HTTP重定向 **概述:** HTTP重定向是最基础的负载均衡手段之一,通过修改HTTP响应头中的Location字段来引导客户端...

    balance轻松实施负载均衡方案

    在现代互联网技术中,负载均衡是一种常见的技术手段,用于优化网络资源的分配,提高服务的可靠性和响应速度。`Balance`是一款开源工具,专为简化负载均衡配置过程而设计。通过`Balance`,用户可以轻松实现对服务器...

    负载均衡

    负载均衡是一种计算机网络服务,它的目的是分散网络流量,提高系统的响应速度和整体处理能力,同时也能增强服务的可用性和可靠性。在IT行业中,负载均衡通常应用于Web服务器、数据库服务器和其他处理大量请求的服务...

    Linux环境下负载均衡集群的实现.pdf

    负载均衡集群的实现可以分为以下几个步骤: 1. 环境准备:在 Linux 环境下安装 Tomcat 和 Apache。 2. 服务器配置:配置 Tomcat 和 Apache 服务器的参数,确保它们可以正常工作。 3. 负载均衡算法:选择合适的负载...

    LVS集群与负载均衡

    随着技术的发展,LVS集群作为一种成熟的负载均衡解决方案,已经被广泛应用于多种互联网服务中,如Web服务器、数据库服务器、邮件服务器等。它通过提供灵活的配置和强大的功能,帮助企业在快速增长的网络环境下,实现...

    Linux服务器负载均衡的研究与实现.pdf

    负载均衡技术可以有效地提高系统性能、提高系统可用性和可伸缩性,是一种廉价而有效的解决方案。 本文对负载均衡技术进行了深入的研究和分析,并基于LVS技术,在Linux平台设计实现了一个高性能、高可伸缩性、高可用...

    apache+tomcat集负载均衡

    Apache 和 Tomcat 集群负载均衡是一种常见的高可用性和可扩展性解决方案,它通过将请求分散到多个服务器上,确保即使单个服务器出现问题,整个系统仍能保持正常运行,并且能够处理更多的并发请求。 首先,我们需要...

    软件级负载均衡介绍

    本文主要介绍三种常用的软件级负载均衡工具:LVS、HAProxy 和 Nginx。 #### 二、LVS(Linux Virtual Server) LVS 是 Linux 内核的一部分,由章文嵩博士开发,是一种基于 Linux 的负载均衡解决方案。LVS 主要用于...

    系统在访问量比较大时所采用的负载均衡方案概述

    本文将概述几种常见的负载均衡方案,包括软件和硬件解决方案,以及它们在不同网络层次上的应用。 首先,DNS域名解析负载均衡是一种基础的负载均衡策略。DNS系统通过将域名映射到多个IP地址,每次解析请求时返回不同...

    Linux负载均衡集群技术在网络服务器中的应用.pdf

    Linux负载均衡技术的实现方式主要有以下几种: 1. DNS轮询:通过DNS服务器对同一个域名返回多个不同的IP地址,从而使得不同的用户访问到不同的服务器,达到分散负载的效果。 2. 负载均衡器:通过硬件或软件的方式,...

    云平台技术选型之一:负载均衡

    负载均衡技术选型是一个复杂的过程,涉及多种技术解决方案的比较,包括但不限于以下几种技术: 1. LVS(Linux Virtual Server):LVS是一个高可用的负载均衡解决方案,它运行在Linux内核中,适用于大型系统,能提供...

    nginx+tomcat负载均衡实现

    在`nginx`中配置负载均衡主要有以下几种策略: 1. **轮询(round-robin)**:每个请求按顺序分配给不同的服务器,如果服务器队列循环一圈,则重新开始。这是最基础的策略。 2. **权重轮询(weighted round-robin)...

    sql数据库负载均衡

    在SQL Server环境中,有几种常用的方法可以实现负载均衡: 1. **故障转移集群** (Failover Clustering):通过MSCluster Server管理的故障转移集群架构,可以在多台服务器之间实现故障转移,提高系统的可用性。虽然...

    负载均衡方法实战

    负载均衡的方法多种多样,常见的有以下几种: 1. **轮询(Round Robin)**:最简单的负载均衡算法,按照固定顺序依次将请求分发给各个服务器。这种方法简单易行,但不考虑服务器的实际负载情况。 2. **最少连接数...

    深入理解负载均衡.docx

    双机热备方案的具体实现方式多种多样,其中一种常用的技术是Keepalived。Keepalived是一种开源软件,它可以监控系统的健康状况,并在主用负载均衡器出现问题时,快速地将服务切换到备用负载均衡器上,从而实现了高...

    Nginx+tomcat 实现负载均衡session共享demo

    有几种常见的解决方案: 1. **Cookie-Based**:将`session ID`存储在cookie中,每次请求时由客户端携带。这种方式简单但安全性较低,因为`session ID`可能被窃取。 2. ** Sticky Session**:`Nginx`配置中启用`...

    windows下mysql主备双向复制与mycat负载均衡

    在Windows环境下搭建MySQL主备双向复制以及Mycat负载均衡,是一种常见的数据库架构策略,用于提高数据的可用性、一致性和系统的负载均衡能力。以下详细的知识点说明了这一过程: 1. MySQL主备双向复制的概念和作用...

Global site tag (gtag.js) - Google Analytics