DNS解析、智能DNS原理及CDN应用和原理

DNS

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

简单的来说,就是平时我们访问某一个网站输入的是一个域名,如:www.taobao.com,而不会去输入一个IP来访问淘宝网站,一个比较简单的原因就是,IP我们很难记得住咯。
DNS就是将域名转化成IP的一个解析过程,这样说是有一点简单,因为其中还是有很多的技术,原理等来实现在这个过程。
域名和IP地址相互映射的一个分布式数据库。通过这个DNS解析来找到用户输入的域名所对应的IP地址。
那么DNS解析的过程是怎样的呢?

DNS解析过程
  • 1.浏览器中输入一个域名,浏览器先检查自身的域名缓存。如果没有
  • 2.浏览器检查操作系统自身的域名缓存,有的话直接返回对应IP。如果没有
  • 3.会找到系统中的hosts文件(windows下面:C:\Windows\System32\drivers\etc),看该文件中是否有对应的配置,有则返回。如无
  • 4.从本地的DNS服务器(LDNS,一般在你所在城市的某个地方,大部分域名解析结果都会缓存在这里)去查找,看域名对应的IP是什么,如果有返回。如无
  • 5.从ISP运营商(电信,联通等)的DNS服务器查找(规模大),同理返回命中IP或继续查找
  • 6.这时候会返回给本地DNS服务器(LDNS)一个根域的服务器地址,全球只有13台根域服务器,都在海外(美国)等地。这时候会返回你访问的域名的顶级域名对应的解析的服务器是什么,如www.abcd.com顶级域名就是.com,这时候.com域名对应服务器肯定能找到abcd.com这个二级域名对应的能解析它的服务器地址,拿到这个解析地址后,再去ISP服务商那里查找www.abcd.com这个三级域名对应的服务器IP地址

整个过程是比较长的,如果某次访问某个新的域名很慢,不一定是网络原因,也许是全部没有命中执行了整个解析过程导致耗时较久。

智能DNS

什么是智能DNS:智能DNS可以让用户访问到同线路的最近的服务器
智能DNS,智能的地方是能够匹配用户的线路(电信 联通)以及位置,比如:CDN(下面会写详细讲一个CDN应用)服务在全国有很多节点,也可以支持很多的线路,实现了智能DNS解析,它就能够去匹配用户的IP找到用户的ip所在的线路,位置。

主要的点就是,这个智能DNS系统内置了一整套很全的的ip库,可以快速分析用户ip对应的信息,国家城市街道,线路是什么,就知道用户是哪里的用户,就会在CDN的网络节点里面找对应的节点,比如深圳,再找离深圳最近的一个节点IP,智能DNS解析也能够有效保证CDN加速的效果

举一个例子:
阿里云域名解析配置主机IP以及解析线路,来告诉DNS服务器这一个IP是来响应哪一类线路的请求的,比如两台服务器,一个解析电信线路。一个联通,默认的解析线路就是用户既不是联通或者电信就由这台主机处理,更智能一点应该这个配置都不需要做,ip输入就能知道是什么线路。下面来详细说下CDN

CDN

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

来看一张原理图(图片为引用):
DNS解析、智能DNS原理及CDN应用和原理_第1张图片
CDN提供的服务优势的原理有点类似与淘宝和京东的关系:

淘宝就类似没有CDN的一种状态,不管你是上海 北京用户,购买某个店铺的一件商品,都是一个发货地址,就是淘宝卖家的货源地。

京东自营类似CDN加速的状态,如果你是上海用户就会从上海的并且上海离你最近的仓库给你发货,北京的同理,速度自然快,当天或隔天就到。

CDN适用范围
  • 静态的内容和更新频率比较低的内容(比如CMS)

  • 数据流量很大的网站(直播,图库网站)

CDN的优势
  • CDN解决了跨运营商和跨地域访问的问题,访问延时大大降低

  • 大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站负载

  • 提高网络的访问的稳定性,节省骨干网带宽,减少带宽需求量,带宽价格成本也会降低

  • CDN让大规模的用户请求架构变得简单了,不然的话需要自己去部署很多节点,机房来保证大量不同地区的用户的访问质量

  • CDN的流量越高价格越便宜

