cdn相关

工作原理假设您的源站域名为**www.a.com**。接入 CDN 开始使用加速服务后,当您的终端用户(北京)发起 HTTP 请求时,实际的处理流程如下: 图片: 终端用户(北京) 向 www.a.com下的某资源发起请求,会先向 LDNS 发起域名解析请求。当 LDNS 解析 www.a.com 时,会发现已经配置了 CNAME www.a.tbcdn.com。解析请求会发送至阿里云DNS调度系统,并为请求分配最佳节点 IP。LDNS 获取 DNS 返回的解析 IP。用户获取解析 IP。用户向获取的 IP 发起对该资源的访问请求。若该 IP 对应的节点已经缓存了该资源,则会将数据直接返回给用户(如图中步骤7、8),此时请求结束。若该节点未缓存该资源,则节点会向业务源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略(可参考产品文档中的 缓存过期配置),将资源缓存至节点(如图:北京节点),并返回给用户,此时请求结束。相关概念CNAME:即别名( Canonical Name ),可以用来把一个域名解析到另一个域名。回源HOST:使用回源HOST,您可以自定义CDN节点回源时所需访问的具体服务器域名。 协议回源:开启该功能后,回源使用协议和客户端访问资源的协议保持一致。 过滤参数:URL请求中,如果携带“?” (半角)和参数,则请求到CDN节点时,CDN节点在收到该请求后是否将该带参数的请求URL请求回源站。 常用操作常用配置** 基本配置开通cdn服务 添加加速域名 配置CNAME CDN生效 ** 列表项目回源配置 源站设置 域名或IP回源HOST以选择三种域名类型:加速域名、源站域名或自定义域名。 回源HOST的默认值为:如果源站是 IP类型,回源HOST默认为加速域名。 如果源站是 OSS源站类型,回源HOST默认为源站域名。 源站和回源HOST的区别: 源站: 源站决定了回源时,请求到的具体IP。 回源HOST:回源HOST决定了回源请求访问到该IP上的具体站点。 缓存配置 设置缓存规则 目录或文件名 过期时间 权重(1-99) 生效顺序依据权重 http响应头设置 自定义静态页面 404 403 503 504等 HTTPS配置访问控制防盗链配置规则 IP黑白名单设置 鉴权?? ...

June 12, 2019 · 1 min · jiezi

系统的讲解-PHP-缓存技术

概述缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O、减少磁盘I/O 等,使项目加载速度变的更快。 缓存可以是CPU缓存、内存缓存、硬盘缓存,不同的缓存查询速度也不一样(CPU缓存 > 内存缓存 > 硬盘缓存)。 接下来,给大家逐一进行介绍。 浏览器缓存浏览器将请求过的页面存储在客户端缓存中,当访问者再次访问这个页面时,浏览器就可以直接从客户端缓存中读取数据,减少了对服务器的访问,加快了网页的加载速度。 强缓存用户发送的请求,直接从客户端缓存中获取,不请求服务器。 根据 Expires 和 Cache-Control 判断是否命中强缓存。 代码如下: header('Expires: '. gmdate('D, d M Y H:i:s', time() + 3600). ' GMT');header("Cache-Control: max-age=3600"); //有效期3600秒Cache-Control 还可以设置以下参数: public:可以被所有的用户缓存(终端用户的浏览器/CDN服务器)private:只能被终端用户的浏览器缓存no-cache:不使用本地缓存no-store:禁止缓存数据协商缓存用户发送的请求,发送给服务器,由服务器判定是否使用客户端缓存。 代码如下: $last_modify = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);if (time() - $last_modify < 3600) { header('Last-Modified: '. gmdate('D, d M Y H:i:s', $last_modify).' GMT'); header('HTTP/1.1 304'); //Not Modified exit;}header('Last-Modified: '. gmdate('D, d M Y H:i:s').' GMT');用户操作行为对缓存的影响操作行为ExpiresLast-Modified地址栏回车有效有效页面跳转有效有效新开窗口有效有效前进/后退有效有效F5刷新无效有效Ctrl+F5刷新无效无效文件缓存数据文件缓存将更新频率低,读取频率高的数据,缓存成文件。 比如,项目中多个地方用到城市数据做三级联动,我们就可以将城市数据缓存成一个文件(city_data.json),JS 可以直接读取这个文件,无需请求后端服务器。 全站静态化CMS(内容管理系统),也许大家都比较熟悉,比如早期的 DEDE、PHPCMS,后台都可以设置静态化HTML,用户在访问网站的时候读取的都是静态HTML,不用请求后端的数据库,也不用Ajax请求数据接口,加快了网站的加载速度。 ...

