前言

在博文中 解读大型网站的演变过程  浅谈 举家搬迁静态文件到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. js自动更新时间+星期

    <div class="top_bar" id="cao" height="28px"><script> setIn ...

  2. Oracel基础知识

    1.查看oracle环境变量命令  echo  %path% 2.监听程序:Oracle服务器端的一种网络服务.监听程序创建在数据库的服务器端,主要作用监视客户的连接请求.因此在客户端创建监听毫无意义 ...

  3. web应用 http 响应 url uri

    动态web  应用结构 WEB-INF --classes --lib web.xml     响应:   url   uri

  4. spring Quartz多个定时任务的配置

    Quartz多个定时任务的配置 1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上 ztc_cp-spring-quartz.xml 注:定 ...

  5. sql server 中不同服务器上的数据库中表怎么互导数据

    --创建一个链接 EXEC sp_addlinkedserver 'OtherServerDb','','SQLOLEDB','192.168.12.101' --第一个参数是给远程的服务器起的别名 ...

  6. 【XLL 框架库函数】 TempMissing/TempMissing12

    创建一个xltypeMissing 类型的 XLOPER/XLOPER12 原型 LPXLOPER TempMissing(void); LPXLOPER12 TempMissing12(void); ...

  7. iOS开发UI篇—CAlayer(创建图层)

    iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...

  8. mybatis 书写

    查询语句是使用 MyBatis 时最常用的元素之一 select元素配置细节如下 属性 描述 取值 默认 id 在这个模式下唯一的标识符,可被其它语句引用     parameterType 传给此语 ...

  9. SpringMVC学习(三)整合SpringMVC和MyBatis

    工程结构 导入jar包 配置文件 applicationContext-dao.xml---配置数据源.SqlSessionFactory.mapper扫描器 applicationContext-s ...

  10. xml 基础学习备忘

    <?xml version="1.0" encoding="UTF-8"? standalone="yes"> 这里的encod ...