导图社区 《CDN技术详解》一到四章导图
《CDN技术详解》一到四章导图。内容包括cdn系统架构、缓存、负载均衡等。
编辑于2020-08-20 23:34:41
MindMaster 是亿图软件最新推出的一款跨平台、多功能的思维导图软件。是帮助您快速成为思维导图设计能手的全面解决方案!MindMaster分为免费版和专业版,终结了思维导图软件好用则价高,免费则难用的尴尬局面。软件提供了丰富的智能布局、多样性的展示模式、结合精美的设计元素和预置的主题样式,努力帮用户打造一款真正的效率神器。自推出以来深受广大用户的欢迎,被广泛应用于解决问题,时间管理,业务战略和项目管理等领域中。
1. cdn简介
2. cdn架构
系统架构
功能架构
分发服务系统
将内容从源向边缘推送和存储,面向最终用户的数据请求服务
向上层调度控制系统提供每个cache设备的健康状况、响应情况
负载均衡系统
cdn系统神经中枢,负责对所有法其服务请求的用户进行访问调度,确定最终实际访问地址。
两级调度系统
全局负载系统GSLB
用户就近原则
基于DNS解析的方式实现
基于应用层重定向方式
本地负载均衡SLB
运营管理系统
运营管理
cdn系统的业务管理功能实体,包含客户管理、产品管理、计费管理、统计分析等功能
网络管理
源站监控
服务质量监控
流量监控
设备监控
链路监控
部署架构
边缘层
为用户提供内容服务
又称为POP节点
区域层
区域性管理和控制
骨干节点
中心层
全局性管理和控制的设备
骨干 节点
所有节点都是由cache设备和负载均衡设备构成
cache设备与负载均衡设备连接方式
穿越方式
由L4-7交换机实现SLB,提供公网ip,管理多台cache设备
旁路方式
SLB与cache并联,都拥有公网ip,SLB通过重定向方式访问cache
cdn服务类型
基于内容
网页加速
流媒体加速
2002年开始,以ADSL为主的宽带接入方式使得用户的主流接入带宽提升到2MB,“最后一公里”的问题逐步得到解决。
流媒体直播加速
流媒体点播加速
文件传输加速
支持的协议
FTP
HTTP
P2P
...
下载文件
应用协议加速
通过对TCP/IP等传输协议的优化,改善和加快用户在广域网上的内容传播速度
广域网应用加速
SSL应用加速
提供专用的SSL加速硬件来完成加解密运算工作
专门搞几台服务器来提供SSL服务?
网页压缩
将内容在服务端压缩,在浏览器端解压,加速传送速度
基于内容生成机制
静态内容
静态文件内容的cdn,传统意义上的cdn
动态内容
边缘计算
将Control和Model层的任务用cdn方式实现
3. 内容缓存技术
发展背景
缓存cache是cdn的基础技术和组成单元
工作方式
web cache
缓存普通网页的内容和对象(图片文字、html、css等)
web cache部署的位置
用户到服务器交互过程中的4个关键网元
用户(浏览器)->代理->网关->web服务器
用户浏览器可以进行缓存
cache部署在代理的位置 代理->网关 称为正向代理
内部用户通过代理访问外部网络,代理与用户在同一网络
用户需要设置代理的地址,将用户的所有访问请求或者部分访问请求通过代理完成
代理也可以完成安全认证和访问控制的功能
透明代理
路由设备需要支持WCCP协议(web cache control protocol),代理对用户不可见,用户直接访问目标ip
cache部署在网关的位置 网关->web服务器 反向代理
代理与目标服务器在同一网络
大规模的cache需要 部署GSLB全网负载均衡来实现内容分发策略
就是dns服务器?
就近原则?
实现的关键要素
用户到源站的多次HTTP协议过程,应支持HTTP基本功能
缓存工作方式
性能指标
流媒体cache
实现基础-基于HTTP协议的web缓存技术
web工作机制
超文本技术 实现信息连接
HTML
超链接 实现全球信息精准定位
URI
应用层协议HTTP 实现分布式信息共享
超文本(HTML)传输协议
描述了web客户端如何从web服务器请求web页面
HTTP协议原理
基本原理
“请求-响应”协议
建立在TCP协议之上
通过套接字来连接HTTP进程与TCP,向目标发送和接收HTTP请求
默认支持带流水线的TCP连接,即非阻塞的请求方式
建立TCP连接之后会有最大空闲时间,发送请求的间隔不超过这段时间,就不用重新建立连接。
可以设置Connection头为close来关闭持续连接
基本概念
连接:两个程序间建立的传输层虚拟链路 如TCP连接
消息:HTTP通信的基本单位,包括一个结构化的八元组序列通过连接传输
通用头
Connection
Keep-Alive 持续连接
close 一次连接
Date
消息产生的时间
Transfer-Encoding
表示整个消息主体的传输编码方式
chunked表示消息主体采用块编码的方式
Via
制命请求和响应消息在客户端和服务器之间传递时所经过的代理和网关以及相关的中间协议
Warning
警告信息
Pragma
用来包含特定的执行指令,这些指令适用于客户端、代理、网关、源服务器中的任何接收者
但是不一定执行
如: no-cache
请求
请求行
请求方法
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
URI
版本号
请求头
包含请求的附加信息以及客户端的附加信息
Accept
指定本请求所期望的服务器其返回的媒体类型,如Accept: audio/*; q=0.2, audio/basic 表示期望收到audio/basic类型的媒体,但也可以接收其他任何audio类型,但偏好程度只有audio/baisc的20%;
Accept-Charset
指定客户端能接收什么样的字符集响应,如 Accept-Charset: iso-8859-5
Accept-Encoding
限定客户端可以从服务器接收的内容编码 如 compress,gzip
Accept-Language
限定客户端希望从服务器接收的自然语言 如en-us
Accept-Range
指示客户端系统希望从服务器收到的内容的字节范围
Authorization
向服务端发送一些授权证书
From
客户端当前操作用户的Email
Host
请求资源的网络主机和端口号
If-Match
值为ETag值,用来判断已缓存的内容是否被修改过
If-None-Match
与If-Match作用相反,若ETag不相同则返回所请求的内容
If-Modified-Since
修改时间。如果服务器上的修改时间比这个新,则返回新的内容。
If-Unmodified-Since
与If-Modified-Since作用相反。服务器内容新则不返回。
If-Range
与Range头一起使用。If-Range的值可以是ETag,也可以是具体的是时间值。如果收到If-Range的服务器发现所请求的内容没有改变,则根据Range头指示的字节范围进行续传,否则返回整个文档内容。
Max-Forwards
指示此HTTP请求可以途径的代理服务器或网关个数。每经过一次代理或网关值减1,为0时终止发送该请求。
Proxy-Authorization
代理服务器的一些授权证书
Range
客户端通知服务器只需返回部分内容,以及部分内容的范围。
Referer
告诉服务器 这次请求是通过点击哪个网页上的超链接转向过来的。
User-Agent
用于指定发送请求请求的客户端信息
Cookie
uri
HTTP协议版本
响应
响应行
HTTP协议的版本号
请求的状态码

1xx 请求已接收,继续处理
2xx 请求成功
3xx 重定向,要完成请求必须进行更进一步操作
4xx 客户端错误,请求有语法错误或请求无法实现
5xx 服务器错误,服务器未能实现合法的请求
原因短语
响应头
Accept-Range
指明服务器对用户请求范围的接收程序 如100-599 表示服务器只接受请求范围的第100字节到599个字节
Age
当服务器使用缓存内容去响应请求时,该头部表明了该内容从产生到现在经过了多长时间
ETag
对应实体内容的一个hash?
Location
当请求的URI发生重定向时,用于指示资源在重定向之后的URI
Retry-After
可以与503响应一起使用,服务器用它来告知请求端服务的不可用时长。
与3xx响应一起使用,服务器用它来告知客户端发送重定向需要等待的最小时长
Server
服务器用于处理请求的软件信息
Vary
指定了一些请求头,被服务器用来决定缓存的没有过期的内容能否被允许去响应后续相同的请求
WWW-Authenticate

Proxy-Authenticate
此头必须被包含在407响应里。
Cache-Control
max-age
缓存内容保持新鲜状态的最长时间,单位秒
s-maxage
类似于max-age属性,应用于共享缓存
no-cache
强制每次范文请求直接发送给源服务器
no-store
强制缓存在任何情况下都不要缓存任何内容
must-revalidate
如果缓存出于过期状态,则在对访问请求进行响应前必须到源服务器进行重新验证
proxy-revalidate

与must-revalidate基本相同,只是不能应用于非共享的代理缓存
资源
实体
被包围在一个请求或响应信息中,是请求或响应消息的有效承载信息。
头信息
包含与实体内容相关的原数据信息
Allow
指示可以使用的请求方式
Content-Base
Content-Encoding
指示实体内容以哪种方式编码
Content-Language
实体内容的国家语言 zh-cn
Content-Length
实体内容的大小
Content-Location
当实体内容真正的URI和请求URI不同时,在此提供真实URI
Cotent-MD5
完整性校验码
Content-Range
表示返回的内容是整个实体内容的哪个部分 如 235-4767/8565
Content-Type
告知浏览器响应的内容类型。
HTTP中把这种不同媒体类型的格式称为多媒体文件格式 (MIME)
ETag
Expires
指示当前内容在何时之后被认为过期
Last-Modified
指定访问内容的最后更新时间
extension-header
实体内容
经过编码的字节流,编码方式由头信息中的Content-Encoding或Content-Type定义
长度由头信息中的Content-Length或Content-Range定义
客户端
为发送HTTP请求而建立连接的应用程序,如浏览器
服务器
接受客户端请求并对请求返回信息的应用程序
源服务器
编辑产生网页并保持其最新变动的源站
代理
位于客户端和服务器之间的中间程序。
透明模式。透明模式不会对请求和响应进行修改
非透明模式。需要修改请求和响应,包括注释、类型转换、协议简化、类型过滤等
网关
作为中间媒体的服务器。代表源服务器来接收和提供服务。
隧道
是作为两个连接中继的中介程序。通过隧道,连接防火墙内的主机A,与连接防火墙外的主机B
缓存
Cookie
通过访问客户端的一个文件实现请求信息存储
服务器在响应消息中设置一个指示信息要求客户端在用户机器上存储一个小文本文件
通常命名格式 user@domain[数字]
浏览器在发送请求之前,会查看本地是否保存有此网站的Cookie信息,如果有,则将Cookie文件中的信息放在请求消息Cookie头中一起发送给服务器。
服务器通过Set-Cookie拓展头来返回用户ID和相关信息,并设置过期时间Expiration
最大为4kb
浏览器缓存的cookie数量有限制
Session
与cookie一样,用于存储用户访问信息
不同之处在于session的信息存储在服务器上,消耗的是服务器资源
session时效短,更加安全
服务器通过set-cookie头,或者URL附加信息告知客户端session id
技术实现关键点
web cache关键性能指标说明
并发量
用户并发访问量
吞吐率
单位时间内能够处理、转发的数据量大小
命中率
响应时间和丢包率
DNS解析时间
建立连接时间
重定向时间
收到第一个包时间
下载时间
丢包率
内容存储机制
共享存储
本地附加存储DAS
在web cache服务器中内置大容量、高速的硬盘
分布式文件系统服务
基于廉价存储介质提供大容量、高性能、高可靠的存储服务,存在网络时延。适合流媒体。通过配合文件分片预取等技术客服该缺点。
内容更新机制
Last-Modified
ETag
强验证
精确到字节
弱验证
内容语义
协议优化
HTTP连接耦合
把多个短连接转换成一个长连接
HTTP gzip压缩
Content-Encoding: gzip
安全实现机制
访问控制
病毒防护
网络安全防护
内容加密
squid
web代理
内容缓存与加速
ACL访问控制
用户认证
日志
4. 集群服务于负载均衡技术
集群
集群的分类
计算集群
计算并发任务
负载均衡集群
分配计算任务
高可用集群
主备机
系统结构
网络层
节点服务器操作系统层
应用层
集群管理系统层
对集群内的服务资源及其上运行的任务进行管理和调度
CDN负载均衡集群
Cache集群协同交互方法
松耦合
ICP
轻量级的消息格式
用于cache服务器之间互相查询web资源信息
基于UDP
HTCP
用于发现HTTP告诉缓存服务器和缓存数据的协议
基于UDP或者TCP
可对cache资源进行操作
Cache Digest
解决ICP和HTCP在使用过程中的网络延迟和拥塞问题
利用Cache服务器本地的存储空间保存邻居服务器的Cache内容信息
Cache Pre-filling
一种推送Cache内容的机制
应用IP多播网络,使得预先被选定的资源能够同时被插入到目标多播组的所有cache服务器种,从而实现集群种各台服务器保存内容的同步。
紧耦合
CARP
分布式缓存协议
通过建立哈希函数用户划分Cache服务器集群的URL空间
核心:为集群定义了一张Cache服务器阵列成员表,以及用于向Cache服务器上分发缓存URL信息的哈希函数。
工作过程
对Cache服务器阵列种的各个成员的名称字符实施逐位左循环移动若干位的操作形成其对应的哈希ID,这些信息将被补充到阵列成员表种,并在每台服务器中保存。
对众多的URL字符串采用类似的算法进行操作,获得对应的URL哈希值
每个URL哈希值都要和各台服务器的哈希ID做异或操作并乘以一个常熟,其得到的乘积再逐位左循环移动指定位数以获得相应的分数
最后,CARP对分数值进行大小比较,并最终将URL对应的内容分配到与之操作具有最高分数的服务器上
考虑到不同Cache服务器处理能力的差异,CARP在哈希算法中还引入了负载因子(权重),实现性能的优化。
负载均衡技术的实现
负载均衡算法
静态
轮询
依次将请求分发到不同的服务器上,使得服务器平均分担用户的连接请求
加权轮询
根据权重分发任务到不同的服务器上
随机
随机分发任务
加权随机
有权重的随机分发
基于源IP的hash
通过hash函数将来自同一个源IP地址的请求映射到一台服务器上
按用户分类
基于源IP端口的hash
通过hash函数将来自同一个源IP地址和源端口号的请求映射到一台服务器上
按业务分类
基于目的IP的hash
通过hash函数将来去往同一个IP地址的请求映射到一台服务器上
基于UDP报文净荷的hash
通过hash函数将UDP报文载荷中特定字段的内容相同的请求映射到一台服务器上
动态
最小连接
根据当前各台服务器的连接数估算服务器的负载情况,把连接分配给连接数最小的服务器
加权最小连接
服务器上已经建立连接数乘以一定的权值
最小相应时间
尽可能选择对用户请求响应时间短的服务器
会话持续性保证技术
目标是保证在一定时间段内某一个用户与系统的会话只交给同一台服务器处理
通过TCP数据包和HTTP消息中存在的隐式关联关系,确定处理连接请求的服务器
主要思路
基于源IP地址的持续性保持
主要用于四层负载均衡,确保来自同一个源IP的业务能够分配到同一天服务器中
基于Cookie数据的持续性保持
主要用于七层负载均衡,用于确保同一会话的报文能够被分配到同一台服务器中
服务器负载均衡
四层负载均衡
NAT
组网结构
直连方式

主要组件
负载均衡设备
真实服务器
虚拟IP地址
集群对外提供的公网IP地址供客户端请求服务时使用
服务器IP地址
服务器的IP地址供负载均衡设备分发服务请求时使用。这个IP可以是公网IP,也可以是私网IP
DR
组网结构
旁路部署

主要技术方式
服务器和负载均衡设备都拥有独立且相同的虚拟IP
服务器虚拟ip不能响应ARP请求(ARP就是将IP与实际物理地址转化的协议)
负载均衡设备直接通过修改目的的MAC地址来转发请求,这里服务器还需要有一个真实IP,来与负载均衡设备进行交互。
服务器处理完请求之后直接响应给客户端
七层负载均衡
解析应用层的信息,例如:解析HTTP内容,作为负载均衡的依据。
组网方式

工作流程

链路负载均衡
分类
outbound
企业内部访问外部

为不同的链路指定了不同的源ip,保证响应由同一条链路返回
Inbound
外部用户访问企业内部


调度算法
就近链路选择算法
基于链路带宽
开源负载均衡软件
5. 全局负载均衡工作原理及实现
6. 流媒体CDN系统
7. 动态内容加速服务的实现
8. cdn商业化服务现状
cdn的两端,内容提供商和用户

狭义的cdn服务提供商涵盖软件系统服务和运营保障部分
接入和设备托管服务主要是电信运营商承担
部分 cdn运营商对硬件进行定制,承担部分设备供应商的责任
cdn提供平台和建立收费机制以及与内容提供商分账的模式获得收益