May 10, 2019 · 2 min · jiezi

什么是CDNCDN加速原理CDN架设以及CDN产品介绍

原文链接: 什么是CDN,CDN加速原理,CDN架设以及CDN产品介绍随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从 而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个 急待解决的问题。如何才能让各地的用户都能够进行高质量的访问,并尽量减少由此而产生的费用和网站管理压力呢?内容发布网络(Content Delivery Network,CDN)诞生了。 一、CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。 为更好地理解CDN,让我们看一下CDN的工作流程。当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。 二、CDN的相关技术 CDN的实现需要依赖多种网络技术的支持,其中负载均衡技术、动态内容分发与复制技术、缓存技术是比较主要的几个,下面让我们简单看一下这几种技术。 负载均衡技术 负载均衡技术不仅仅应用于CDN中,在网络的很多领域都得到了广泛的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽可能均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既可以提高网络流量,又提高了网络的整体性能。在CDN中,负载均衡又分为服务器负载均衡和服务器整体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指能够在性能不同的服务器之间进行任务分配,既能保证性能差的服务器不成为系统的瓶颈,又能保证性能高的服务器的资源得到充分利用。而服务器整体负载均衡允许Web网络托管商、门户站点和企业根据地理位置分配内容和服务。通过使用多站点内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。在CDN的方案中服务器整体负载均衡将发挥重要作用,其性能高低将直接影响整个CDN的性能。 动态内容分发与复制技术 大家都知道,网站访问响应速度取决于许多因素,如网络的带宽是否有瓶颈、传输途中的路由是否有阻塞和延迟、网站服务器的处理能力及访问距离等。多数情况下,网站响应速度和访问者与网站服务器之间的距离有密切的关系。如果访问者和网站之间的距离过远的话,它们之间的通信一样需要经过重重的路由转发和处理,网络延误不可避免。一个有效的方法就是利用内容分发与复制技术,将占网站主体的大部分静态网页、图像和流媒体数据分发复制到各地的加速节点上。所以动态内容分发与复制技术也是CDN所需的一个主要技术。 缓存技术 缓存技术已经不是一种新鲜技术。Web缓存服务通过几种方式来改善用户的响应时间,如代理缓存服务、透明代理缓存服务、使用重定向服务的透明代理缓存服务等。通过Web缓存服务,用户访问网页时可以将广域网的流量降至最低。对于公司内联网用户来说,这意味着将内容在本地缓存,而无须通过专用的广域网来检索网页。对于Internet用户来说,这意味着将内容存储在他们的ISP的缓存器中,而无须通过Internet来检索网页。这样无疑会提高用户的访问速度。CDN的核心作用正是提高网络的访问速度,所以,缓存技术将是CDN所采用的又一个主要技术。 三、谁需要CDN? 既然CDN的核心作用是提高网络的访问速度,那么其用户也就是访问量很大的网站,例如ICP 、ISP、大型企业、电子商务网站和政府网站等。利用CDN技术,这些网站无需投资昂贵的各类服务器,设立分站点。通过采用CDN,CDN将负责信息传递工作,保证信息正常传输,而技术人员只需要维护网站内容,不需要考虑流量问题。这样,网站可保证用户得到更多的新业务,可以快速访问网络上的内容,获得更好的服务质量。举个例子来讲,对于访问量比较大,而被访问内容更新周期比较长的网站,如政府网站,用户往往进行大量的查询工作。这类网站比较适合采用CDN。还有,大家是否注意到,在所谓的宽带社区中,瓶颈是社区的对外出口。这样,如果采用CDN无疑对社区用户使用视频点播、网络教育等宽带应用提供了保证。 四、CDN的不足 任何一个新事物,在给现有模式带来改进的同时,也必然存在一定的局限,CDN也是这样。实时性不太好是CDN的致命缺陷。随着对CDN需求的逐渐升温,这一缺陷将得到改进,使来自于远程服务器的网络内容网页与复本服务器或缓存器中的网页保持同步。解决方法是在网络内容发生变化时将新的网络内容从服务器端直接传送到缓存器,或者当对网络内容的访问增加时将数据源服务器的网络内容尽可能实时地复制到缓存服务器。

