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

news/2024/5/10 3:39:59/文章来源:https://blog.csdn.net/li741350149/article/details/52963490

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

文章出处 负载均衡详解

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


面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能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混合型负载均衡

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

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

方式一,如下图:

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

方式二,如下图:

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

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

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

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

相关文章

Web网站打包成APP

appcan是国内比较老牌的平台 apicloud是新起之秀 phonegap是国外的大牌。 长期来看,phonegap是开源的,理所当然是技术最好。但是中文资料较少,国内应用的也不多。 appcan近期被apicloud蹂躏得不行不行的,基本全方位被碾压了。渐渐…

【JavaWeb学习,快一起呀,干!】第三章 Servlet 核心接口(3)—— 网站访问计数实现

开门见山的说 逸夫楼今天废了?屋漏偏逢连夜雨,道是无情却有情。凎! ServletContext 对象一个很神奇的东西,一个 Web 应用只会有一个。 我们可以把 ServletContext 对象理解为容器内一个共享空间,可以存储具有应用级…

十大免费CMS建站系统介绍(PHP+MYSQ…

这里为需要建站但又徘徊的朋友介绍10个免费PHPMySql平台下的CMS内容管理系统,可能会对你的选择有指导作用。 1. Joomla! 一套在国外相当知名的内容管理系统,2007年开源cms第一名!Joomla!是使用PHP 语言加上MySQL数据库所开发的软件系统,可以…

【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

一、负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服…

博客网站终于可以上线了 www.cnopenblog.com

最近一直在忙于开发自己的博客网站,现在终于可以和大家见面了!http://www.cnopenblog.com 欢迎大家访问拍砖

非常炫的网页,可以用于制作漂亮的网站!

Juqery特效模板网站:http://www.17sucai.com/tags/1/4/0/208 模板一 下载地址: http://www.17sucai.com/pins/626.html 预览地址: http://www.17sucai.com/pins/demoshow/626 实际网站: http://www.ruifox.com/ 模板二 下载地址&a…

开源jQuery插件推荐 帮你快速构建单页网站!

单页网站将成为网站设计的主要趋势之一。其将设计元素减为最少,将访问者关心的核心内容放在最显眼位置,提高了网站效率。有一些jQuery插件可大大提高单页网站的开发效率,如Single Page Nav、Ascensor.js等。 单一页面网站(单一页面…

Mozilla开源TogetherJS:让网站拥有实时协作功能!

TogetherJS是一款免费开源的JavaScript库,开发者可以利用它给网站添加实时协作功能,并且内置许多功能,如视频、语音聊天、内容实时同步、获取用户实时焦点等。 TogetherJS是由Mozilla打造的一款可以给网站添加实时协作功能的JavaScript库&…

Squid代理服务器介绍-网站加速技术

http://os.51cto.com/art/201009/225813.htm 巧用Squid的ACL和访问列表实现高效访问控制 Squid代理服务器是一个缓存Internet数据的软件,可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议,提高用户下载页面的速度,并设置过滤。使用Squid可以通过访…

Squid代理服务器介绍-网站加速技术

巧用Squid的ACL和访问列表实现高效访问控制 Squid代理服务器是一个缓存Internet数据的软件,可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议,提高用户下载页面的速度,并设置过滤。使用Squid可以通过访问控制特性来灵活的控制用户访问时间、站点等…

李平:大型网站的灵魂——性能

在前一篇随笔 大型网站系统架构的演化中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一…

周末入手一台公测版M8,连夜为它改了网站,帆船书会M8版

周末入手一台公测版M8,用起来感觉非常好,我女朋友有台iPhone,我感觉M8跟iPhone相比各有千秋, 希望大家支持国货,相信魅族! 我是帆船书会的站长,M8入手后我连夜修改帆船书会,改了个M8…

【docsify】为网站写一个说明文档

【docsify】为网站写一个说明文档 !官方部署文档 全局安装 npm i docsify-cli -g初始化项目 在项目文件夹下,初始化 docsify init ./docs会生成三个文件 ./docs 下 index.html作为入口文件README.md作为主页.nojekyll防止 GitHub Pages 忽略以下…

Java开源建站工具

2011-08-12 09:22 | 4162次阅读 | 【已有12 条评论】发表评论 来源:阮一峰的网络日志 | 收藏到我的网摘 美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单 。 他的语言平台是Java,开发项目是一个网站(还…

转:有了这些网站,英文论文再也不难写了(15个英文论文写作辅助网站介绍和使用技巧)

大家在写英文论文的时候,都会遇到这样一些情况:句子写不出来想找一个例句参考,想搜索一下单词的搭配和习惯用法、想核对自己写的句子是否正确等等。 下面给大家介绍的网站主要在写英文论文的时候,可以提供例句参考、单词搭配和用…

IIS - 自动申请、部署Let’s Encrypt的免费SSL证书(让网站实现HTTPS协议)

IIS - 自动申请、部署Let’s Encrypt的免费SSL证书(让网站实现HTTPS协议) 一、HTTPS 协议介绍 1,什么是 HTTPS 协议? HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)&am…

React+flask 搭建网站---React 环境搭建

系统环境: mac 搭建过程: 1、安装node.js : 安装任何包时一定要取官网查看安装方法(因网络中每个人安装的环境和版本有差异,尽量安装官网指导进行安装).官网地址:https://nodejs.org/zh-cn/ 现在后,进行安装.安装完成后,进行后续操作. 2、安装React 创建应用的工具(脚…

小白学习React+flask 搭建网站-Flask 环境搭建

电脑系统: mac 安装过程如下: 1、新建文件夹用来存储需要创建的应用:(参照官网地址:http://flask.pocoo.org/docs/1.0/installation/) mkdir backend01 (backed01 是我创建的文件夹名称,这个名称可以自行定义).安装环境创建包:virtualenv virtualenv venv 2、创建环境:进…

网站开发工具、技术

前端开发 require.js 首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.…

网站首页抓取和收录情况分析(个人见解)

求职类网站的实效性比较重要,提供最新的职位信息,对网站和求职者都有帮助。我们网站的PR值还可以,但是采用的是静态首页,也就是更新的内容不会体现在首页上,那么搜索引擎对首页的蜘蛛爬行和更新都会比较慢。 下面是我们…