zoukankan      html  css  js  c++  java
  • 【白话科普】CDN & 游戏加速器,两者是一个原理吗?

    说起加速,大家可能就会联想到“游戏加速”之类的场景,而说到现在流行的云服务加速,则离不开 CDN 这个词。那么 CDN 和游戏加速器是同一种东西么?从效果上看两者都是为了“加速”,似乎是一样的。但是,在本质上却有区别。

    以上图举例,假设我们需要从 A 地点到 B 地点取东西,那么走直线肯定是最短距离。但如果 AB 之间的通路路面满是巨大的障碍物,极其难走,通行时间为 4 小时。而C和AB之间的通路十分通畅,从 A 经过 C 再到 B 只需要 2 小时,你会如何选择呢?相信大家肯定会选择走 C 去 B,毕竟虽然路远了,但是时间更短。游戏加速器就是让大家通过 C 点,能够更快速地到达 B。而 CDN 则是让东西放置在 C 点,从而加倍缩短时间。

    当然以上只是一个简单的举例,游戏加速器和 CDN 的具体运作原理我们下面细说。

    游戏加速器的原理

    游戏加速器是针对个人用户快速、安全连接服务器的一种服务。它使用的是 VPN(虚拟专用网络)技术,通过虚拟专用网络将电信加速到网通,或将网通加速到电信等等,为玩家提供优质的网络加速服务。

    在没有使用游戏加速器的时候走的就是平常通道,登录游戏加速器以后,玩家的网游数据转入游戏加速器专属传输网络中,这个网络是经过优化、只传网游数据,从而在用户和服务器之间建立了“绿色通道”,保障了数据传输的优先性与稳定性,能够有效解决游戏下载开启时存在的延时高、登录难、易掉线等问题。

    CDN 加速的原理

    CDN (Content Delivery Network),即内容分发网络。当用户访问网站时,CDN 会根据客户端的地区和运营商,将用户分配到距离最近速度最快的节点服务器,让用户以更快的速度获取到所需内容。

    CDN 的设计思路

    • 避让:尽可能避开互联网上可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。

    • 检测:通过在网络各处放置节点服务器所构成的在现有的互联网基础上的一层智能虚拟网络,CDN 系统能够实时监测网络流量和各节点的连接,负载状况以及到用户的距离和相应时间等综合信息。

    • 分发:根据监测情况重新导向离用户最近的服务节点上。

    CDN 的工作过程

    以上图进行举例,假如 www.abc.com 使用了又拍云 CDN 服务。当他的用户需要访问这个网站时,首先由用户端发起访问请求,之后 Local DNS 会向上级 DNS 服务器进行域名解析,解析 CNAME 地址。解析出 CNAME 地址后,网站会授权给 DNS 解析出的 CNAME 地址,并将这个地址返回给 Local DNS。而这时,又拍云智能调度系统会根据 LocaL DNS 请求的 CNAME 地址分配最优的用户所在地区的运营商节点。这个节点 IP 会由 Local DNS 返回给请求客户端,而客户端则访问这个最优节点。

    如果是客户端第一次访问,那么节点可能没有该网站内容的缓存。那么节点会到网站源服务器去请求资源,这个时间可能会相对较长。而如果节点已经有网站内容缓存,那则会直接将缓存内容返回给用户,让用户查看到网站内容。

    如果是游戏内容,那么当游戏厂商使用了 CDN 以后,就可以将软件缓存到遍布各地的 CDN 边缘节点上,当用户请求下载时,会直接选择就近最优的节点进行下载,提供下载的稳定性和速度。相比游戏加速器只是提供专用的一条带宽来进行加速,CDN 还可以解决因用户流量持续增长,下载服务器处理能力、服务器出口宽带压力增加而影响玩家体验的问题。

    尽管 CDN 和游戏加速器在用户端体验效果上看似乎是是一样的,但是无论是在成本还是在分解源服务器压力等方面,二者的原理是完全不同的。如果你要问二者哪种更好,那需要考虑到用户自身的需求和实际情况。

    推荐阅读

    白话科普系列——网站靠什么提升加载速度?

    “网页内容无法访问”可能是跨域错误!

  • 相关阅读:
    WSAAsyncSelect模型触发不了FD_Close消息?
    WSAAsyncSelect模型中,FD_WRITE事件什么时候触发?
    VC学习笔记:状态栏
    VC++对话框中加状态栏
    c++子类和父类成员函数重名
    vim学习笔记(11):vim 去掉<200b>
    tensorflow笔记5:tensorflow的基本运作,函数
    Anaconda的使用和包的更新;conda 创建虚拟环境
    vim学习笔记(10):vim命令大全
    tensorflow笔记4:函数:tf.assign()、tf.assign_add()、tf.identity()、tf.control_dependencies()
  • 原文地址:https://www.cnblogs.com/upyun/p/14480134.html
Copyright © 2011-2022 走看看