讨论负载均衡&CDN

转载于吴纹羽

  1. 网络请求路径:
    1. 客户端输入URL定位符-->DNS服务器寻找映射-->进入服务器处理数据-->返回数据至客户端
    2. 在这个用例中我们可以很清晰的看到网络请求到返回的过程,虽然非常抽象但足够我们以他为基础来进行优化了。
  2. 负载均衡
    1. 客户端将请求发送至服务器,然而一台服务器是无法承受很高的并发量的我们就会将请求转发到其他服务器,当然真正的负载均衡架构并不是由一台Server转发到另一台Server,而是在客户端与服务器之间加入了一个负责分配请求的硬件(软件)
    2. DNS:
      1. DNS是客户端发送请求中一个非常重要的中转,它的作用是将用户请求的URL映射为具体的IP地址,全世界有13台根服务器,但通常为我们进行域名解析的并不是根服务器,而是直接访问我们的LDNS(Local DNS Server),通常由网络运营商维护。
      2. 最早的负载均衡就是利用搭建本地DNS服务器实现的,实现方式简单易懂,为同一个主机名分配多个映射,可采用循环、随机等方式分配请求。看上去没问题,但是在使用过程中会发现,如果其中一个地址宕机,我们是无法及时发现的,如果有用户被分配到这个主机上,就会出现访问失败的情况,同时我们也无法判断每个Server的负载,可能会出现,某个Server几乎闲置,另外一个Server负载压力极高的情况。我的理解如下-->
    3. 硬件设备
      1. 负载均衡器(Local Balancer),负载均衡器通常作为独立的硬件置于客户端与服务器之间。
      2. 负载均衡设备拥有非常好的负载均衡性能,它拥有众多的负载均衡策略(权重、动态比率、最快模式、最小连接数等),可以保证以相对较优的方式分配请求,不过好的东西总是有代价的那就是价格,一台负载均衡器的价格往往售价高达十几万甚至几十万,许多企业并不愿意为它买单。
    4. 反向代理
      1. Nginx:高性能、轻量级。已经成为人们对于Nginx的第一印象,Nginx可作为HTTP服务器,在处理高并发请求的时候拥有比现在主流的Apache服务器更高的性能,同时Nginx也是一个优秀的反向代理服务器。
      2. 第一次听到“反向代理”,可能有一些陌生,但是如果了解了与之对应的正向代理就很好理解了,正向代理通常是由客户端主动链接,比如我们科学上网的方式就是正向代理,以达到间接访问网站的目的。而反向代理在服务器端,无需主动链接,当我们访问拥有反向代理的网站时,反向代理服务器再将请求转发至服务器。反向代理服务器是实现负载均衡的主要手段之一,通常使用Nginx等服务器搭建,Nginx同样拥有众多的分配策略。
      3. Nginx反向代理
      4. BIGIP(硬件)负载均衡
  3. CDN:
    1. 视频总在缓冲,图片各种加载不出来,几年前是在正常不过的事情了,在当时大家也没觉得是回事,但是这种情况放在现在,我想人们绝对直接就小红叉了吧。那么我们如何避免这种情况发生呢?这就是我要说的,内容分发网络(Content Delivery Network),简称CDN
    2. CDN简单来说就是存储一些静态文件的一台或者多台服务器,通过复制,缓存等方式,将文件保存其中。
    3. 那些是静态文件?
      1. CSS、HTML、图片、媒体等都属于静态文件,也就是说用户发送的请求不会影响静态文件的内容,而JSP、PHP等文件就不属于静态文件,因为他们的内容会因我们的请求而发生改变。
      2. CDN如何实现加速?
        1. 通常情况下,我们所要的数据都是从主服务器中获取,但假如我们的主服务器在南方,而访问用户在北方,那么访问速度就会相对变慢,变慢的原因有很多,例如传输距离,运营商,带宽等等因素,而使用CDN技术的话,我们会将CDN节点分布在各地,当用户发送请求到达服务器时,服务器会根据用户的区域信息,为用户分配最近的CDN服务器。
      3. CDN数据从哪里来?
        1. 复制、缓存,CDN服务器可以在用户请求后缓存文件,也可以注定抓取服务器内容。
        2. 分布在各地的CDNS:
feihu分享到:

          

You may also like...

Scroll Up