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