cdn,我理解其本质就是为了解决距离远产生的速度问题,使用就近的服务。

从中国请求美国一台服务器上的图片。一般比较慢,因为距离这么远,网络传输是存在损耗的,距离越远,传输的时间就越长。一般会看到浏览器左下角显示:“已响应,正在传输数据..”。这不是服务器本身问题了。实际上服务器早就响应请求,把数据发给客户端,但是网络问题,就一直在传输,没传完了。

在中国,是南北距离远的问题。南北还会涉及到跨网,南方用户使用电信居多,北方用户网通居多。两个线路需要跨越,会有时间延迟。北京到广州的距离,如果直接请求

cdn加速就是适应这个需求产生的:现在不请求美国的服务器。直接在中国安放节点(节点是比较笼统的词语,可以理解成一台服务器,也可以理解成一个机房,就是一个点嘛),请求距离近的节点。这样子就不需要那么远的距离了。

记得以前在长沙的网站,团购以城市分站的形式。北京和长沙用的是同一套程序。服务器在长沙。北京用户访问北京站的时候,实际上需要远距离访问长沙的服务器。速度怎么都快不起来。跟服务器性能完全没关系。当时不懂这些。不清楚怎么折腾。看那本《前端优化技巧》,想办法去做js代码压缩,浏览器缓存之类的。实际上瞎折腾。不是说这些前端优化不重要,哲学上有主次矛盾之分,瓶颈在哪里就去突破哪里。没解决主要矛盾,问题并不会迎刃而解。当时也不是数据库瓶颈。如果去优化数据库。也不会明显改善。就那点数据量。根本就达不到瓶颈。哪里谈得上主要矛盾。随着后来去其他公司工作,接触一些东西,类似不找瓶颈的优化例子发生在身边好几次了,先没找到瓶颈就瞎去优化。我的同事可能是抱着多多益善的心态去做的,但主要矛盾(技术上说是瓶颈)没找到,也没改善。

当时如果没想到是距离问题。也就不会想到cdn,当时其实我根本不知道cdn服务。我只知道,google这些网站肯定在中国部署的服务器,要不然,中国用户还去访问美国的服务器,那再好的服务器都会速度慢的。

由于自己搭建cdn环境和机房的资金比较大(需要大量的服务器),也需要人力维护。反正一般的公司弄不起,其实根本不划算。淘宝以前用商用的cdn服务,后来商用的扛不住了,就搭建了自己的cdn网。我不知道新浪有没有自己搭建,但其实我觉得跟淘宝的特点有关,店铺很多,无论是商品还是交易记录总计起来商品很多的图片,图片都是静态的部分,cdn本来就是用来做静态的(图片,css,js等)请求分发用的。

我之前在网上看到一句话,cdn网络不是一般的公司玩得起的。

一般的公司自己搭建cdn网络成本高,所以就有商业的cdn提供付费租用服务,这是一项很成熟的业务,很多这样的公司,大部分全国性的互联网公司都会使用到cdn。

总结:cdn服务。对于静态内容是非常适合的。所以像商品图片,随着访问量大了后,租用cdn服务,只需要把图片上传到他们的服务器上去。

例子:北京访问长沙服务器,距离太远。我完全可以把商品图片,放到北京的云服务(我觉得现在提供给网站使用的云存储其实就是cdn,给网站提供分流和就近访问)上去。这样子北京用户访问的时候,实际上图片就是就近获取。不需要很长距离的传输。

自己用一个域名img.xxx.com来载入图片。这个域名解析到北京的云服务上去。

做法:数据库中保存的是” images/2012/09/25/1343287394783.jpg”,

这些图片实际上不存储在web服务器上。上传到北京的cdn服务器上去。

我从数据库取出来,直接”img.xxx.com/”+” images/2012/09/25/1343287394783.jpg”

比如如果还有多个,就命名img1.xx.com、img2.xx.com

反正可以随便。所以如果把域名直接保存进去。就显得很麻烦了。迁移麻烦。

像淘宝,凡客,亚马逊这些电子商务网站,我们看到请求的时候,下面往往会有

img1.xxx.cdn.com

img2.xxx.cdn.com

其实他们保存在数据库中的是相对路径。有些是不需要在数据库保存的,缩略图可以实时访问的时候用程序生成(节省很多存储空间)

实际上,把域名保存在数据库中,非常不利于系统迁移。一旦换个域名的话,原来保存在数据库中的是“www.abc.om/images/xxxxxx“,因为路径都在数据库中写死了。下回换个域名就用不了了。那个时候自己去写sql语句批量更新字段吧。

几个术语:

icp,Internet Content Provider,也就是网络内容提供者。联想到我们运营一个网站需要icp备案了吗?你自己运营网站,你就是icp服务商

IDC(Internet Data Center),互联网数据中心。IDC的概念,目前还没有一个统一的标准。通俗点,就是提供机房托管(服务器租用和托管),域名注册之类的。

关于淘宝的图片存储

了解到:淘宝以前使用了商用的存储。但是没法满足需求。据说,到2010年,淘宝网后端保存着286亿张图片。商用的系统系统没法满足需求的时候。他们就自己开发了一个tfs。大规模的小文件在磁盘上读取,需要磁盘磁头频繁的寻道和换道。大并发情况下和大量的操作确实很麻烦。其实借鉴了当时google公布的gfs设计论文。google有相册服务。为每个用户提供上传图片存储。

