大型网站架构系列一:负载均衡详解(1)

news/2024/5/9 6:02:44/文章来源:https://blog.csdn.net/weixin_30597269/article/details/96683993

 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。

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

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

本文是负载均衡详解的第一篇文章,介绍负载均衡的原理,负载均衡分类(DNS负载均衡,HTTP负载均衡,IP负载均衡,链路层负载均衡,混合型P负载均衡)。部分内容摘自读书笔记。

本次分享大纲

  1. 负载均衡原理
  2. DNS负载均衡
  3. HTTP负载均衡
  4. IP负载均衡
  5. 链路层负载均衡
  6. 混合型P负载均衡

一、负载均衡原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:

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

 负载均衡的作用(解决的问题):

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

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

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

4.安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)

二、负载均衡分类

根据实现技术不同,可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,链路层负载均衡等。

2.1DNS负载均衡

最早的负载均衡技术,利用域名解析实现负载均衡,在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群。大型网站总是部分使用DNS解析,作为第一级负载均衡。如下图:

优点

  1. 使用简单:负载均衡工作,交给DNS服务器处理,省掉了负载均衡服务器维护的麻烦
  2. 提高性能:可以支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能;

缺点

  1. 可用性差:DNS解析是多级解析,新增/修改DNS后,解析时间较长;解析过程中,用户访问网站将失败;
  2. 扩展性低:DNS负载均衡的控制权在域名商那里,无法对其做更多的改善和扩展;
  3. 维护性差:也不能反映服务器的当前运行状态;支持的算法少;不能区分服务器的差异(不能根据系统与服务的状态来判断负载)

 实践建议

将DNS作为第一级负载均衡,A记录对应着内部负载均衡的IP地址,通过内部负载均衡将请求分发到真实的Web服务器上。一般用于互联网公司,复杂的业务系统不合适使用。如下图:

1.3  IP负载均衡

在网络层通过修改请求目标地址进行负载均衡。

用户请求数据包,到达负载均衡服务器后,负载均衡服务器在操作系统内核进程获取网络数据包,根据负载均衡算法得到一台真实服务器地址,然后将请求目的地址修改为,获得的真实ip地址,不需要经过用户进程处理。

真实服务器处理完成后,响应数据包回到负载均衡服务器,负载均衡服务器,再将数据包源地址修改为自身的ip地址,发送给用户浏览器。如下图:

IP负载均衡,真实物理服务器返回给负载均衡服务器,存在两种方式:(1)负载均衡服务器在修改目的ip地址的同时修改源地址。将数据包源地址设为自身盘,即源地址转换(snat)。(2)将负载均衡服务器同时作为真实物理服务器集群的网关服务器。

 优点:

(1)在内核进程完成数据分发,比在应用层分发性能更好;

缺点:

(2)所有请求响应都需要经过负载均衡服务器,集群最大吞吐量受限于负载均衡服务器网卡带宽;

2.4链路层负载均衡

在通信协议的数据链路层修改mac地址,进行负载均衡。

数据分发时,不修改ip地址,指修改目标mac地址,配置真实物理服务器集群所有机器虚拟ip和负载均衡服务器ip地址一致,达到不修改数据包的源地址和目标地址,进行数据分发的目的。

实际处理服务器ip和数据请求目的ip一致,不需要经过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。也称为直接路由模式(DR模式)。如下图:

优点:性能好;

缺点:配置复杂;

实践建议:DR模式是目前使用最广泛的一种负载均衡方式。

2.5混合型负载均衡

由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。

此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。是目前大型互联网公司,普遍使用的方式。

方式一,如下图:

以上模式适合有动静分离的场景,反向代理服务器(集群)可以起到缓存和动态请求分发的作用,当时静态资源缓存在代理服务器时,则直接返回到浏览器。如果动态页面则请求后面的应用负载均衡(应用集群)。

方式二,如下图:

以上模式,适合动态请求场景。

因混合模式,可以根据具体场景,灵活搭配各种方式,以上两种方式仅供参考

 

三、负载均衡算法

常用的负载均衡算法有,轮询,随机,最少链接,源地址散列,加权等方式;

3.1 轮询

将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景。

优点:服务器请求数目相同;

缺点:服务器压力不一样,不适合服务器配置不同的情况;

3.2 随机

请求随机分配到各个服务器。
优点:使用简单;

缺点:不适合机器配置不同的场景;

3.3 最少链接

将请求分配到连接数最少的服务器(目前处理请求最少的服务器)。