国内的特点:南电信北联通,所以不同区域的用户如果使用相对的运营商网络可能访问一些东西就会比较慢,CDN加速同时支持电信,网通,联通等多种线路,这样达到北方用户呢请求走的联通网络,南方用户走电信网络,减少跨网访问带来的网络交换结算

CDN核心两个:缓存和回源

缓存:

  • 将从源服务器请求来的资源按照要求缓存

  • 不生产内容,只做搬运工存储。

  • 大部分采用squid作为web服务(apache nginx )

Ps:Squid是一个代理缓存服务器,支持FTP、http、http等网络协议,它和一般的代理缓存软件的不同之处在于它使用一个单独的、非模块化的、I/O驱动的进程来处理所有客户端的请求)
回源:
当有用户访问某个资源的时候,如果被解析到的那个CDN节点没有缓存响应 的内容,或者缓存已经到期了,就会回源站去获取。没有人访问的话,不会主动去源站获取

关键技术:

  • 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;

  • 内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程 POP 上均衡用户的请求,以使用户请求得到最近内容源的响应;

  • 内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

  • 性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

CDN和静态资源

静态资源本身具有访问频率高、承接流量大的特点,因此静态资源加载速度始终是前端性能的一个非常关键的指标。CDN 是静态资源提速的重要手段。
DNS解析、智能DNS原理及CDN应用和原理_第2张图片
比如上面淘宝的一张图片,会发现淘宝的静态资源几乎全部走了阿里CDN加速:
http://img.alicdn.com/imgextra/i4/28894007/TB224MGb1ySBuNjy1zdXXXPxFXa_!0-saturn_solar.jpg_220x220.jpg_.webp
随便打开一个网站,静态资源几乎都是从CDN服务器请求而来的,我们的项目中图片等静态资源,走的就是七牛云的CDN。
DNS解析、智能DNS原理及CDN应用和原理_第3张图片
另外,将静态资源和主页面归置于不同的域名下是非常有必要的,有一点原因就是Cookie和域名是紧密联系的,同一个域名下的所有请求,都会携带一个相同的Cookie,但是静态资源不需要携带存放包含认证信息的Cookie,这样就可以避免,而且有效降低主域名访问压力。

CDN的缺点

什么事物都是有两面性的,CDN有这么多的优点,当然也有缺点
如果网站更新,CDN边缘节点数据没有更新,就可能导致用户获取最新信息延迟,用户看到的不是最新的内容,这个问题呢现在一般采用的都是手动更新缓存的办法。每一家提供商后台都有手动更新的地方,所以相比于CDN的优点来说,这个缺点就不是那么关紧了。
说到这里提一下CDN内容的缓存过期时间,你应该根据自己的项目实际情况来设置合理的缓存过期时间,可以是5个小时,一天,一周,一个月甚至更久,这个酌情考量

总结

以上是关于DNS和CDN的一些应用原理,非常建议项目中合理的使用CDN加速服务,来提高项目的访问质量,提高用户体验,除非你想用户访问了你的网站等了5秒右上角点X,当然,CDN只是其中的一个手段。
如果你要采用CDN服务,一般是去提供商那购买服务,除非很大的企业会自行搭建,这个成本太高了。至于你要选择哪家提供商,这个市面上的就很多了,阿里云,腾讯云,七牛云,360等等。
最后说一点比较重要的问题,购买的CDN服务采用哪种计费方式,一般市面上提供的有两种计费方式:

  • 1.按照带宽计费
  • 2.按照流量计费
    如果你不知道选择哪种的话,可以先选择一种,然后过一段时间看下统计图,然后选择更合适的计费放肆,如果你们的项目一直有统计系统那就更好办了,按照下面这种规则来选择计费方式即可:
    全天内带宽利用率大于30%的用户适合使用按带宽计费方式;对于域名流量曲线波动较大,有带宽尖峰,全天内带宽利用率小于30%的用户适合使用按流量计费方式,我们的这个我没找到计费方式是哪个。

你可能感兴趣的:(PHP,开发杂项)