zoukankan      html  css  js  c++  java
  • QPS第一级削峰一DNS/HTTPDNS+CDN

    入口第一级缓存:CDN

      什么是CDN?

      对CDN的认识,了解完如下三个问题及其过程就可以知道答案了
      一、浏览器解析域名过程
      1、浏览器的进程在操作系统上,当输入域名地址后,浏览器首先到本地的hosts配置文件寻找域名对应的服务器ip地址
      2、hosts没有找到则寻找系统本地的dns缓存(即LDNS,local dns),ldns一般是宽带提供商,如果是小区,用的是电信宽带,那就是小区里的电信架设的dns服务器中寻找,ldns缓存来源于之前请求过的域名和ip的映射关系,基本80%的dns解析可以在ldns中完成,找到了ip则直接返回
      3、ldns缓存也没有,则会向该域名授权的dns服务器发起请求,dns服务器返回加速域名ip给ldns去请求dns调度,拿到最佳的ip地址

      注:如何知道授权的dns服务器,由购买域名时配置dns服务器并广播数据告知,同时可以配置加速域名,假如购买的域名是www.a.com,可以通过CNAME配置一个用于加速的cdn二级域名a.tbcdn.com添加解析规则,用于dns调度,分配最优的ip

      CNAME 即指别名记录,也被称为规范名字。一般用来把域名解析到别的域名上,当需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录

      4、把域名和ip的映射信息缓存到本地ldns
     
      二、域名如何被客户端请求到?
      云服务厂商购买的域名,需要配置dns服务器信息,完成后向配置的dns服务器发送广播数据,使之可以被dns服务器接收
      同步过程先同步到根dns服务器,根dns服务器再同步到各个区域的服务器,再同步到各个操作系统上,同步间隔可以在云服务厂商购买配置域名时指定
     
      三、如何指定域名返回目标ip地址?
      域名用于做多个请求ip的负载均衡使用,比如对域名的请求返回就近地区的服务器ip,或者根据ip所属的运营商返回位于不同区域的服务器ip,即最后对域名的请求需要返回一个目标ip
      因此,可以在购买域名时配置dns解析规则,比如南方用联通多,北方用移动多,这样可以设置联通来访问上海机房的ip,移动的来访问北京机房的ip,以降低网络延迟
     
      CDN工作原理

      综上所述内容,分发网络,即CDN(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。

     (边缘服务器:传统的架构一些功能都需要回到中央服务器处理,但是现在在边缘就能直接处理并返回对应的结果。例如:身份验证,日志过滤,数据整合,图像处理和 TLS(HTTPS)会话设置等等。)

           CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由          缓存服务器直接响应用户请求(百度百科)

      借用阿里云官网的例子,来简单介绍CDN的工作原理。——引用自https://www.zhihu.com/question/36514327?sort=created

      假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:

    1. 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
    2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
    3. 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。
    4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
    5. LDNS获取DNS返回的解析IP地址。
    6. 用户获取解析IP地址。
    7. 用户向获取的IP地址发起对该资源的访问请求。
    • 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。
    • 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。

      从这个例子可以了解到:

      (1)CDN的加速资源是跟域名绑定的。
      (2)通过域名访问资源,首先是通过DNS分查找离用户最近的CDN节点(边缘服务器)的IP
      (3)通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。

      每个CDN节点由两部分组成
      1、高速缓存服务器
      2、负载均衡设备
      对用户入口流量的第一级控制,其实就是DNS智能解析,搭配一个负载均衡器LVS或Nginx,配合Keepalived做到入口高可用,代理或转发请求到Nginx节点,做负载均衡,并从Nginx节点上获取html资源
      这样,对于高并发的Web系统,页面的静态资源比如<src>,<video>之类的图片和视频资源,就通过DNS智能解析将用户的访问指向就近的CDN缓存服务器,实现了对资源的快速访问。
     
      综上,对流量入口处一级缓存的总体架构图如下:
     
       
      综上,为PC端浏览器发起请求的整个过程,对于APP端,请求链最前端的DNS解析为HTTPDNS,HTTPDNS原理可详见:https://zhuanlan.zhihu.com/p/270596378
     
     
  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/jiyukai/p/14809416.html
Copyright © 2011-2022 走看看