优点:根据服务器当前的请求处理情况,动态分配;

缺点:算法实现相对复杂,需要监控服务器请求连接数;

3.4 Hash(源地址散列)

根据IP地址进行Hash计算,得到IP地址。

优点:将来自同一IP地址的请求,同一会话期内,转发到相同的服务器;实现会话粘滞。

缺点:目标服务器宕机后,会话会丢失;

3.5 加权

在轮询,随机,最少链接,Hash’等算法的基础上,通过加权的方式,进行负载服务器分配。

优点:根据权重,调节转发服务器的请求数目;

缺点:使用相对复杂;

四、硬件负载均衡

采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,一般土豪级公司可以考虑,业界领先的有两款,F5和A10。

使用硬件负载均衡,主要考虑一下几个方面:

(1)功能考虑:功能全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡;

(2)性能考虑:一般软件负载均衡支持到5万级并发已经很困难了,硬件负载均衡可以支持

(3)稳定性:商用硬件负载均衡,经过了良好的严格的测试,从经过大规模使用,在稳定性方面高;

(4)安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙,防DDOS攻击等安全功能;

(5)维护角度:提供良好的维护管理界面,售后服务和技术支持;

(6)土豪公司:F5 Big Ip 价格:15w~55w不等;A10 价格:55w-100w不等;

缺点

(1)价格昂贵;

(2)扩展能力差;

4.4小结

(1)一般硬件的负载均衡也要做双机高可用,因此成本会比较高。

(2)互联网公司一般使用开源软件,因此大部分应用采用软件负载均衡;部分采用硬件负载均衡。

比如某互联网公司,目前是使用几台F5做全局负载均衡,内部使用Nginx等软件负载均衡。

五、本次分享总结

 以上主要从负载均衡原理,分类,算法,硬件负载均衡进行了介绍。下次分享,负载均衡详解(二),主要介绍:软件负载均衡(LVS,Nginx,Haproxy,Apache特点,架构),负载均衡软件技术选型比较,应用负载均衡的问题和解决方案等方面。

 

原文链接:http://www.cnblogs.com/itfly8/p/5043435.html

原文链接:http://www.cnblogs.com/itfly8/p/5043452.html

转载于:https://www.cnblogs.com/Terry-Wu/p/7372499.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_763754.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何获取qlabel里面的图片_一键删除图片背景,这个网站你值得收藏!

在《这样做读书笔记,书看完之后想忘都忘不掉》一文中,我们介绍过如何制作PPT版的读书笔记,在实际操作的过程中,你可能还会遇到两个问题。第一,在哪里可以下载到比较高质量的书籍图片?第二,怎样删…

锚链接点击添加class_网站锚文本必做这对优化效果影响很大

锚文本,优化效果不论是针对搜索引擎还是用户,锚文本的建立都是非常重要的,不只能够促进蜘蛛多网站的抓取,同时也可以提升网站的用户体验,建立质量度比拟高的锚文本,便能够促进网站排名的提升。一,引导方向&…

iis express 无法访问此网站

选择项目,右击选择【属性】,不要勾选【覆盖应用程序根URL(U)】,或让【覆盖应用程序根URL(U)】下面的输入框和上面的输入框的地址一样! 转载于:https://www.cnblogs.com/come-on-come-on/p/7803761.html

为什么linux访问不到文件夹,laravel部署到linux,将public文件夹指定为网站根目录,但是无法访问其子文件夹...

本机使用的是window环境,一切正常,但是部署到linux系统上(配的是nginx),在访问的时候,控制器和方法都能正常执行,页面也可以输出,但是输出的页面却缺少css文件,一查是500错误,已经将请求重定向到public文件夹下,我的目录结构是:public/web/css/css.css域名是:aaa.com直接访问aa…

发布内部的普通非加密Web网站

发布内部的普通非加密Web网站 (2009-1-9)实验:发布内部的普通非加密Web网站(通过IP地址访问)(HttpISA ServerHttp) 注意:被发布的Web网站所在的计算机必须被配置为SecureNAT客户端。…

【Python】探测网站是否可以访问

首先贴上简陋的python脚本 #coding:utf-8import urllib,linecachefor line in linecache.updatecache(url.txt):try:code urllib.urlopen(line.strip(\n)).getcode() print codeexcept Exception,e:print e if code 200:with open(url_new.txt,a) as fw:fw.write(li…

selenium验证码登录_如何用 Python 登录主流网站,爬取一些需要的数据

最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录。作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据。作者表示模拟登陆基本采用直接登录或者使用 seleniumwebdriver…

