负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。

为什么要引入负载均衡

先看一个没有负载均衡机制的web架构:

上图中的架构有什么缺陷了?首先,用户是通过网络直接和web服务器相连,想象一下,如果这个服务器挂了(这种情况随时都可能发生的),那么用户的请求就会得不到响应,将无法访问该网站,这就是著名的单点故障问题,这肯定是不行的,一般而言,商业上的网站其可靠性需要达到至少4个9,也就是99.99&以上。

其次,即使服务器是正常工作的情况,但是如果很多用户在同一时间内访问服务器,超过了服务器的处理能力,那么会出现响应速度慢甚至无法连接的情况,这也是用户无法接受的。

负载均衡的出现可以很好的解决上面两个问题,通过引入一个负载均衡器和至少两个web 服务器,可以有效的解决上面两个问题。注:通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。

如上图架构,现在,即使App 01即使挂了,负载均衡会将用户的请求转发到正常工作的App 02上,这解决了上面的第一个问题;其次,根据业务需要,负载均衡后端的App可以很方便的扩展,这样就能解决第上面的第二个问题。但是,现在单点故障问题转移到了负载均衡器,可以通过引入第二个负载均衡器来缓解,后面还会讲到。

负载均衡如何选择要转发的后端服务器

负载均衡器一般根据两个因素来决定要将请求转发到哪个服务器。

1:确保所选择的后端服务器是正常工作的,能给对用户的请求做出响应;

2:根据预先设置的负载均衡算法从健康服务器池中进行选择。

由于负载均衡器只应当选择能正常做出响应的后端服务器,因此就需要有一种机制能判断它所连的后端服务器是否正常工作。为了监视后台服务器的运行状况,运行状态检查服务会定期尝试使用转发规则定义的协议和端口去连接后端服务器。如果某个服务器没有通过健康检查,就会从健康池中剔除,保证流量不会被转发到该服务器,直到其再次通过健康检查为止。

负载均衡算法

负载均衡算法决定了后端的哪些健康服务器会被选中。下面是几个常用的算法,这里只是简单介绍,不具体研究其算法实现了,后面会专门用一篇文章来总结:

轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环。

最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。

散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

最后,想要解决负载均衡器的单点故障问题,可以将第二个负载均衡器连接到第一个上,从而形成一个集群。如下图所示:

当主负载均衡器发生了故障,就需要将用户请求转到第二个负载均衡器。由于 DNS 更改通常会在较长的时间才能生效,因此需要有一种能灵活解决 IP 地址重新映射的方法,比如浮动 IP(floating IP)。这样域名可以保持和相同的 IP 相关联,而 IP 本身则能在服务器之间移动。下面就是一个使用浮动 IP 的负载均衡架构动态示意图:

系统架构----(1) 负载均衡相关推荐

  1. 高可用性系统架构:负载均衡与容错策略

    作者:禅与计算机程序设计艺术 <高可用性系统架构:负载均衡与容错策略> 引言 1.1. 背景介绍 随着互联网业务的快速发展,分布式系统在应用中越来越普遍.在这些分布式系统中,高可用性是一个 ...

  2. php负载均衡原理_Java开发大型互联网架构深入负载均衡原理之方案分析

    引言 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balan ...

  3. Windows平台分布式架构实践 - 负载均衡

    Windows平台分布式架构实践 - 负载均衡 概述 http://www.cnblogs.com/jesse2013/p/dlws-loadbalancer.html 最近.NET的世界开始闹腾了, ...

  4. nginx+tomcat实现Windows系统下的负载均衡搭建教程

    下面小编就为大家分享一篇nginx+tomcat实现Windows系统下的负载均衡搭建教程,具有很好的参考价值,希望对大家有所帮助 刚入行没多久就听过'负载均衡'的大名,到现在因为工作接触的少,所以没 ...

  5. 物联网架构-Nginx负载均衡

    物联网架构-Nginx负载均衡 0. 前言 关于Nginx负载均衡的简单配置,我以前博客配置过基于HTTP的负载均衡.这次的负载均衡有点不一样,就是基于TCP的负载均衡.基于HTTP负载均衡是默认的N ...

  6. mysql 高并发 集群架构_一种高并发的GPU集群架构及其负载均衡方法技术

    [技术实现步骤摘要] 一种高并发的GPU集群架构及其负载均衡方法 本专利技术属于GPU集群架构及其负载均衡方法 ,特别是涉及一种高并发的GPU集群架构及其负载均衡方法. 技术介绍 GPU因其高性能的并 ...

  7. 架构师之路 — 部署架构 — 超大规模负载均衡架构演进

    目录 文章目录 目录 超大规模负载均衡架构演进技术路线 0.单机架构 1.HTTP 与 DB 服务器分开部署 2.引入本地缓存和分布式缓存 3.引入反向代理实现负载均衡 4.数据库读写分离 5.数据库 ...

  8. 网站架构:负载均衡(下)

     一.软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用.因此软件负载均衡在互联网领域大量使用.常用的软件负载均衡软件有Nginx,Lvs,HaPr ...

  9. 分布式架构系列: 负载均衡技术详解 | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作者:ITFLY8 转自:架构师技术联 ...

  10. 分布式架构的负载均衡算法

    轮询(Round Robin)法 将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载 缺点:当集群中服务器硬件配置不同.性能差别大时,无法区别对待 ...

最新文章

  1. 重磅!2020年放假安排公布啦!五一休5天,国庆中秋连休8天
  2. [转载] 信息系统项目管理挂靠合同(协议)范例2
  3. RS485 串口调试如何操作
  4. 静态库和动态库详解(部分参考别人)
  5. 多样性算法在58部落的实践和思考
  6. 案例 体检套餐管理系统 需求一览 c# 1614099219
  7. 《Kotlin 极简教程 》第5章 集合类
  8. 17.和优化相关的hint
  9. JavaScript 闭包(个人理解)
  10. 南抖音北快手,智障界的两泰斗
  11. 流行学习与拉普拉斯变换的推导
  12. 光谱共焦传感器在PCB板子上的应用
  13. 电脑重装操作系统——使用U盘安装(简略步骤)
  14. Java查询返回值为树形结构
  15. 史上官场吃喝风:与送礼一样成为通用的规则
  16. C语言 自定义类型 之 【枚举】
  17. 探究:公司用智慧软文在网上发布宣传新闻稿水深几何
  18. 二部六层电梯程序西门子1200二部六层电梯程序,无需eet可直接仿真使用
  19. 电商已经烫手 华为终端火上浇油进电商
  20. html 输出php_php怎么输出html源代码

热门文章

  1. Python天气预报查询
  2. socket android用法,Android NDK中socket的用法以及注意事项分析
  3. java getpathinfo_request.getServletPath()和request.getPathInfo()用法
  4. 【重难点】【JUC 03】怎么实现一个线程安全的队列、手写模拟实现一个阻塞队列
  5. Java面试之synchronized和Lock有什么区别?
  6. window mysql 服务安装
  7. centos 7.2安装 lnmp一键安装
  8. 2017/4/12 afternoon
  9. SQLServer优化资料整理(二)
  10. python面试题之Python 的特点和优点是什么