CDN服务技术架构图



前言

在博文中 解读大型网站的演变过程  浅谈 举家搬迁静态文件到CDN 博文中都有涉及CDN,这次我们来详细讲解下CDN的架构


简介

CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求

好处

提升访问资源速度,为用户提供更好的用户体验,例如访问某个图片,原来如果从源站获取可能需要30s,但是使用cdn之后可能只需要 1 ~ 5 s,因为cdn是从离用户最近的服务器获取图片资源的


适用对象

静态资源,例如js,css,图片资源,视频,音乐资源,软件资源等等

CDN架构


600


实例:某个用户访问图片资源(例如cdn.pic1.54php.cn/test.jpg)


  1. 浏览器通过dns解析出 cdn.pic1.54php.cn   cname 到 CDN的服务器

  2. CDN服务器 内部通过存储引擎 查看文件是否在 CDN存储服务器上

  3. 如果在直接返回给用户图片

  4. 如果不在,CDN存储服务器启动 从原图站点 下载图片 然后存储起来在返回给用户图片

重点剖析

以下两点也是我们使用CDN厂商服务必须要配置的两项

  • cname操作:cdn.pic1.54php   cname  到  CDN厂商指定的一个域名(特指步骤一)

  • 配置源站地址:cdn服务器找不到图片会从源站网站下载资源 (特指步骤四)


所以每一个CDN资源项都需要配置2个域名,例如本人博客资源图片配置如下

cname操作:cdn.pic1.54php.cn  cname 7xo9jr.v1.com.z0.glb.qiniudns.com.
源站域名配置:pic1.54php.cn  A xxx.xxx.xxx.xxx (博客服务器ip)


600


大话CDN技术

前面主要说的是用户使用角度,我们再来一起学习下 要想提供CDN服务需要的技术积累

  • DNS 智能解析

  • 缓存技术 例如varnish,squid等等

  • 负载均衡技术 例如nginx

DNS智能解析

为什么需要智能解析?

    就是为了保证不同地域的用户都可以从最近的服务器获取资源 达到提速的作用。

那么什么是智能解析?

    例如 用户张三 是 上海的用户 ,李四是北京的用户,那么通过地域策略,张三获取图片资源就是从上海服务器获取,李四就是从北京服务器获取

缓存技术

追求更快,虽然从最近的服务器获取资源已经够快了,但是还可以通过缓存技术可以是之更快,我工作所接触过得就有varnish 和 squid 两种技术。关于squid 介绍可以查看 Squid 操作实践

负载均衡

顾名思义 就是用来分发任务的,如果我们的服务器是一组多台,那么就要通过负载均衡软件来均衡分发任务

总结

希望通过 使用者角度 和 服务商角度的讲解,大家对CDN有了一定的了解

cdn cname 速度优化 squid varnish
编程浪子走四方:CodeRonin