热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景

为什么需要负载均衡当系统面临大量使用户访问,负载过高的时候,通常会用添加服务器数量来进行横向扩展,用集群和负载均衡提高整个系统的解决能力。从单机网站到分布式网站,很重要的区别是业务
阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景

为什么需要负载均衡

当系统面临大量使用户访问,负载过高的时候,通常会用添加服务器数量来进行横向扩展,用集群和负载均衡提高整个系统的解决能力。

从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应使用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分处理了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为处理单点故障,我们可以采取冗余的方式。将相同的应使用部署到多台机器上。处理访问统一入口问题,我们可以在集群前面添加负载均衡设施,实现流量分发。

负载均衡的原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。

纵向扩展,是从单机的角度通过添加硬件解决能力,比方CPU解决能力,内存容量,磁盘等方面,实现服务器解决能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。

因而需要采使用横向扩展的方式,通过增加机器来满足大型网站服务的解决能力。比方:一台机器不能满足,则添加两台或者者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:

阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景

  • 应使用集群:将同一应使用部署到多台机器上,组成解决集群,接收负载均衡设施分发的请求,进行解决,并返回相应数据。
  • 负载均衡设施:将使用户访问的请求,根据负载均衡算法,分发到集群中的一台解决服务器。(一种把网络请求分散到一个服务器集群中的可使用服务器上去的设施)
负载均衡的作使用

1.处理并发压力,提高应使用解决性能(添加吞吐量,增强网络解决能力);

2.提供故障转移,实现高可使用;

3.通过增加或者减少服务器数量,提供网站伸缩性(扩展性);

4.安全防护;(负载均衡设施上做少量过滤,黑白名单等解决)

负载均衡的分类
阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景

1)二层负载均衡(mac)

根据OSI模型分的二层负载,一般是使用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后台实际的MAC地址响应)

2)三层负载均衡(ip)

一般采使用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后台实际的IP地址响应)

3)四层负载均衡(tcp)

在三次负载均衡的基础上,使用ip+port接收请求,再转发到对应的机器。

4)七层负载均衡(http)

根据虚拟的url或者IP,主机名接收请求,再转向相应的解决服务器。

最常见的四层和七层负载均衡

1)四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),而后加四层的端口号,来决定哪些流量需要做负载均衡。

对应的负载均衡器称为四层交换机(L4 switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡器不了解应使用协议(如HTTP/FTP/MySQL等等)。

实现四层负载均衡的软件有:

  • F5:硬件负载均衡器,功能很好,但是成本很高。
  • lvs:重量级的四层负载软件
  • nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活
  • haproxy:模拟四层转发,较灵活

2)七层的负载均衡就是基于虚拟的URL或者主机IP的负载均衡

对应的负载均衡器称为七层交换机(L7 switch),除了支持四层负载均衡以外,还有分析应使用层的信息,如HTTP协议URI或者COOKIE信息,实现七层负载均衡。此种负载均衡器能了解应使用协议。

实现七层负载均衡的软件有:

  • haproxy:天生负载均衡技能,全面支持七层代理商,会话保持,标记,路径转移;
  • nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
  • apache:功能较差
  • Mysql proxy:功能尚可。

总的来说,一般是lvs做4层负载;nginx做7层负载;haproxy比较灵活,4层和7层负载均衡都能做。

负载均衡应使用场景
阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景

场景一:应使用于高访问量的业务

假如您的应使用访问量很高,您可以通过配置监听规则将流量分发到不同的服务器上。

场景二:横向扩张系统

您可以根据业务发展的需要,通过随时增加和移除服务器,来扩展应使用系统的服务能力,适使用于各种Web服务器和App服务器。

场景三:消除单点故障

当其中一部分服务器发生故障后,负载均衡会自动屏蔽故障的服务器,将请求分发给正常运行的服务器,保证应使用系统仍能正常工作。

场景四:同城容灾 (多可使用区容灾)

为了提供更加稳固可靠的负载均衡服务,当主可使用区出现机房故障或者不可使用时,负载均衡依然有能力在非常短的时间内切换到另外一个备可使用区恢复服务能力;当主可使用区恢复时,负载均衡同样会自动切换到主可使用区提供服务,保证服务仍然正常运行。

阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及用场景


推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 介绍一款好用的内网穿透工具FRP
    本文介绍了一款好用的内网穿透工具FRP,它是一个使用Go语言开发的高性能的反向代理应用。FRP支持多种协议类型,并且可以根据域名进行路由转发。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
000000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有