分布式架构之CDN加速文件访问

1.简介

CDN加速大家应该都不陌生,至少是有听说过的,其实我们应该每天都会无形中使用到它,大多数比较优秀的互联网公司都会用到它来提高网站的响应速度,比如阿里,腾讯等.CDN是Content Delivery Network的简称,即“内容分发网络”的意思,一般是指网站加速或者用户下载资源加速.

简单来说,CDN相当于一个中间代理,原来我们需要请求某个网址比如www.baidu.com,请求会直接发送至百度的服务器上,假如请求者在新疆,但百度的服务器在北京,这样的话请求和响应都会受距离影响慢一些,但有了CDN后,请求是先发至距离请求IP定位最近的CDN服务器上,该服务器上缓存了www.baidu.com页面上的一些静态文件,比如js,css.html,图片等,这样对请求的发起者来说,获取这些静态资源就比较近了,因此可以起到一定的加速效果.至于动态的资源,因为是可变的,所以无法通过缓存的方式存储在CDN服务器上,仍需要通过CDN去请求对应服务器获取资源,所以CDN加速仅限于静态资源.下图是某CDN第三方在国内部署的CDN节点.

在分布式系统中,CDN可以一定程度的减轻服务器的IO压力,提高响应速度,而且在使用CDN后用户的请求是发送到CDN服务器上的,可以避免用户直接访问源服务器,从而可以一定程度上提高系统安全性,降低被黑客攻击的可能性,类似于保护代理...

但CDN的架设成本比较高,就像快递公司的网点一样,如果需要提高服务效率和质量,需要在全国各个地区都设有网点,而且在人口稠密地区需要架设更多的网点来缓解单个网点的压力,这笔成本可以说是非常高了,所以一般CDN加速都是由专门的第三方大公司去做的,比如阿里,七牛云等,对小公司而言,自己架设成本太高,如果需要CDN加速,直接付费使用第三方提供的即可,价格合理,治理方便,一般第三方会提供详细的使用文档和优质的服务.
 

 2.CDN 的工作原理

CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据。步骤如下:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
  2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
  3. ROOT DNS将域名授权dns记录回应给 LocalDns
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
  5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns
  6. LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址
  7. 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns
  8. LocalDns 将得到的域名ip地址,回应给 用户端
  9. 用户得到域名ip地址后,访问站点服务器
  10. CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

 通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明的加速服务. 由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问是最简单有效的方式.

CDN网络的组成要素

对于普通的Internet用户,每个CDN节点就相当于一个放置在它周围的网站服务器. 通过对dns的接管,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求. 由于它离用户更近,因而响应时间必然更快.

从上面图中 虚线圈起来的那块,就是CDN层,这层是位于 用户端 和 站点服务器 之间.

  • 智能调度DNS(比如f5的3DNS) 
    智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
设计一个分布式文件系统需要考虑以下几个方面: 1. 数据分布:将文件数据分散到多个节点上,避免单点故障,提高系统的可靠性和可用性。 2. 元数据管理:元数据包括文件、目录、权限等信息,需要进行统一管理和维护。 3. 数据一致性:各个节点之间数据的一致性需要得到保障,可以采用副本机制或者一致性协议来解决。 4. 数据安全:分布式文件系统需要具备安全性能,可以采用加密、认证、授权等措施来保证数据的安全。 5. 性能优化:分布式文件系统需要考虑性能优化,包括读写性能,数据传输速度等。 以下是一个简单的分布式文件系统的设计: 1. 数据分布:采用分布式文件系统的架构,将文件数据分散到多个节点上,通过负载均衡技术实现数据的均衡分配。节点之间采用主从复制的方式来实现数据的冗余备份,保证数据的可靠性和可恢复性。 2. 元数据管理:采用元数据服务器来进行统一管理和维护。元数据服务器会存储所有文件的元数据信息,包括文件名、大小、权限、修改时间等。同时,元数据服务器也会维护所有节点的状态信息,包括节点的在线状态、负载情况等。 3. 数据一致性:采用Raft协议来实现数据的一致性。当文件数据发生变化时,会通知所有节点进行数据同步。节点之间会通过Raft协议来达成一致,保证数据的一致性。 4. 数据安全:采用加密、认证、授权等措施来保证数据的安全。文件数据采用AES加密算法进行加密,只有具备访问权限的用户才能解密。同时,采用数字签名和证书认证等技术来保证数据的完整性和真实性。 5. 性能优化:采用数据缓存、数据压缩、数据分片等技术来实现性能优化。同时,采用分布式计算框架如Hadoop、Spark等来加速数据处理和分析。采用CDN技术来加速数据传输速度,提高用户访问速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值