开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:【视频】阿里云云计算 ACP 认证(3)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1006/detail/15117
【视频】阿里云云计算 ACP 认证(3)
内容介绍:
一、内容分发网络 CDN
二、云数据库 RDS
三、练习题
四、演示
本节内容主要介绍两个产品:
1、内容分发网络 CDN
2、云数据库 RDS
一、内容分发网络 CDN
1、CDN 的产生背景
CDN顾名思义就是内容分发网络ContentDeliveryNetwork。存在的主要目的是为了解决网络拥塞可能产生的问题,例如“第一公里”(面向用户的传输数据的第一个出口,就是网网站所在的服务器接入我们的互联网所能够提供的带宽。该部分如果带宽不够,用户量越多的情况下,就会形成网络的阻塞。
例如现在我们的服务放在ECS上,ECS的带宽如果不够,那么用户量很多,必然会形成堵塞情况)、“最后一公里”(经由互联网的流量到达用户的接收端:手机浏览器或者app或者pc的浏览器、app等。这种接入到我们最后的终端显示设备的路径称为最后一公里。
简单理解,接入设备的带宽例如在家连wifi,手机连4g或5g的网络,那么它的带宽是否足够决定着我们的网络体验是否良好)、对等互联关口(通常指不同的基础运营商之间的互联互通问题。可能听过BGP协议,那么什么是BGP接入呢?主要是为了解决不同的基础运营商之间的网间结算带来的带宽问题。
举例现在我的服务器放在一个机房中,主要接入的是移动的线路,那么我的用户如果是通过移动接入,那么他本身的访问就会很好;但如果是联通或者电信用户,接入后由于运营商之间的网间之间的结算费用问题,所以跨网访问都会有一个带宽的限制。所以一旦产生跨网访问,此时你的网络体验必然很差。
很多的IDC的机房或者云机房如何解决这种问题呢?机房中同时接入多种网例如像阿里云机房同时接入了电信、移动、联通等网络,那么无论用户来自哪种接入的网络到达机房,都是在一个内网中,因为我们通过BGP编辑网关协议打通了这些网络,所以无论哪种网络接入的设备在机房中访问都相同。很好的解决了对等互联的互通问题)、长途骨干传输(这种是必然现象。终端设备、连入设备离目标服务器距离越远,由于物理距离的存在,数据传输存在必然的速度限制。所以理论上离服务器所在的物理距离越远,数据传输到设备的时间越长。所以会形成一些网络体验问题)
以上最终反映在网络体验上,可以用两个指标进行衡量:
●时延RT——用户请求网页到网页最终呈现的时间差。时延是由多种因素造成的,其中普遍存在的因素是用户和网站服务器的物理距离。(请求网页以及到网页最终被渲染出的时间。网页最终被渲染出的过程很复杂,有可能有数据传输的时间,有可能有后台服务器进行处理的时间或者服务器调取数据库,与数据库进行交互处理数据的时间以及数据传输到客户的设备上通过设备例如通过浏览器将页面渲染出的时间都是属于多种因素的部分。
其中很多因素都可以进行解决。例如服务器的出口带宽不足够,就去增加服务器的出口带宽,一定程度上还不足够考虑性价比问题。用户接入的设备网络不够好,向由3g换成4g或者wifi,那么最后一公里也可以适当得到解决。但是用户终端设备与服务器所在的物理距离无法跨越。但是可以通过一种手段优化感受,例如服务器在北京,用户在海南,距离很远,那么从北京访问服务器与从海南访问北京的服务器相比,一定是北京的服务器时间更低。
因为物理距离无法跨越,想要解决该问题,尝试是否可以将数据放到海南让海南的用户就近访问,这就是CDN尝试解决的问题。)
●8秒定律∶用户满意的网页打开时间是在2秒以下,如果等待网页打开的时间超过8秒,会有超过30%的用户放弃等待。(谷歌统计发现大量用户对于网络打开网页的忍受能力不超过2秒。目前可能超过8s,100%的用户会放弃等待。
所以8s定律实际上衡量了面向互联网提供服务给用户,就需要想办法优化用户获取到数据呈现的时间。优化该数据才能够提升用户体验,用户才不会因为这些而放弃去访问页面)
2、CDN 解决了哪些问题?
CDN,通俗理解就是网站加速,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等导致的网络响应速度慢的问题。CDN主要用处是将数据尽可能放到离用户更近的地方,放到离最后一公里更近的地方。例如服务器本身在北京,海南的用户去访问服务,数据提前缓冲到了海南,海口的用户直接从海口的缓存中获取,三亚的用户直接从三亚的缓存中获取,都去就近访问,用户体验感就会变好。所以CDN本质上就是将大量的数据提前缓存到离用户更近的地方来提升客户体验。
CDN能够进行加速存在类型限制。正常所理解的CDN加速都是静态资源的加速,即非结构化数据,就是在OSS中放入了音频视频、文本等静态资源。静态资源是指所有的用户进行访问,返回的内容都相同。这样我们就可以从OSS运行甚至通过OSS加速到CDN进行运行。
之前讲解的架构图:在云上经典的架构图
首先是一个访问的入口,入口是一个负载均衡。后端通过ECS来提供服务,提供多台ECS。该架构在后续内容中仍会出现。接着应用与数据做分离,再分离动静数据,将结构化的数据传入RDS上。非结构化的数据传入OSS上。
该架构解决了数据与应用分离,计算与存储分离,但是不能解决OSS所在的地区属性。例如OSS放在北京,虽然都是通过网络访问OSS来获取想要的静态数据,但是此时ECS的带宽或者SOB的带宽会受到很大挑战。
OSS本身也有物理位置,所以仍然避免不了用户离所在的OSS所在地域近则用户体验感好,离的地域远仍然会体验感稍弱。但是如果使用的是普通的静态数据,我们对于几百毫秒感觉不是很明显,最终都能获取到数据即可。但是有一些业务对于时延的要求比较高,例如流媒体的业务:视频、直播等业务对于延时的要求很高,例如直播此时将流推到OSS,我们通过OSS去获取数据流,此时可能出现的现象:离北京较近的用户看到的画面延迟并不高,而离北京较远的用户看到的画面延迟会相对高。所以产生的问题不能完全解决。这就是CDN加入的目的。
我们将OSS的数据通过CDN加速出去,相当于原来数据在OSS中只有一份,但是到了CDN后变成了无数份。阿里的CDN是由三个部分的CDN构成:淘宝自建的一批CDN、阿里云自建的CDN、优酷自建的CDN。
后来经过集团的优化和整合后这三部分CDN的能力全部汇总在一起,所以基本上阿里的CDN节点的数量、储备的带宽的数量在整个亚洲地区都首屈一指,所以它的加速效果很好。
我们的数据通过CDN相当于现在国内有几千个节点,海外也有一两千个节点,所以当我们的数据全部缓冲到CDN遍布到全球的编译员节点上,用户访问这些数据不再从OSS直接获取数据,而是从CDN中找到离自己最近的节点直接获取,例如北京的用户从北京的缓存中获取,杭州的用户从杭州的缓存中获取,大家的时延体验差距不大,访问感受被提高。
3、什么是阿里云 CDN
阿里云内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上、由分布在不同区域的边缘节点服务器群组成的分布式网络。替代传统以Web Server为中心的数据传输模式,将源站资源缓存到阿里云全国各地的边缘服务器(此处的源站资源可以在ECS上也可以在OSS上,甚至可以放在别的地方,正常是在阿里的体系中,所以放在ECS和OSS上),供用户就近快速获取,提升用户体验,降低源站压力。
访问资源的路径变为:用户访问这些设备,访问这些资源。例如云南是在该服务器上,在CDN的各个网络上都放入了对应的备份,此时但凡用户发现在离自己最近的缓存中有,直接命中最近的一台,而不需要到源站中去获取。
同样其它都是从最近的边缘节点来获取数据,就近获取,时延又低,体验又好。另外一点是CDN的下行流量比OSS的下行流量的费用低很多,我们可以用更低的成本获得更好的体验。
上面两图对比的是传统http请求处理过程与使用CDN后的http请求处理过程。
传统http请求是用户在自己的终端浏览器中例如输入目标域名为www.taobao.com进行访问,域名需要被转换成目标地址的ip,所以会先向本地的服务器DNS服务器请求该域名的解析。如果本地的DNS服务器上有缓存了该域名解析的结果就会直接返回。第四步如果本地的DNS域名服务器没有关于taobao.com域名解析的结果就会递归的方式到根域名服务器。
(根域名服务器不是直接向全球13台根服务器直接发起,这13台根服务器基本都在境外,请求链路也比较长。一般是一个递归的方式,根服务器会来到权威服务器再来到各个省份再到各个运营商,是一个多级的缓存,所以该请求是一个递归的请求)所以解析的结果就在域名服务器或者权威服务器的这些路径中,最终在某一级能够返回该域名的解析记录,即对应的哪个ip。
最终就是客户机要拿到该域名对应的ip,然后向ip直接发起访问,这是传统的http请求访问的过程。
再来查看使用CDN后的过程:
仍然存在localDNS和DNS解析。上述使用www.taobao.com举例,如果是自己的域名,自己的域名直接对应ip,像这类ipv4或ipv6的解析方式叫A记录解析。如果使用CDN后就不是A记录解析,会先返回一个cname记录。
以阿里云为例,阿里云的CDN上,要给该域名加速,那么会让我们先输入原始的域名,然后会给我们一个xyzass.alikunlun.com的域名,这就是CNAME域名。相当于我们现在访问www.taobao.com不直接访问ip,而是访问别名,在解别名时来到阿里的CDN的集群中。以上步骤进行合并起来,输入一个a.com进行访问,发现LDNS没有缓存,就会向授权DNS进行访问拿到ip后,原先的做法是返回ip。而现在是返回了CNAME的ip,即CDN的系统的ip。
最后再返回离自己最近的ip,可以看到步骤6的ip相同,右图中北京和上海看到的ip不同。
CNAME到达了阿里的CDN服务集群后首先会返回一个我们要加速的kunlun域名的ip(根据你要访问的目标加速域名+来源IP即访问者的ip,这两个信息能够定位到该取的是哪个缓存中的数据和离自己最近的边缘节点),最终会来到离来源IP最近的边缘节点的IP。此时北京用户访问的taobao.com经过转换后最终获取到2.2.2.2,上海用户拿到的是9.9.9.9,杭州用户拿到的是3.3.3.3。大家都访问a.com或者taobao.com但是拿到的相同域名的解析的离自己最近的ip其实不同。都是就近访问就可以起到加速的效果。