网络层

单个系统的高可用和高性能并不等于整体业务的高可用和高性能,互联网业务的高性能和高可用需要从更高的角度去设计,这个高点就是“网络”。这里的网络强调的是站在网络层的角度整体设计架构,而不是某个具体网络的搭建。

负载均衡就是将请求均衡地分配到多个系统上。使用负载均衡的原因也很简单:每个系统的处理能力是有限的,为了应对大容量的访问,必须使用多个系统。

一、DNS

DNS是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。

比如,北方的用户访问北京的机房,南方的用户访问深圳的机房。

DNS负载均衡也可以叫做链路负载均衡,示意图如下:

在这里插入图片描述

DNS负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点。
优点:

  • 简单、成本低:负载均衡工作交给DNS服务器处理,无须自己开发或者维护负载均衡设备。
  • 就近访问,提升访问速度:DNS解析时可以根据请求来源IP,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。

缺点:

  • DNS缓存的时间比较长,即使将某台业务机器从DNS服务器上删除,由于缓存的原因,还是有很多用户会继续访问已经被删除的机器。

  • DNS不够灵活。DNS不能感知后端服务器的状态,只能根据配置策略进行负载均衡,无法做到更加灵活的负载均衡策略。比如说某台机器的配置比其他机器要好很多,理论上来说应该多分配一些请求给它,但DNS无法做到这一点。

二、Nginx 、LVS 、F5(软件均衡负载)

用于同一地点内机器级别的负载均衡
Nginx简单介绍

三、CDN(Content Delivery Network)内容分发网络

CDN是为了解决用户网络访问时的“最后一公里”效应,本质上是一种“以空间换时间”的加速策略,即:将内容缓存在离用户最近的地方,用户访问的是缓存的内容,而不是站点实时的内容。
通过在现有的Internet中增加一层新的网络架构,使用户可以就近取得所需内容,提高用户访问网站的响应速度。
最初CDN都以缓存网站中的静态数据为主,如 CSS、JS、图片和静态页面等数据;如今在访问量骄傲的网站、直播、视频平台均用CDN网络加速技术。
CDN如何实现加速?
  通常情况下,我们所要的数据都是从主服务器中获取,但假如我们的主服务器在南方,而访问用户在北方,那么访问速度就会相对变慢,变慢的原因有很多,例如传输距离,运营商,带宽等等因素,而使用CDN技术的话,我们会将CDN节点分布在各地,当用户发送请求到达服务器时,服务器会根据用户的区域信息,为用户分配最近的CDN服务器。
CDN数据从哪里来?
  复制,缓存,CDN服务器可以在用户请求后缓存文件,也可以主动抓取主服务器内容。
CDN解决的问题
  CDN是一个经策略性部署的整体系统,从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的根本原因。
在这里插入图片描述
1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;

2.网站的DNS域名解析器设置了CNAME,指向了www.web.51cdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;

3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;

4.用户向该IP节点(CDN服务器)发出请求;

5.由于是第一次访问,CDN服务器会向原web站点请求,并缓存内容;

6.请求结果发给用户。

四、多机房

  • 同城多机房

同城的两个机房通过一根专线连接,应对机房级别的最优架构
这种对业务影响小,但投入大

  • 跨城多机房
    机房间通过网络进行数据备份(MySQL主备复制)
    异地距离远带来的网络延迟问题,容易导致数据不一致。
    需要考虑的是数据是否要求强一致性!!不适用于强一致性的需求。
    例如:微博类产品,B关注了A用户,A用户在北京机房发出,B在广州机房不必立刻看到A用户发的微博,等10分钟也行。
  • 跨国多机房
    和跨城多机房类似,只是地理上分布更远,时延更大。由于时延太大和用户跨国访问实在太慢,跨国多机房一般仅用于备份和服务本国用户。

五、多中心

多中心必须以多机房为前提,但难度大

综合例子:

具体来说,组合的基本原则为:
DNS负载均衡用于实现地理级别的负载均衡;
硬件负载均衡用于实现集群级别的负载均衡;
软件负载均衡用于实现机器级别的负载均衡。
在这里插入图片描述

整个系统的负载均衡分为三层:

  • 地理级别负载均衡:www.xxx.com部署在北京、广州、上海三个机房,当用户访问时,DNS会根据用户的地理位置来决定返回哪个机房的IP,图中返回了广州机房的IP地址,这样用户就访问到广州机房了。
  • 集群级别负载均衡:广州机房的负载均衡用的是F5设备,F5收到用户请求后,进行集群级别的负载均衡,将用户请求发给3个本地集群中的一个,我们假设F5将用户请求发给 了“广州集群2”。
  • 机器级别的负载均衡:广州集群2的负载均衡用的是Nginx,Nginx收到用户请求后,将用户请求发送给集群里面的某台服务器,服务器处理用户的业务请求并返回业务响应。
posted @ 2020-02-24 23:50  测试开发分享站  阅读(197)  评论(0编辑  收藏  举报