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