实例介绍
traffic server一般作为cdn proxy使用,文档中包含了大量的traffic server内容,包括源码分析,以及一些插件开发;
Range并发请求37 Disk 40 更新 cache40 Cache模块读写模块40 对象存储机制40 磁盘布局41 索引格式41 存储格式42 读写逻辑42 小文件写43 大文件写44 小文件读45 大文件读46 读逻辑程序分析46 逻辑图46 Open Dir::open_read 47 dir_probe 48 Cache: open read 49 CacheVC:: open ReadFromWriter 49 CacheVC: handleRead 50 Cachevc: handleReadDone 50 Cachevc:: open Readstarthead 52 CachevC:: open ReadstartEarliest 52 CachevC:: open ReadMain 52 CacheVC.: open ReadRead Done 53 写逻辑程序分析54 Raw disk Layout in ATs 54 写 Cache头部58 CacheVC:: openWriteCloseHead 58 CachevC:: update Vector 58 Cachevc:: openWritecloseheadDone 58 CacheVC:: open WriteCloseDir 59 Vol: close write 59 写 Cache数据59 Cache: open write 59 CachevC:: open Write Main 60 agg_copy 60 Vol: agg Write 60 Vol: aggWriteDone 60 CacheVC:: open WriteWrite Done 60 CacheVC: open Write CloseData Done 61 写 Cache索引61 CachevC: open WriteCloseHeadDone 61 CacheVC: open Close Dir 61 网络61 IOCoreNet模型61 PollDescriptor 62 EventIo 63 PollCont 64 IOBuffer 64 ⅥIo67 Nethandler 68 main NetEvent 70 read from net 71 write to net io 71 ready队列72 UnixNet∨ onnection74 net read io 74 do io read 75 do io write 75 do io close 75 do io shutdown 75 NetAccept 75 Inactivity Cop 76 多线程异步even处理78 EventProcessor 79 EThread 79 Event 80 线程执行函数82 调度单元85 Epo川!程86 插件89 基础89 Mutexes 92 ⅥIO92 Transformations 92 插件编译与测试95 Range插件95 背景95 官方插件95 backgroud fetch插件96 cache range requests插件97 程序架构98 设计方案100 程序101 忽略参数插件102 缓存时间插件104 Purge目录插件107 目录刷新插件( purge directory)109 描述109 功能109 实现109 风险111 回源host插件111 Slice range插件111 Ngin×的 slice模块111 trunk 113 Slice_range插件114 基础 ATS目录 trafficserver-4.2.2 l--build I--cmd traffic cop//负责监痊 traffic server和 traffic_manager工作情况 |- traffic ine//命令行工具,查询和 reload配置文 件,重启和清空单件或集群数据 traffic shell//she面工具 traffic shell traffic_top //服务器状态工具 1--contrib I--doc //参考文档资料,SDK - example//插件例子 score |-aio//异步IO实现 cache/缓存文件系统,磁盘和内存 cache cluster /集群通信系统,解决数据交互协议RPC dns /DNS解析功能代码 |-- eventsysten/事件系统,实现调度机制和bufr 管理 - hosta/DNS缓存系统 net /网络层处理框架 utils lib /ATS基础库,源自 Inkton++ 1-mgmt//负责 traffic serve的启动、配置文件更新 管理工作 1--api cluster prepare 1--stats I|--utils web2 - plugins//核心插件 -proⅹy/ATs的业务处理服务器,包括服务器、回归 测试、初始化 cache系统三大功能块 I-- api 1--config congest 1|--hdrs 1|--http 1--logging I|--shared tests rc //int脚本 self tools/性能测试工具 ATS是多线程异步事件处理模型, traffic cop和 traffic manager是管理进程, traffic server是主要业务进 程,负责代理和缓存功能,进行事件 Listeη,acceρt和处理 sessIon。 Traffice serve不是每个连接都建立一个线程,而是 创建可配置的工作线程,每个线程运行着独立的异步事件处理 程序。 Thread通过执行Even对应的 Continuation中的回调函 数,来完成状态迁移,从开始状态到结束状态代表一个事件的 执行过程, Thread不退出,等着下一个事件的到来。 cache系统对比 1冮对比 ATS q山id War nish Rnr"se Primy Formard Frary N Iren中pPx Pgin鸟Fs paaraN Cache Y FSI artie ICP 5-厂r 2.辗胥对比 涅过期草法 A152. TrF Seri漫巾别匆祸Cm思,C即g2ehd.Pne配h.l题Ft腰|H感盘+卖白 摩勲操库遗明兰轨1每完引对豪。C= 可以喜可一个约冒。当子作早, 诵博涂讨扩风的热觉右有效.贴冲飞极算 2,T8f:H!脑血坏时,会已六醒启被占雨s读,「:*有的算 F是下的些,而酐邮坏了。鬼白度 15算止-罨汽宦眈算!阳:汽有间 换为单笔代口畏亠 小客作冒x氤T选,冒单 三Tamz谁己区一个向对愈的南型F午。 ud2.。产國机酬 CcrF叫命 nt pol lc Ir凵 阿 2.A,d表H1,与一别在于心是板 fun I aint Flit IHiE qui主装行 lsie,干a感续外部程来快行丙可于1.H,属久末使用算法,喉 ,t适边臣,dt用对空和26F,贪建对铝大小京 亭辛江现冈事问通暂 s.LHUU,渤而景久末H 二,浸古基上怍额书的pi 」m甲!;c乍阳!个六言件主開和有 五,包用昇*写作 r咖|,II遇过nce网午。 启以睿幺由走一 内矿愴 温.↑|啁↓阡,通计二分汁瑟时四人 以醞 反向代理(路由加速,隐藏主节点) HAproxy Nginx Varnish ats Squid 缓存加速(静态加速,节省带宽,边缘推送) ats> Varnish Squid> Nginx > HAproxy 防御功能〔快解析,过滤匹配) HAproxy> Nginx ats> Squid >Varnish 性能比较 Ats在不使用插件的情况下,性能能够达到10 w gps; coSs储机制 coss存储机制 基于ufs的存储机制都有一个缺点,就是频繁的系统调用read()与 unlink(), squid引λcos存储机制来解决这个问题,coss存储机制 与 trafficserver的存储机制在设计思想上比较接近,只是在实现上各 不相同。 (1)coss以一个 stripe为单位,向 cache上写入数据,而 trafficserver以一个 agg buffer为单位,默认 stripe单位1M,而 agg_ buffer单位为4M。Coss每次都是刚刚好写 stripe大小的缓存内 容至 cache,而 trafficserver每次写[ agg buffer/2,agg_ buffer) 范围内的缓存内容,所以coss每次都是1M写,而 trafficserver每次 都是2M或者2M以上写。 (2)在coSS机制中, file number与 block number是相同的。 block size的大小以及 squid的 file number的位数决定了一个 cache dir的上限。比如假设 file num be为24位, block size为 512 bytes,则一个 cache din最大可配置8G。在coss中,知道一个 objec对应的 file number后,就能够在 trafficseryer中,没有fie number以及 block numbe这种概念,一个 object被写至当前位 (3)coss的设计不支持任意大小文件读写,而 trafficserver可 squid的coss机制 coss的工作原理:循环目标存储机制( Cyclic object Storage Scheme,coss)尝试为squi定制一个新的文件系 统。在磁盘上,每个 coss cache_dir是一个大文件。文件大小 直增加,直到抵达它的大小上限。 squid实际上并不立刻写新 的目标数据到磁盘上。代替的,数据被拷贝进1MB的内存缓冲 区,叫做 stripe。在 stripe变满后,它被写往磁盘。CoSs使用异 步写操作,以便 squid主进程不会在磁盘I/O上阻塞。 像其他文件系统一样,Coss也使用块大小概念 coss块大小在 cache dir选项中配置。块大小决定了coss缓存目录 的最大sze:size=块大小X(2的24次方)。例如,对512字节的 块大小,你能在 coss cache dir中存储8GB数据。 编译选项 %o/configure --enable-storeio=ufs, COSs coss缓存目录要求maX-sze选项。它的值必须少于 stripe大小(默 认1MB,但可以用-- enable-coss- membuf-size选项来配置)。也 请注意你必须忽略L1和L2的值,它们被ufs基础的文件系统使用。如 下是示例 cache dir coss cacheo/coss 7000 max-size=1000000 block-size=2048 ats的coss机制 每个vo对应一个 agg. buffer: 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论