分布式系统 - DNS域名设计与实践(下)

前言

通过分布式系统 - DNS域名设计与实践(上)我们了解:

  1. DNS的含义和域名解析流程
  2. DNS协议
  3. DNS应用场景
  4. DNS劫持原因分析
  5. 如何快速检测是否被劫持与商务解决方案

今天我们主要介绍:

  1. 如何通过技术手段解决DNS域名劫持
  2. DNS的配置策略与应用
  3. CDN系统的技术分析与应用实践

DNS优化方案

  • 客户端直连IP
    用户直接通过ip访问到服务端,绕过DNS解析。

实现方式:

服务节点拓展后需要更新客户端的服务器节点ip文件,客户端通过http拉取服务器IP列表。可以通过版本号判断是否更新服务器节点ip文件

方案优点:

  1. 不需要每次请求做DNS解析,节省时间
  2. 不需要每次请求做nginx转发,节省时间
  3. 不需要每次拉取ip-list,节省流量
  4. DNS被劫持时仍可以使用本地ip
    ps:获取服务器列表时,此时dns已经被劫持,通过http拉取,这里还得通过dns解析吗?
  • 使用HttpDNS
    实现原理:绕过DNS协议请求,解决运营Local DNS劫持;将UPD协议->HTTP协议即用80端口取代53端口

实现方式:

通过访问HttpDNS接口,绕过LocalDNS,同时基于容灾考虑,保留次选使用运营商LocalDNS的域名解析方式。客户端使用获取到的IP地址,法师业务协议请求。

方案优点:

  1. 根治域名解析异常
  2. HttpDNS能直接获取到用户IP
  3. 拓展性强,可实现更精细化的流量调度

阿里云、腾讯云、百度云、新浪等都有HttpDNS

综上,高可用的DNS设计,应用方面可用HttpDNS和基于IP地址直连。同时监控治理加强,进行实时监控,发现问题后及时推动解决。

DNS配置策略与应用

  • 业务域名使用CNAME
  • 配置一条A记录指向最终IP(A记录域名指向CNAME)
    配置CNAME可以是多个域名对应一个IP,同时也方便接人CDN

域名配置策略基本应用

如下图,www.baidu.com.   配置业务域名www.com的CNAME记录。
通过CNAME配置A记录,指向最终的真实IP

百度域名DNS配置策略分析
域名配置策略高级应用

  • 异地多中心隔离
    普通域名解析是通过DNS轮询,即每次请求对应的IP不一样,这样可能会由于跨网或者跨地区导致访问速度慢,体验较差的结果。我们更希望的是域名可能就近解析,即将用户请求定向到最近节点。那么就需要GSLB.

全局负载均衡(GSLB): 对服务器和链路进行综合判断来决定由哪个地点的服务来提供服务,实现异地服务器集群服务质量保证。

关键技术点

  • 将用户请求定向到最近节点
  • 就近性判断
  • 更加服务器的负载

下图中通过Local DNS可以判断检测与数据中心的联通性,连接那个快则就用那个
DNS异地多中心全局负载均衡
基于以上场景的解决方案为智能DNS。

  • 智能DNS: 除了具备基本的DNS解析功能外,还可以自动识别DNS请求发送者来源,并将域名智能解析到不同IDC中的IP.
    主要功能: 监控检查、调度策略、保证资源高可用
    可选产品和方案:
    DNSPod、GTM(Global Traffic Manager)、阿里智能解析等
  • 智能解析原理
  1. 智能解析域名
  2. 近性表项
  3. 返回延时(Round Trip Time)
  4. 返回响应最快的站点
    具体描述:如下图ww.xx.com首先访问Local DNS,查看 本地近性表项是否有解析过ip,如有直接返回。若没有向DNS服务器发起探测,比较RTT值,RTT小的认为是比较快的返回。
    智能DNS解析过程
  • 智能DNS应用:
    如下图:CNAME配置CDN域名,真实IP由CDN返回
    智能解析配合CDN

CDN系统技术分析与实践

CDN(Content Delivery Network):

内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负 载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和 命中率。
接入CDN和未接CDN对比

CDN原理:

CDN原理

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

用户通过智能解析,获得最近或者最搞笑的访问边缘节点集群
CDN网络拓扑图

引入CDN优点
  • 改善访问体验
  • 减轻服务器压力
  • 预防单点(单机房带来的单点问题)
  • 解决突发流量的问题
  • 合理利用互联网资源
  • 解决网络互联互通
CDN适合缓存哪些数据?

页面、图片、流媒体、样式脚本等

CDN专业术语
  • 回源:
    当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应内容或者缓存已经过期,就会回源站去获取(CDN产会收费回源流量费)
  • 回源域名
    采用回源域名方式进行回源,解决源站IP变更问题
  • CDN回源率
    回源请求数比:指边缘节点对于没有缓存、缓存过期(可缓存)和不可缓存的请求占全部请求记录的比例。越低则性能越好。
    回源流量比:回源流量是回源请求文件大小产生的流量和请求本身产生的流量。所以回源流量比=回源流量/(回源流量+用户请求访问的流量),比值越低,性能越好。
  • CDN产品的衡量指标可参考阿里云-CDN的衡量指标
CDN系统技术分析

CDN系统技术点

  1. 内容路由:将用户的请求分配到CDN中的最佳节点
    通过DNS全局负载均衡找到响应最快的边缘节点集群
    通过本地负载均衡(LLB)找到边缘节点集群中最好的节点
    可以通过节点探测和应用层与传输层实现重定向来实现内容路由

  2. 内容分发:源内容到CDN节点的Cache过程
    PUSH: 热点数据通过主动分发
    PULL::用户请求按需分发
    这里需要考虑回源问题,可以通过缓存时间、URL设计、缓存预热等方式优化解决

  3. 内容存储
    源站存储:由于访问量大,可以用OSS或者其他分布式存储。同样需要合理设计注意流量费用问题
    CDN节点存储
    需要考量存储支持的 数据格式、缓存命中率、可靠性、稳定性等方面;流媒体可以通过分片拉取

  4. 内容管理
    本地内容索引
    本地内容拷贝
    本地内容访问状态信息收集
    CDN关键技术

使用CDN数据一致性和高可用保障
  • 合理设计缓存失效时间
  • 设置数据版本号,
  • 主动分发,避免数据不一致性问题
  • 错峰发布和版本号控制提高系统高可用性
CDN应用领域

CDN应用领域

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值