网站访问架构cdn与负载均衡

   曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系统需 要从无数个角度去考虑他,大到服务器的布局,小到软件中某个文件的实现,甚至于某个循环内的运算如果出现不严谨都可能导致全盘崩溃。

  上面提到web性能优化需要多个角度去考虑,我们无法考虑到所有的优化细节,但可以从我们已知的层面去优化,我们就先从网络层面说起。

①网络请求路径:

------------------------------------------------------------------------------------------------------------------------|

(客户端输入URL定位符)→(DNS服务器寻找映射)→(进入服务器,处理数据)→(返回数据至客户端)   

在这个用例中我们可以很清晰的看出网络请求到返回的过程,虽然非常抽象,但足够我们以他为基础来进行优化了。

------------------------------------------------------------------------------------------------------------------------|

1)负载均衡

  BOSS
一次给了小明好多项任务,小明发现怎么安排时间也做不完,于是乎他盯上了在旁边偷偷看电影的小强,小强突然觉得背后有一股凉气,一回头小明一脸坏笑看着
他,“这几个任务交给你,晚上请你吃饭,要不然...嘿嘿嘿”,小强虽然不情愿,但是在小明的请求(要挟)下,只能服从。第二天,小明顺利的完成了任务,
给小强买了袋辣条。

  在计算机上负载均衡也类似如此,我们的大
BOSS客户端将请求发送至服务器,然而一台服务器是无法承受很高的并发量的,我们就会将请求转发到其他服务器,当然真正的负载均衡架构并不是由一台
server转发的另一台server,而在客户端与服务器端中间加入了一个负责分配请求的负载均衡硬件(软件)。

DNS

  名词:DNS是客户端发送请求中一个非常重要的中转,他的作用是将用户请求的URL映射为具体的IP地址,全世界有13台根服务器,但通常为我们进行域名解析的并不是根服务器,而是直接访问我们的 LDNS(Local DNS Server),通常由网络运营商维护。

 
 最早的负载均衡就是利用搭建本地DNS服务器实现的,实现方式简单易懂,为同一个主机名分配多个映射
,可采用轮循,随机等方式分配请求。看上去没什么问题,但是在使用过程中会发现,如果其中一个地址down机,我们是无法及时发现的,如果有用户被分配到
这个主机就会出现访问失败的状况,同时我们也无法判断每个server的负载,可能会出现,某个server几乎闲置,另外一个server负载压力极高
的情况。

                                    (进入服务器1,处理数据)

  (客户端输入URL定位符)→(DNS服务器寻找映射)→(DNS分配请求)                  (返回数据至客户端)   

                                    (进入服务器2,处理数据)

硬件设备

  名词:负载均衡器(Load Balancer),负载均衡器通常作为独立的硬件置于客户端与服务器之间。

  负载均衡设备拥有非常好的负载均衡性能,他拥有众多的负载均衡策略(权重,动态比率,最快模式,最小连接数等),可以保证以相对较优的方式分配请求,不过好的东西总是有代价的,那就是价格,一台负载均衡器的售价往往高达十几万甚至几十万,许多企业并不愿意为它买单。

反向代理

  名词:Nginx。高性能,轻量级,已经成了人们对Nginx的第一印象,Nginx可作为HTTP服务器,在处理高并发请求的时候拥有比现在主流的Apache服务器更高的性能,同时Nginx也是一个优秀的反向代理服务器。

  第一次听到“反向代理”,可能有些陌生,但如果了解与之对应的正向代理就很好理解了,正向代理通常由客户端主动链接,比如我们的科学上网方式就
是使用正向代理,以达到间接访问网站的目的,而反向代理在服务器端,无需主动链接,当我们访问拥有反向代理的网站时,实际访问的是其反向代理服务器,而非
真正的服务器,当请求到达反向代理服务器时,反向代理服务器再将请求转发至服务器。反向代理是实现负载均衡的主流手段之一,通常使用Nginx等服务器搭
建,Nginx同样拥有众多的分配策略,以保证平均分配压力。

                                          (进入服务器1,处理数据)

  (客户端输入URL定位符)→(DNS服务器寻找映射)→(反向代理服务器)                     (返回数据至客户端)   

                                               (进入服务器2,处理数据)

Nginx反向代理:                    BIGIP(硬件)负载均衡:

     

2)CDN

  视频总在缓冲,图片各种加载不出来,几年前是再正常不过的事了,在当时大家也没觉得是回事,但把这种情况放在现在,我想人们绝对直接就小红叉了吧,那么我们如何避免这样的情况呢?这就是我要说的,内容分发网络(Content Delivery Network),简称:CDN。

  CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存等方式,将文件保存其中。

  1.哪些是静态文件?

    css,html,图片,媒体都属于静态文件,也就是说用户发送的请求不会影响静态文件的内容,而jsp,php等文件就不属于静态文件,因为他们的内容会因我们的请求而发生改变。

  2.CDN如何实现加速?

 
   
