CDN与websocket|青训营笔记

357 阅读3分钟

今天学了第一节课,遇到了之前没有听过的名词,CDN和websocket,课下搜索了一下,写一篇笔记记录一下。

  • CDN(Content Delivery Network内容分发网络)
    • 核心理念:将内容缓存到客户端附近
      • 使用缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求
      • 可以缓存视频、网站的静态资源、app的静态资源
    • 访问过程
      • 浏览器根据url地址去本地DNS解析IP地址
      • 本地DNS服务器将域名的解析交给CDN专用DNS服务器
      • CDN专用DNS服务器将CDN全局负载均衡设备IP地址返回用户
      • 用户向CDN负载均衡设备发起内容URL访问请求
      • CDN负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的缓存服务器
      • 负载均衡设备告诉用户这台缓存服务器的IP地址,让用户向所选择的缓存服务器发起请求
      • 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端
        • 如果这台缓存服务器上并没有用户想要的内容,那么缓存服务器需要向网站的源服务器请求内容
        • 源服务器返回内容给缓存服务器,缓存服务器返回给用户,并根据用户自定义的缓存策略,判断是否将内容缓存至缓存服务器。 image.png
    • 作用
      • 加速了网站的访问,将用户与内容之间的服务距离缩短,同时缩短了用户的等待时间
      • 避免网络拥塞,分担源站压力
      • 隐藏源服务器IP,保护源服务器的安全
  • WebSocket
    • 背景
      • HTTP协议有一个缺陷:通信只能由客户端发起,如果服务器有连续的状态变化,客户端要获知就非常麻烦,只能通过"轮询"的方式,效率低,浪费资源
      • 传统web模式在处理高并发及实时性需求时,会遇到难以逾越的瓶颈,需要一种高效节能的双向通信机制保证数据的实时传输。
    • 概念
      • websocket是HTML5一种新的协议,实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,建立在TCP之上,跟HTTP一样通过TCP传输数据。
      • 与HTTP的不同
        • websocket是一种双向通信协议,在建立连接后,websocket服务器和客户端都能主动的向对方发送或接收数据
        • websocket在建立握手时,数据是通过HTTP传输的,但是建立连接之后,真正传输数据时不需要HTTP协议 image.png

        虽然HTTP/2也具有服务器推送功能,但HTTP/2只能推送静态资源,无法推送指定的信息

    • 报文
      • 客户端请求报文
        GET /webfin/websocket/ HTTP/1.1
        Host: localhost
        Upgrade: websocket   #表明是一个websocket请求
        Connection: Upgrade
        Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==  #客户端发送的密文,要求服务器必须返回一个对应加密的Sec-WebSocket-Accept
        Origin: http://localhost:8080
        Sec-WebSocket-Version: 13
        
      • 服务器响应报文
        HTTP/1.1 101 Switching Protocols
        Upgrade: websocket
        Connection: Upgrade
        Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWfB3y3FE8=
        
    • 应用场景
      • 即时聊天通信
      • 多玩家游戏
      • 在线协同编辑
      • 实时数据流的拉取与推送
      • 体育/游戏实况
      • 实时地图位置
  • 课外资料