内容分发网络
缓存算法[Squid];2. 分发能力;3. 负载均衡[Nginx](4. 基于DNS[BIND]);5. 支持协议;
缓存算法: 决定命中率、源服务器压力、POP节点存储能力
负载均衡(智能调度): 决定最佳路由、响应时间、可用性、服务质量
基于DNS的负载均衡 : 以CNAME实现[to cluster],智取最优节点服务,
缓存点有客户端浏览器缓存、本地DNS服务器缓存
缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存
分发能力: 取决于IDC能力和IDC策略性分布
支持协议: 如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速
//组成
分发服务系统,最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求
负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,GSLB主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。SLB主要负 责节点内部的设备负载均衡
运营管理系统:分为运营管理和网络管理子系统
骨干点(中心和区域) ,边缘点pop
第四章 集群服务与负载均衡
Web集群是由多个同时运行同一个web应用的服务器组成
负载均衡 多个服务器之 间(集群内)实现合理的任务分配,不出现一台超负荷现象,含义:把大量的并发访问或数据流量分担,单个高负载的运算分担
集群技术:
1高性能性集群(HPC Cluster)
2、高可用性集群(HA Cluster) 主-主工作方式,主从 工作方式
3、高可扩展性集群
在数据链路层上实现负载均衡的原理是 根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch), 本身便是一种基于访问流量的控制方式,能够实现负载均衡。
负载均衡算法:
轮循(Round-Robin) : 后端一致,前端 请求轮询分配给后端
查询最小连接数(Least Connections First): 判断服务器的最小连接数
快速响应优先(Faster Response Precedence) : 判断硬件状态来 分配
基于 算法,又可分为
1DNS 轮询
2 反向代理服务
使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能。然而它本身也存在一些问题,首先就是必须为每一种服务都专门开发一个反向代理服务器,这就不是一个轻松的任务。
代理服务器本身虽然可以达到很高效率,但是针对每一次代理,代理服务器就必须维护两个连接,一个对外的连接,一个对内的连接,因此对于特别高的连接请求, 代理服务器的负载也就非常之大。反向代理方式下能应用优化的负载均衡策略
3地址转换网关 外部ip 到 内部ip 的映射
第五章 : 全局负载均衡
最通用的是基于 DNS解析方式,还有HTTP重定向、IP路由等方法
DNS解析方式: DNS给使用它的互联网应用带来额外的时延,有时时延还比较大,为了解决问题,需要引入“缓存”机制。
Internet类资源记录分为
– A记录(address):域名->多个IP的映射。对同一个域名,可以有多条A记录
– NS记录(name server):指定由哪台DNS服务器来解析
– SOA记录(start of authority):指定该区域的权威域名服务器
– CNAME记录(canonical name):多个域名->服务器的映射
– PTR记录(pointer record):IP->域名的映射
HTTP重定向:
IP路由: 多个POP点之间实现的负载均衡是一种概率上的均衡,而不是真正的均衡(没做智能调度)
第六章 流媒体CDN系统的组成:
流媒体业务是一种对实时性、连续性、时序性要求非常高的业务
Access
– Demux(音视频分离)
– Decode(解码解压缩)
– Output
RTP 实时传输协议 ,RTCP 实时传输控制协议 RTSP 实时流 RTMP 实时消息
HTTP streaming前身是progressive download(渐进式下载:边下载边播放,直到下载完)。
HLS流化技术 HTTP Live Streaming 主要分三个部分:服务器组件、分发组件和客户端软件
服务器组件主要负责从原始的音视频设备捕捉相应的音视频流,并对这些输入的媒体流进行编码,然后进行封装和分片,最后交付给分发组件来进行传送;
– 分发组件主要负责接收客户端发送的请求,然后将封装的流媒体分片文件连同相关的索引文件一起发送给客户端。对于没有采用CDN服务的源服务器,标准的 Web服务器就是一个分发组件,而对于大型的视频网站或者类似的大规模应用平台,分发组件还应包括支持RTMP协议的CDN;
– 客户端软件负责确定应该请求的具体媒体流,下载相关资源,并在下载后通过拼接分片将流媒体重新展现给用户