CDN技术详解(七)
动态内容加速服务的实现
随着Web2.0的兴起,产生了动态网页、个性化内容、电子交易数据等内容的加速,这些就涉及了动态内容加速技术。
静态内容的加速,都是对于表现层的加速,对于动态页面等内容的加速,则要涉及逻辑层和数据访问层的加速技术。
动态内容的提供不仅仅是HTML页面的设计及编辑,它还需要有后台数据库、应用逻辑程序的支持,以实现与用户的动态交互。
Web系统由表现层、业务逻辑层、数据访问层+用户数据层
表现层是Web系统与外部系统的交互界面,这一层通常由HTTP服务器组成,负责接收用户端的HTTP内容访问请求,从文件系统中读取静态文件
业务逻辑层负责处理所有业务逻辑和动态内容的生成
数据访问层位于系统的后端,负责管理Web系统的主要信息和数据存储,通常由数据库服务器和存储设备组成
用户数据层负责存储用户信息数据和关联关系,内容来自用户提供和用户行为分析结果
Web网站借助CDN技术能够获得更好的扩展性和高性能,核心在于CDN采用的缓存(caching)和复制(replication)机制,
其中缓存是将最近经常被访问的源服务器拥有的内容复制到边缘服务器上,可被视为具有特定策略的复制。
CDN的复制机制是指将源Web系统逻辑架构的各个层次的相应功用复制到边缘服务器上实现,以缓解源系统的处理压力。
Web系统表现层的复制,就是静态内容的复制。
边缘服务器又被称为代理服务器,通过反向代理加速静态文件的交付
Web系统业务逻辑层的复制。CDN被用于改进动态生成内容的交付性能。
即将应用程序和业务组件直接在CDN的边缘服务器中计算,从而直接在靠近用户的地方生成动态Web内容
Akamai边缘计算部署模型,
包括用户(使用浏览器)、企业J2EE应用系统(运行业务逻辑、原有系统、数据库等)、
分布式网络服务器(Edge computing平台)运行支持J2EE应用编程模型的WebSphere或者Tomcat应用服务器
Web系统数据访问层复制。CDN边缘服务器能够具备生成动态内容和掌管内容生成数据的能力
利用边缘服务器代替源钻Web系统的后台数据访问层中的数据库系统,及时响应业务逻辑层提出的数据查询需求。
Web系统用户文件的复制。
(PS:暂时来说,网宿还没有实现真正意义的动态加速,虽然现在已经实现一部分,如搜索结果动态缓存,重用的动态页面智能缓存。其他更多的是通过智能管道来加快用户与源钻的访问效率)
(应用加速技术实际上是传统的网络负载均衡的升级和扩展,
综合使用了负载均衡(智能调度)、TCP优化管理(TCP keep-alive connection,更激进的TCP窗口策略,
基于HTTP1.1),链接管理(routing)、SSL VPN、压缩优化(代码压缩,图片压缩)、
智能网络地址(NAT-公私网IP转换)、高级路由、智能端口镜像等技术。)
TCP的问题
TCP窗口大小的限制(TCP窗口大小随传输成功而变大,而一旦发生传输失败,其窗口大小会立即缩小)
TCP协议慢启动(三握手)和拥塞控制
广域网加速关键技术
针对层次
优化技术
优化原理
(1)
传输发起端
原始数据优化
通过压缩、重复数据删除和字典等技术,可节省绝大多数传输数据量,节约带宽,提高服务器性能
(2)
数据缓存技术
将类HTTP的业务、图片、文字等缓存在本地,只传输动态内容,减少带宽占用
(3)
物理层(硬件)
提升设备性能
基于现有TCP/IP,通过硬件方式提高性能,提高大量TCP并发连接和会话重组等处理能力
(4)
网络层(IP)
QoS和流量控制
通过协议识别,实现在同一端口中不同应用的真正区分,进而通过分流实现时延敏感应用的带宽保障
(5)
传输层(TCP)
代理设备 在传输两端各架设代理设备,所有的响应报文都在本地完成,只有真正发起请求时才通过链路,相当于同时在服务器和客户端进行
(6)
协议欺骗
TCP协议优化 通过在广域网两端部署专用设备,在不影响基本传输情况下,通过各种手段对TCP窗口、响应、启动等机制进行改进,从而提高协议
(7)
机制的效率
应用层
应用代理(缓存) 将常用的应用程序缓存在本地并配置好,用户可不用在本地等待类似于认证等会话过程,而是直接开始下一个应用,实现流水作业
数据碎片化,就是在应用层将数据分成一个个小的数据块,便于后续的数据比对使用。
广域网加速设备在传输数据前会将缓存中的数据与数据切块进行对比,
从而找出那些数据是重复数据,不再发送,哪些数据是新鲜的、需要传输的数据。
数据压缩和指针技术一般是放在一起使用的,在对数据分段后,会对每一段数据生成一个数据指针,对于重复内容,只传输指针。在压缩算法设计上,要求同时兼顾数据压缩比和压缩/解压缩时间。
高速TCP传输技术
自适应拥塞窗口
有限制地快速重传
连接池:通过维护一个预先建立好的TCP连接池,当有数据传输需求时,从连接池中挑选一条可用连接今次那个传输。
SSL加速技术
SSL加密是一种处理器密集型加密算法,如果用服务器软件处理会消耗大量CPU资源,
一般会在提供业务能力的服务器外围部署专门的SSL加速设备,采用硬解密方式实现
SSL加密分对称秘钥和非对称秘钥(计算资源消耗更大)
SSL的基本原理和实现
可认证性(authentication)
隐私性(privacy)
完整性(integrity)
不可抵赖性(undeniability):发送者不能自称没有发出过接受者从他那里收到的内容
SSL加速
通常是基于硬件的SSL加速
通过在服务器上安装一块SSL加速板卡,可有效分担服务器CPU处理SSL事务的压力
CDN的实现原理
在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:
用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复
由上可见,用户访问未使用CDN缓存网站的过程为:
1)、用户向浏览器提供要访问的域名;
2)、浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
3)、浏览器使用所得到的IP地址,向域名的服务主机发出数据访问请求;
4)、浏览器根据域名主机返回的数据显示网页的内容。
通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。
CDN网络是在 用户和服务器之间增加Cache层,
如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,
下面让我们看看访问使用CDN缓 存后的网站的过程:
使用了CDN缓存后的网站的访问过程变为:
1)、用户向浏览器提供要访问的域名;
2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,
所以解析函数库一般得到的是该域 名对应的CNAME记录,为了得到实际IP地址,
浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡 DNS解析,
如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,
再由缓存服务器向此实际IP地址提交访问请求;
5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,
另一方面把获取的数据返回给客户端,完成数据服务过程;
6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被 加速网站原有的域名即可访问,又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,
下面是CDN网络实现的具体操作过程。
1)、作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;
操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。
2)、作为CDN运营商,首先需要为ICP的域名提供公开的解析,
为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;
3)、当需要进行sortlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,
使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;
4)、由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,
Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;
5)、在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,
而哪些又不进行缓存,以免发生开放代理的情况。
备注:随笔中内容来源于网上资料整理,仅供参考。
CDN技术详解(七)的更多相关文章
- 《CDN技术详解》 - CDN知多少?
开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...
- CDN技术详解及实现原理
CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精 ...
- CDN技术详解笔记
1.影响网络传输的四个因素(1)“第一公里”:网站服务器接入互联网的链路所能提供的带宽.(2)“最后一公里”:用户接入带宽.(3)对等互联关口:不同网络之间的互联互通带宽.(4)长途骨干传输:首先是长 ...
- CDN技术详解
CDN,全称为Content DeliveryNetwork,中文意为"内容分发网络"".通过将网络内容发布到最靠近用户的『边缘节点』,使不同地区的用户在访问相同页面.图 ...
- CDN 技术详解(DNS,GSLB,Cache)
CDN 是什么 CDN(Content Delivery Network,内容分发网络),即全网内容加速服务.为了尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳 ...
- CDN学习笔记二(技术详解)
一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...
- 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型
关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...
- 手游录屏直播技术详解 | 直播 SDK 性能优化实践
在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...
- Protocol Buffer技术详解(数据编码)
Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和J ...
随机推荐
- vue开发微信公众号--开发准备
由于工作项目的原因,需要使用vue开发微信公众号,但是这种微信公众号更多是将APP套了一个微信的壳子,除了前面的授权和微信有关系以外,其他的都和微信没多大的关系了,特此记录 开发流程 首先需要在电脑上 ...
- 启动Nginx、查看nginx进程、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
1.启动nginx的方式: cd /usr/local/nginx ls
- [BZOJ1572] WorkScheduling
中文题目:工作安排 原文题目:Work Scheduling 传送门 本题可以采用贪心 算法一:按工作时间排序,如果工作能按时完成的工作就按时完成,如果工作不能按时完成就把之前价值最小的工作和当前作比 ...
- c++文件拷贝
#include<fstream>void Copyfile( char* FileSource, char* FileItem ){fstream fsCopee( FileSource ...
- appium常见问题04_查看andriod内置浏览器webview版本
方法一:手机上设置中查看 设置-->应用程序管理-->全部-->Android System WebView 方法二:adb指令查看(前提,已安装android sdk环境) 1,w ...
- LightOJ 1418 Trees on My Island (Pick定理)
题目链接:LightOJ 1418 Problem Description I have bought an island where I want to plant trees in rows an ...
- WireShark 自带工具 editcap 和 text2pcap 配合完成改包操作
一.拆包 首先声明这种方法比较复杂而且需要点技术水平,不建议菜鸟尝试(可以使用WireEdit编辑pcap包,不过要联网)其实在熟练这种方法后也可以很快的,但这种方法主要还是方便吧,不用下载其他什么软 ...
- 【Python-Django讲义】针对django的ppt讲义
MCV思想: M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目 ...
- python 装饰器 对类和函数的装饰
#装饰器:对类或者函数进行功能的扩展 很多需要缩进的没有进行缩进'''#第一步:基本函数def laxi(): print('拉屎')#调用函数laxi()laxi() print('======= ...
- 如何让Jmeter压力测试减少压力机的资源消耗
如下是官方的一些建议: 1. 使用非gui模式,例如 jmeter -n -t test.jmx -l test.jtl 2. 尽量用较少的监听器(listeners):如果使用了-l 标致像上面一样 ...