估计,google是率先实现这种小文件网络存储系统的。

有个观点比较好:对于老板们而言,往往觉得,用钱能解决的都不算问题。但问题在于,你遇到的问题,别人都没遇到过。那这个时候你就没有经验可以参考或者直接拿来使用。只有自己参考一些思路去创造技术了。

三、关于图片进行云存储(cdn加速)

曾经看过这个,这个是比较适合创业公司的。价格相对便宜

https://www.upyun.com/

介绍提到,我们在全国各地部署了55个CDN节点,500多台服务器,电信,联通,移动和教育网的4线带宽。

其实,现在的云存储本质就是一个cdn服务商。你把静态的图片上传到他提供的服务器上去(ftp方式上传或者api形式编写程序上传)。他为你做就近节点访问。

计费方式:按照流量付费,99元购买100g。怎么算流量。每次访问文件的大小累加,比如一个1m的文件,访问一次流量就加1m。

我个人理解,对于图片的量不大的情况下,使用这种云服务,好处不是节省存储空间。你自己的服务器100g的空间可能创业型公司都没用完,不是什么存储空间不够用,然后去用云存储。以前我对cdn比较模糊,有这么点理解,或者以为是分散网站web服务器流压力,服务器分流。这些好处是有的。但是,只要理解了cdn产生的背景和解决的关键问题后,就会明白云存储关键好处在于:给用户就近节点访问,加速。

我觉得,如果不是出于这个考虑,或者达不到这样的目的。用其他方案也完全可以替代。何必使用云存储呢?就是你无非有实力做到全国多个节点去部署服务,才需要租用cdn来帮你,毕竟他们是规模产生的效益,专注于解决这个领域。

关于cdn原理(就是内容分发网络)的更多相关文章

  1. CDN(内容分发网络)技术原理

    1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...

  2. 深度剖析:CDN内容分发网络技术原理--转载

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  3. [转]CDN(内容分发网络)技术原理

    1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...

  4. CDN 内容分发网络技术

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  5. CDN内容分发网络

    CDN的全称是Content Delivery Network,即内容分发网络,其设计思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. CDN系统是在网络 ...

  6. DevOps之内容分发网络CDN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <内容分发网络CDN(Content Delivery Network)> 关于虚 ...

  7. 史上最全的CDN内容分发网络实战技巧(网络优化)

    今天来给大家分享下关于 CDN 的东西,以及我自己的一些发现.一些个人的拙见.总共分为 3 个部分:原理.详解.各种坑. 首先说一下 CDN 的基本原理部分,主要分 4 块来描述:CDN 的由来.调度 ...

  8. CDN加速-内容分发网络

    内容分发网络 (互联网技术) 编辑 CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输 ...

  9. CDN,内容分发网络。

    CDN,内容分发网络. 就近获取内容,提高用户访问网站响应速度. 广州的用户,访问广州的节点.北京的用户,访问北京的节点. 图片CDN,提高图片访问,方便数据迁移. DNS,域名系统.处理域名和IP地 ...

随机推荐

  1. VC dimension(Vapnik-Chervonenkis dimension)

    二维平面的线性分类器的VC维讨论:http://www.tuicool.com/articles/JjaMfe VC维介绍:http://blog.csdn.net/lucylove3943/arti ...

  2. PHP 初探

    由于不可描述的原因,需要运行一个PHP项目,折腾了半天却无甚效果---概念缺失. 一怒之下,决定还是先了解下PHP本身再说.先得感谢下W3School,介绍简洁明了. PHP是脚本语言! PHP不需要 ...

  3. PHP高手修炼50法——勤快篇

    .把PHP当成一门新的语言学习: .看<PHP与mysql5?web?开发技术详解>和<PHP高级程序设计:模式.框架与测试>: .不要被VC.BCB.BC.MC.TC等词汇所 ...

  4. Erlang的Web库和框架

    ChicagoBoss,Nitrogen ,Zotontic,BeepBeep,ErlyWeb,Erlang Boss. 转自:http://bbs.chinaunix.net/thread-3764 ...

  5. asp.net mvc webconfig配置文件操作

    读取web.config数据,可以不用编译.如发布后,非常有用web.config文件<configuration> <appSettings> <add key=&qu ...

  6. jquery获取html元素的绝对位置和相对位置的方法

    绝对位置坐标: 代码如下: $("#elem").offset().top$("#elem").offset().left 相对父元素的位置坐标: 代码如下: ...

  7. MathTyp使用过程的几个问题

    最近毕业季,人们又开始了一波论文恐惧症了.每天都在不断地改来改去,格式还是不符合要求,头疼得要死.不仅如此,还发现公式是越改越乱,牵一发而全身,其它地方动一点,整个版面全都乱了,人都要抓狂了.知道你的 ...

  8. 【matlab】输出显示函数 sprintf()&disp()

    disp()功能类似于c语言中的print:java语言中的System.out.println(): Matlab的disp()函数  : 1.输出字符串: >>disp('my tes ...

  9. 【java】java内存模型 (1)--基础

    并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信 ...

  10. POJ 1273 Drainage Ditches (网络最大流)

    http://poj.org/problem? id=1273 Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Sub ...