Fikker 反向代理服务器技术白皮书V3.doc
《Fikker 反向代理服务器技术白皮书V3.doc》由会员分享,可在线阅读,更多相关《Fikker 反向代理服务器技术白皮书V3.doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流Fikker 反向代理服务器技术白皮书V3.精品文档.Fikker反向代理服务器技术白皮书V32011-02-20 目录:1. 系统说明2. 全非阻塞(non-block)网络设计2.1. 全非阻塞设计说明2.2. 网络负载均衡设计说明2.3. 图例说明3. 缓存设计3.1. 缓存说明3.2. 智能缓存设计3.3. 强制缓存设计3.3.1. 公共缓存3.3.2. 会员缓存3.3.3. 游客缓存3.3.4. 会员缓存设计背景3.3.5. 图例说明3.4. 拒绝缓存设计3.5. 清理缓存设计3.6. 缓存优先级设计3.7. 页面匹配规则设计3.8
2、. 缓存页面淘汰算法设计3.8.1. 缓存页面淘汰说明3.8.2. 缓存页面淘汰优先级3.8.3. 同一优先级时淘汰规则3.9. 页面压缩gzip设计3.9.1. 说明3.9.2. HTTP头中有关gzip压缩的字段3.9.3. 页面压缩的实现4. URL转向设计4.1. URL转向简介4.2. 转向逻辑4.3. 简单举例5. 防盗链设计5.1. 防盗链说明6. 黑名单设计6.1. 黑名单说明7. 代理设计7.1. 代理介绍7.2. 负载均衡策略7.3. 负载均衡图例8. 流量统计设计8.1. 流量统计说明8.2. 总量统计8.3. 分量统计9. 实时监控设计9.1. 实时监控说明10. Wi
3、ndows 和Linux 兼容性设计10.1. 绿色安装包10.2. Fikker 的运行权限10.3. 配置文件兼容性11. 关于Fikker限制的说明11.1. 内存限制11.2. 连接数限制11.3. HTTP 头尺寸限制11.4. 缓存页面尺寸限制11.5. 操作系统限制12. Fikker 与 HTTP 头13. 关于Fikker返回错误页面的说明13.1. 400 Bad Request13.2. 403 Forbidden13.3. 409 Conflict13.4. 502 Bad Gateway13.5. 503 Service Temporarily Unavailable
4、1. Fikker 说明Fikker 是一款跨平台(支持Windows和Linux)的专业级网站加速服务器软件,其一是:通过将指定的动态页面进行缓存,用户的访问页面可直接从缓存中直接获取,节省网站生成页面的时间,从根本上减轻数据库压力,极大提升网站的响应速度;其二是:通过对缓存页面的gzip压缩,减少传输时间提升传输效率来实现加速。Fikker 通过对网络的全非阻塞化(non-block)处理,对多核心多线程充分高效的并行化处理,缓存的全内存化处理,达到系统最大化的处理性能。Fikker 网络实现了全部非阻塞化(non-block)处理,包括 Fikker 接收数据非阻塞,发送数据非阻塞,域名
5、解析非阻塞。全面支持 Linux 2.6.x 内核 epoll 消息机制。单个端口支撑 60000 个并发连接,极少到可忽略不计的 CPU 占用。Fikker 是源站(网站)前置机,是放在源站(网站)前面的服务器。用户使用浏览器访问的时候,用户的访问请求首先会被 Fikker 接收并处理。如果命中缓存,就会返回浏览器已缓存页面,如果没有命中缓存页面或缓存页面已经超时,Fikker就会将用户的访问请求转发到源站(网站),从源站获取最新的页面返回给用户,同时还会根据缓存规则判断是否允许缓存此页面,如果缓存规则允许缓存此页面,Fikker 会将此页面使用gzip压缩后缓存在内存中,其他用户再访问相同
6、页面时候,就会将已缓存页面立即返回给用户。此过程除对日志进行必要记录外,页面缓存过程不读写任何硬盘。Fikker 还同时提供URL转向功能(包括伪静态功能实现),防盗链功能,代理功能,负载均衡,黑名单,流量统计和实时监控的功能。对网站提供了优化、监控、缓存、负载均衡,实时流量监控,隔离安全和黑名单,伪静态规则(SEO)等一站式解决方案,是站长们必不可少的看家武器。Fikker让您的网站飞起来。2. 全非阻塞(non-block)网络设计2.1. 全非阻塞设计:网络非阻塞设计是 Fikker 整个架构的重点设计,也是网络设计最核心的设计,要求使用几个有限的线程即可承载上万并发连接,并且每一个服务
7、请求都不会被阻塞,立即响应。例如:用户发起连接请求时,Fikker 在工作中能立即接受(accept)到(而不是线程一直阻塞直到accept函数返回),并且立即进入服务队列;同样子的道理,Fikker 向源站(网站)发起连接请求时,在同一个线程中,要求域名解析时,线程是非阻塞的(而不是等待域名解析好后函数返回,这样子整合线程都会被阻塞),解析好的域名和IP地址通过回调函数的方式通知本线程,建立连接(connect)时,也是线程非阻塞的,建立好的连接通过回调的方式通知给应用程序,这样子当拥有上万连接高效服务时,只需要几个线程即可满足需求,而且每个请求都可以做到立即响应。Linux下面 epoll
8、 机制提供一种高效的网络设计,理论上最少只需要1个线程即可满足不限并发连接的需求,通常情况下,为了配合 CPU 的并行度(多CPU负载均衡),Linux下网络线程的数量可以设定为 CPU 核心的数量。Windows 下1个线程最大可满足 1000 个并发连接的即时处理(20个线程最大可并发处理2万个并发连接,单个端口最大服务6万个并发连接)。2.2. 网络负载均衡设计:同时在几个线程中高效处理上万并发时,需要调节线程之间的连接数,使 CPU处理功效能被均衡负载,这就要求网络连接的数据发送和数据接收能够在线程之间迁移,线程之间负载按照连接数均衡。Slave 从线程:(1)、创建固定数量的 Sla
9、ve 线程,在 Windows 下每个 Slave 线程最大可并发 1000 个用户连接(connection),在 Linux 下每个 Slave 线程并发连接数没有限制;(2)、全非阻塞(non-block)方式调度:创建远程连接(connect),接收(recv)数据、发送(send)数据、定时中断(timer)、域名解析(resolve)和发送成功(done)中断回调事件;(3)、全面管理用户连接对象的导入和导出。Master 主线程:(1)、按连接数对每一个 Slave 线程负载均衡;(2)、全非阻塞(non-block)方式接受(accept)远程用户的连接请求;(3)、将建立的连
10、接(connection)按照负载均衡规则导出给 Slave 线程。2.3. 图例说明:3. 缓存设计3.1. 缓存说明在 Fikker 系统中,缓存设计分为:智能缓存设计,强制缓存设计,拒绝缓存设计。按照缓存存储模式分为:公共缓存,会员缓存,游客缓存。缓存页面(html,asp,aspx,php,jsp,js,css等)被 gzip 压缩后以平衡二叉树的索引结构存放在内存中,不对硬盘进行任何读写(日志除外)。当加速缓存中的页面被访问命中以后,通过gzip压缩传输方式返回给浏览器。以上处理方式有如下好处:(1)、不读写硬盘,通过内存进行数据交换会极大的提高页面相应速度;(2)、文本页面数据经过
11、 gzip 压缩后存储,即减少了对内存空间的需求,也会极大的减少数据传输量,从整体上提高响应速度和传输效率。3.2. 智能缓存设计(1)、Fikker 已默认内置此功能,用户无需对此进行额外设置,智能缓存的页面储存在公共缓存中,允许所有用户访问。(2)、Fikker 根据 HTTP 协议头 Cache-Control,Pragma,Date和 Expires 字段中的缓存控制属性进行缓存的(包含缓存时长),部分网站可以通过对 HTTP 编程的方法来自行调整智能缓存策略。(3) 、Fikker 应用的智能规则如下:用户 Request 请求时用到 Cache-Control:| max-age
12、= seconds -忽略| max-stale = seconds -忽略| only-if-cached -忽略| no-transform -忽略| min-fresh = seconds -忽略| cache-extension -忽略| no-cache -是否启用缓存? 配置选项| no-store -是否启用缓存? 配置选项源站Response返回时用到 Cache-Control:| max-age = seconds -缓存| s-maxage = seconds -缓存| public -缓存| private = field-name -不缓存| no-cache = f
13、ield-name -不缓存| no-store -不缓存| must-revalidate -不缓存| proxy-revalidate -不缓存| cache-extension -忽略| no-transform -忽略Fikker 对此处理如下:max-age最大缓存有效期,从获得 Response 报头开始计算缓存有效期。s-maxage最大共享缓存有效期,与 max-age 处理规则相同。public缓存,而且是永久缓存,从获得 Response 开始,开始永久缓存。private私有缓存控制,不能当作公共缓存对待,只针对某一个用户的请求缓存有效,但在 Fikker 中我们不将其缓
14、存。no-cache非缓存标识,浏览器的请求都需要源服务器响应,Fikker不缓存任何数据。no-store非缓存非存储标识,Fikker不缓存不存储。no-transform允许缓存,但不得改变源服务器返回的内容的格式,例如图片格式,文档类型等,Fikker不缓存。must-revalidate允许缓存,但浏览器访问时候,Fikker需要向源服务器提请验证,验证源内容有无修改,Fikker 不缓存。注:参看rfc2616,章节:14.9 Cache-Control,页码:Page 108用户Request 请求时用到 Pragma:| no-cache -不启用缓存源站Response 返回
15、时用到 Pragma:| no-cache -不缓存源站Response 返回时用到 Expire 和 Date:Expires - Date = 缓存有效期 -缓存避免冲突策略:当HTTP报头中同时设置有 Expire,Pragma,Cache-Control字段时,优先权顺序为 Cache-Control Pragma Expire。这个优先策略可以参看 rfc2616,章节13.1.3 Cache-control Mechanisms,页码 Page 77,章节 14.9 Cache-Control,页码 Page 108,章节 14.9.3 Modifications of the B
16、asic Expiration Mechanism,页码 Page 111。3.3. 强制缓存设计(1)、通过页面缓存配置将指定的页面添加到加速缓存中,浏览器远程访问这个页面时,Fikker将直接返回已缓存的页面,最大限度的减轻网站和网站数据库负荷。(2)、缓存的页面能够被周期性更新,周期性间隔时长由用户自行设定,可以是几秒钟,几分钟甚至是几百个小时。(3)、文本缓存页面将被 gzip 压缩存储和传输,文本页面(asp,php,jsp,aspx,js,css,txt等)被压缩传输时,相对于非压缩传输,占用的带宽将减少 70% 以上。举例:一个 500KB 的文本页面,被压缩以后为 110KB
17、左右,减少带宽消耗 75% 左右,在大量并发访问时,会节省大量的带宽损耗。(4) 、动态页面(asp,php,jsp,aspx等)被加速缓存后,当网站被大量并发访问时,由于没有了数据库数据读写(硬盘读写)瓶颈,整体上能够提升页面的响应速度。Fikker 页面缓存由 公共缓存 和 会员缓存 和 游客缓存 组成。(Fikker 页面缓存 = 公共缓存 + 会员缓存 + 游客缓存)3.3.1. 公共缓存页面被缓存后,所有用户都可访问,是最简单的页面缓存模式。应用于网站上的大部分图片,JS脚本,CSS文本,静态页面html等所有开放的页面内容。3.3.2. 会员缓存页面被缓存后,只有登录用户才可以访问
18、,针对会员访问加速。很多社交网站 SNS,社区论坛BBS,电子商务B2C,办公OA等均可通过此模式实现会员访问加速。3.3.3. 游客缓存页面被缓存后,只有游客用户才可以访问,对非登陆用户生效,已登录的用户不能访问。3.3.4. 会员缓存 - 设计背景:一些社交(SNS),论坛(BBS),新闻(News),博客(Blog),电子商务(B2C,C2C)类网站,登录用户(会员)和非登录用户(游客)看到的网站页面内容可能是不同的,部分页面中包含的内容只有用户登陆后才能查看,即便是相同的页面链接地址URL,登录用户(会员)和非登录用户(游客)分别请求时,请求到的页面内容是不完全相同的。为了达到加速的目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fikker 反向代理服务器技术白皮书V3 反向 代理服务器 技术 白皮书 V3
限制150内