cdn详解

什么是CDN

内容分发网络
内容:指的是静态资源比如:图片,视频,文档,js,css,html等
分发网络:将这些静态资源分发到位于多个不同地理位置的机房的服务器中。
		可以实现静态资源的就近访问

举例:京东在全国各地都有仓库,下单后从最近的仓库发货到配送站由小哥送到家

  • 可以看做是一层特殊的缓存,分布在全国各地

全站网络加速是什么

  • 腾讯云叫ECDN,阿里云叫DCDN
  • 既可以加速静态资源,也可以加速动态资源
    cdn详解_第1张图片

为什么不直接将服务部署在各个地方呢?

  • 成本太高,需要部署多分相同的服务

  • 静态资源通常占用空间较大并且会经常被访问到。
    如果直接使用服务器或者缓存来处理的话,对系统资源消耗非常大
    ,可能会影响到其他的服务

  • 同一个服务在多个不同的地方部署,是为了实现系统的高可用而不是就近访问。(同城灾备,同城多活,异地灾备,异地多活)

CDN的原理是什么

在此之前先搞清下面三个问题
  1. 静态资源是怎么到CDN节点的?
  2. 如何找到最近的CDN节点?
  3. 如何防止资源被盗用?

静态资源是如何被缓存到CDN节点的?

可以通过预热的方式,将源站的资源同步到cdn节点中
如果不预热,节点中没有静态资源,这个时候cdn节点请求源站获取资源,会被不使用cdn节点耗时更长,称为回源

预热:cdn提前将内容缓存到cdn节点上,从而不需要回源,减少了对源站的压力

回源:当cdn节点没有用户请求的资源或者资源过期,cdn节点需要从原始服务器获取最新的资源内容。当请求发生回源的时候会比未使用cdn还慢,因为多了一层cdn的调用

如何找到最近的CDN节点?

gslb (global server load balance)全局负载均衡

  1. 浏览器向dns发送域名请求
  2. dns服务器根据cname别名记录向gslb发送请求
  3. 返回性能最好的,一般也是距离最近的cdn节点(边缘服务器,真正缓存内容的地方)
  4. 浏览器访问制定的cdn节点
    gslb可以看做cdn专用dns服务器和负载均衡系统组合,gslb会根据ip地址,cdn节点状态(负载均衡,性能,延迟,带宽)等综合指标返回一个cdn节点的地址

如何防止资源被盗刷?

开启referer防盗链
时间戳防盗链

http://cdn.wangsu.com/4/123.mp3? wsSecret=79aead3bd7b5db4adeffb93a010298b5&wsTime=1601026312
wsSecret:签名字符串。
wsTime: 过期时间。

你可能感兴趣的:(java)