通常情况下,我们所要的数据都是从主服务器中获取,但假如我们的主服务器在南方,而访问用户在北方,那么访问速度就会相对变慢,变慢的原因有很多,例如传
输距离,运营商,带宽等等因素,而使用CDN技术的话,我们会将CDN节点分布在各地,当用户发送请求到达服务器时,服务器会根据用户的区域信息,为用户
分配最近的CDN服务器。

  3.CDN数据从哪里来?

  复制,缓存,CDN服务器可以在用户请求后缓存文件,也可以主动抓取主服务器内容。

  分布在各地的CDNS:

  

  

时间: 2024-10-03 18:38:30

网站访问架构cdn与负载均衡的相关文章

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

三.负载均衡算法 常用的负载均衡算法有,轮询,随机,最少链接,源地址散列,加权等方式: 3.1 轮询 将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景. 优点:服务器请求数目相同: 缺点:服务器压力不一样,不适合服务器配置不同的情况: 3.2 随机 请求随机分配到各个服务器.优点:使用简单: 缺点:不适合机器配置不同的场景: 3.3 最少链接 将请求分配到连接数最少的服务器(目前处理请求最少的服务器). 优点:根据服务器当前的请求处理情况,动态分配: 缺点:算法实现相对复杂,需要监

Nginx做为CDN缓存负载均衡代理的配置实现

系统架构: nginx+tomcat+mysql 本文只做Nginx做为CDN缓存负载均衡代理的配置实现的介绍 相关软件: nginx-1.8.1.tar.gz ngx_cache_purge-2.3.tar.gz (用于手动清理缓存) 一.nginx安装 [[email protected] ~]tar -xf nginx-1.8.1.tar.gz [[email protected] ~]tar -xf ngx_cache_purge-2.3.tar.gz -C /usr/local/ngx

架构设计:负载均衡层设计方案(8)——负载均衡层总结上篇

1.概述 很明显通过前面的八篇文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路.虽然后面我们将转向“业务层”和“业务通信”层的介绍,但是对负载均衡层的介绍也不会停止.在后续的时间我们将穿插进行负载均衡层的新文章的发布,包括Nginx技术的再介绍.HaProxy.LVS新的使用场景等等. 这篇文章我们对前面的知识点进行总结,并有意进行一些扩展,以便于各位读者找到新的学习思路. 2.负载均衡层的核心思想 2-1.一致性哈希与Key的选取

架构设计:负载均衡层设计方案(3)——Nginx进阶

上篇文章<架构设计:负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/article/details/46620711),我们介绍了Nginx的核心设计思想.基本安装和使用.本来准备继续介绍Nginx的几个使用特性,但是奈何博文篇幅太长,只有将一篇文章拆成两篇.本文我们将承接上文,继续讲解Nginx的实用特性,包括gzip功能.rewirte功能和一个第三方的节点监测模块.本文我们还将提到Taobao团队对Nginx的深度改造Tengi

架构设计:负载均衡层设计方案(1)——负载场景和解决方式

在上一篇<标准Web系统的架构分层>文章中,我们概述了WEB系统架构中的分层架设体系,介绍了包括负载均衡层.业务层.业务通信层.数据存储层的作用和存在意义.从本片文章开始,我们将首先详细讲解负载均衡层的架构原理和选型场景. 1.不同的负载场景 我们知道负载均衡层的作用是“将来源于外部的处理压力通过某种规律/手段分摊到内部各个处理节点上”,那么不同的业务场景需要的负载均衡方式又是不一样的,架构师还要考虑架构方案的成本.可扩展性.运维难易度等问题.下面我们先介绍几种典型的不同业务场景,大家也可以先

架构设计:负载均衡层设计方案之负载均衡技术总结篇

前言 1.概述 通过前面文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路.虽然后面我们将转向"业务层"和"业务通信"层的介绍,但是对负载均衡层的介绍也不会停止.在后续的时间我们将穿插进行负载均衡层的新文章的发布,包括Nginx技术的再介绍.HaProxy.LVS新的使用场景等等. 这篇文章我们对前面的知识点进行总结,并有意进行一些扩展,以便于各位读者找到新的学习思路. 2.负载均衡层的核心思想 2-1.一

架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LVS + Keepalived搭建高可用的负载层系统.如果你还不了解Nginx和LVS的相关知识,请参见我之前的两篇文章<架构设计:负载均衡层设计方案(2)--Nginx安装>(http://blog.csdn.net/yinwenjie/article/details/46620711).<

架构设计:负载均衡层设计方案(5)——LVS单节点安装

1.概述 上篇文章<架构设计:负载均衡层设计方案(4)——LVS原理>(http://blog.csdn.net/yinwenjie/article/details/46845997),我们介绍了LVS的工作模式,和每一种模式的具体工作过程.这篇文章中,我们将介绍单一LVS节点的安装方式.比起上一篇文章,这一片要提到的安装和配置就是非常简单的了,只要您了解原理,实践就是从容的事情. 您可以在您的电脑上使用VMware虚拟机,按照下面介绍的过程一步一步实践.我们将采用两台虚拟机,一台作为LVS节

架构设计:负载均衡层设计方案(4)——LVS原理

之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理.安装和特性组件.请参看<负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/article/details/46620711)和<架构设计:负载均衡层设计方案(3)——Nginx进阶>(http://blog.csdn.net/yinwenjie/article/details/46742661)两篇文章.虽然不包括Nginx的所有知识(也不可能全部包括),但是足够读者将