PHP网站目录管理脚本,兼容PHP5的PHP目录管理函数库

兼容PHP5的PHP目录管理函数库更新时间:2008年07月10日 23:43:03 作者:php下进行目录的一些操作,经常用到的方法主要能兼容: PHP 5一、chdir -- 改变目录语法:bool chdir ( string directory )返回值:整数…

服务器开机修复,win10开机怎么进修复模式_网站服务器运行维护

win10开机闪屏进不去怎么解决_网站服务器运行维护win10开机闪屏进不去的解决方法:首先重启2次进入安全模式;然后点击疑难解答-高级选项;最后在高级选项中选择恢复到之前的正确系统即可。win10开机怎么进修复模式1、首先,大家先打开…

怎末吧做好的网站放到服务器里,将做好的网站放到云服务器上

将做好的网站放到云服务器上 内容精选换一换通过华为云备案,需要先购买华为云中国大陆节点服务器,用于网站备案使用,后称为“备案服务器”。目前可用于华为云备案的服务器,请参见备案服务器。如果您的华为云帐号A中没有可备案的服…

常见的网站服务器架构有哪些?

以下的架构都是在假设已经优化过linux内核的情况下进行:初级篇:(单机模式)假设配置:(Dual core 2.0GHz,4GB ram,SSD)基础框架: apache(PHP) Mysql / IIS MSSQL(最基础…

php5.2架设网站,FreeBSD 6.2快速架设网站服务器教程(Apache2.2.X+MySQL5.X.X+ PHP5.2.X+ ZendOptimizer-3.2.X)...

世界网络教研室整理1、 安装设置prozilla(port下载加速)当然是首先安装下载加速啦,不然下面的安装会好慢的安装使用如下指令:#cd /usr/ports/ftp/prozilla#make install clean中间会出现:这是例子和HTML格式的手册页,不会用以后想…

JSsearch实现在购物网站输入后推荐联想的效果

在篇文章里,我们主要讲解一下JSsearch如何完成推荐的功能 首先,登陆码云下载JSsearch: https://gitee.com/skyogo/JSsearch 我们下载JSsearch1.0 Community版本 下载好了之后我们再下载一个类似淘宝的购物页面(页面由达内童程制作…

自学电脑编程_有哪些高质量的自学网站

1、羽兔网羽兔网是一个以设计类为主的自学网站,有大量免费课程给大家学习,不管是平面设计,ui设计,电商设计各类热门设计软件课程都有。羽兔网-视频教程线上学​www.yutu.cn2、溜溜自学网一个热门专业为主的自学网,想学…

dw模板文件的扩展名_网站单页面模板制作和dede默认文件夹名称解释

之前我们已经完成了网站首页的制作,操作过就有经验了,其他的工作就简单很多。这里来说一下单页面的模板制作。一 、和首页一样,首先用仿站小工具输入要下载的单页面域名,下载网站内容,上次下载的首页内容可以删掉了二 …

vs新建网站选项只有wcf服务器,WCF教程一:新建并部署

一、概述Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Interne…

当你无法登录http://www.jetbrains.com/系列的网站

如果对您有用,希望能得到您的三连支持哦!!! 首先排除你的网络是否有问题(基本上都不是这个的问题) 接着就是看你的hosts的文件,因为我们都是因为使用破解包的时候修改了hosts文件,所以我来告诉你怎么解决…

给网站套上Cloudflare(以腾讯云为例)

Cloudflare 用来干什么 Cloudflare 主要能做以下几件事: CDNDDNS 说人话的话,上面这些有啥作用呢: 提升安全(抵御攻击、隐藏主站地址)提升性能(提升载入速度) 当然,Cloudflare 还…

主机备案租用价_云服务器与虚拟主机搭建网站有何不同?选择哪家好?哪家最优惠?...

云服务器与虚拟主机都可以搭建网站,很多小伙伴都傻傻的分不清。今天就详细说一下二者具体区别以及搭建网站难以程度,“工欲善其事必先利其器”要想知道二者不同处我们首先得知道云服务器与虚拟主机分别是什么!一、云服务器概念与其搭建网站的…

帝国网站导航config.php,帝国cms怎么改英文导航

帝国cms怎么改英文导航?本文实例讲述了帝国cms实现newsnav标签改英文导航的方法。分享给大家供大家参考。具体实现方法如下:帝国CMS把"首页"改为"Home" 做英文网站的时候会用到,最简单的方法是修改帝国CMS语言包,当然也有其他方法.修…