前言

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

简介

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

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

好处

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

适用对象

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

CDN架构

实例:某个用户访问图片资源(例如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)

大话CDN技术

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

  • DNS 智能解析

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

  • 负载均衡技术 例如nginx

DNS智能解析

为什么需要智能解析?

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

那么什么是智能解析?

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

缓存技术

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

负载均衡

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

总结

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

原文地址:CDN服务技术架构图
标签:cdn   cname   速度优化   squid   varnish

智能推荐

CDN服务技术架构图的更多相关文章

  1. Hadoop 2.x 生态系统及技术架构图

    一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...

  2. rocketmq技术架构图

    NameServer.Broker.Producer.Consumer之间如何进行通信,如何工作: NameServer和Broker: NameServer主要做两件事情,第一就是管理Broker, ...

  3. 画了一张基于Spring Cloud的微服务系统架构图

  4. nGrinder技术架构图

  5. HKDAS产品技术架构图

  6. .Net Core with 微服务 - 架构图

    上一次我们简单介绍了什么是微服务(.NET Core with 微服务 - 什么是微服务 ).介绍了微服务的来龙去脉,一些基础性的概念.有大佬在评论区指出说这根本不是微服务.由于本人的能力有限,大概也 ...

  7. 直播技术:从性能参数到业务大数据,浅谈直播CDN服务监控

    线上服务的有效监控和数据收集,一直是后端服务离不开的话题.直播作为一种经典的分布式系统,监控以及数据收集更是必不可少的工作.如何对海量的服务集群有效的监控和保活,又如何抓取集群中的碎片数据中来优化服务 ...

  8. iphone开发 IOS 组织架构图

    转载自 :http://blog.csdn.net/mashi321323/article/details/18267719   登录|注册     mashi321323的专栏       目录视图 ...

  9. 【原】http缓存与cdn相关技术

    摘要:最近要做这个主题的组内分享,所以准备了一个星期,查了比较多的资料.准备的过程虽然很烦很耗时间,不过因为需要查很多的资料,因此整个过程下来,对这方面的知识影响更加深刻.来来来,接下来总结总结 一 ...

随机推荐

  1. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  2. 理解autorelease

    如果你能够真正的理解autorelease,那么你才是理解了Objective c的内存管理.Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是 ...

  3. Java笔记:对象,方法,类

    1.数据类型(类) 对象名; 这里要求数据类型必须为复合数据类型,基本数据类型声明的结构只能称为变量,而不能称为对象. 对象的初始化 对象名= new 构造方法(参数); 2.方法: 访问控制符 [修 ...

  4. 单位圆盘的全纯自同构群Aut B(0,1)

    利用Schwarz引理可以求出单位圆盘$B(0,1)$的全纯自同构群${\rm Aut}B(0,1)$. 任取$a\in B(0,1)$,记$$\varphi_{a}(z)=\frac{a-z}{1- ...

  5. CSS3样式运用,悬浮立体方块

    前言 作为后端开发者,了解前端是必须的,所以自己琢磨着弄了弄一个CSS3的阴影运用. 我记得这应该是以前淘宝用过的,PS:现在跑到淘宝去看,好像没有找到了.现在流行扁平化设计,没有了阴影,没有了立体! ...

  6. Redis学习笔记(3) Redis基础类型及命令之二

    1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...

  7. 使用代理和block写一个alertView

    代理: MyAlertView.h: @property (nonatomic,assign)id delegate; @protocol MyAlertViewDelegate <NSObje ...

  8. Spring泛型依赖注入

    1.定义基础仓库 package com.spring.generic.di; public class BaseRepository<T> { } 2.定义基础服务层   package ...

  9. block fomating context

    http://www.w3help.org/zh-cn/kb/010/ 它与普通的块框类似,不同之处在于: 1可以包含浮动元素 2可以阻止外边距折叠 3可以防止元素被浮动元素覆盖 placeholde ...

  10. 如何预览将要上传的图片-使用H5的FileAPI

    这篇将要说的东西已经不新鲜了. 参考资料: Reading files in JavaScript using the File APIs (鉴于作者在美国, 我姑且认为作者母语是英语, 当然链接中有 ...