May 5, 2019 · 1 min · jiezi

高并发架构的CDN知识介绍

对一次网络请求过程的了解程度,一是展现你的专业知识;二是深刻的理解,让你在大型网站架构中做出更适合、可靠的架构。而DNS是这一切的出发点,本文结合一张常用架构图,来描述一下这个过程。 部署架构大型的web服务,我们的部署架构一般如下图。先上图再解释。 这里来解释下,为什么要这样架构。首先客户端的请求会通过 DNS 获取到对应的服务器IP(实际上是LB的ip地址),这一层会有 DNS的负载均衡,并且如果是静态站资源会进入到CDN,这里DNS与CDN如何完成接棒的过程,后面会详细解释。当请求到达LB层的时候(应用层协议是HTTP协议),这一层又会做一次负载均衡(可能用LVS或者Nginx做)。这里我们有两种不同的处理方式,一条路径会进入到代理集群,一条路径直接进入到应用集群。这是为什么? LB到代理集群通过最顶层的LB负责均衡后到达代理机器,这里不直接进入到应用集群,还要搞一层代理的目的主要是方便我们在代理集群进行各种高级(骚)操作。 比如:请求日志收集,自定义缓存,自定义的负载均衡,自定义的路由规则制定(跨机房,路由分组) LB到应用集群上面到代理层有那么多好处,为什么还有绕过代理层这条路径存在呢?这主要是针对大流量服务。因为代理层因为有很多额外的操作,导致响应会变长,路径增加,到下一个集群多了一次网络传输往返。 所以,一般针对大流量服务,为了防止代理被打满,响应更快,会直接在外网LB上进行负载到应用集群。 通过上面的分割后,最终都会到达应用集群,每一台机器上我们会部署一台 Nginx 来按照域名转到对应服务,当然这里完全也可以不是 Nginx ,比如微服务,这里可能是一个 SideCard 代理。这里主要是为了便于说明我们后面全部都是当成Nginx。服务调用 DB Cache 等,都是通过域名,这是为了负载均衡,请求时,会通过内网DNS服务,完成域名解析,然后拿到内网的 LB 的IP。然后再这里进行内网的负载均衡,会根据域名的端口来检查你是写操作、还是读操作返回IP。常规一点会保证是单点写入,多点读取。来完成数据一致性的保障。 整个大体过程如此,接下来我们详细说一下 DNS 与 CDN 相关的工作原理。 DNS如何实现IP查找为了后面说清楚CDN,这里先介绍DNS的解析过程。当然此类文章网络上已经极多。但是我还是想按照我的理解来说一下DNS是如何工作的。 在整个DNS过程中有四个重要概念,下面解释下。 DNS Resolver - 递归解析器,主要是接收客户端发出的域名解析请求,并发送 DNS query 查询请求。对于客户端来说它不需要任何操劳,等待 DNS Resolver 告诉自己域名转IP的结果就好。 Root Server - 这是转换IP执行的第一步查询,根服务器并不会保存具体的域名IP映射信息。它就像一个索引服务器,会告诉你下一步该去那台 TLD Server 查询。 TLD Server - 这是顶级域名服务器,是执行IP查询的第二步,这里会告诉 DNS Resolver 权威域名服务器的地址。 Authoriative Server - 权威域名服务器就是包含了完整的机器名的域名,例如:www.example.com ,在这台机器上保存了这个具体域名对应的IP地址。 下面根据图中的十个步骤说一下每一步都在干嘛。 一个用户在浏览器输入了:example.com,这时会产生一个 DNS 查询,从而进入到 DNS Resolver中;Resolver 会进入到 root server 进行查询;root server 返回了 TLD server 的地址,查询请求转向顶级域名服务,这里是 .com 服务器。递归解析器向 .com 服务器发送一个请求;TLD server 收到请求后会返回 example.com 权威服务器的地址;递归解析器又发了一个向权威服务器查询的请求,至此权威服务器查询自己的映射表拿到IP;返回查询到的IP给了 DNS Resolver;DNS Resolver返回IP给浏览器,浏览器将会用这个IP来建立连接,发起请求;客户端通过这个IP地址,发起一个 HTTP 请求;服务器解析请求,并返回数据到浏览器。这里需要补充一点是,上面每一步其实都有DNS缓存的设计。比如: ...

April 30, 2019 · 1 min · jiezi