logo资料库

我在京东写的traffic server笔记.pdf

第1页 / 共162页
第2页 / 共162页
第3页 / 共162页
第4页 / 共162页
第5页 / 共162页
第6页 / 共162页
第7页 / 共162页
第8页 / 共162页
资料共162页,剩余部分请下载后查看
Apache traffic server 源码分析 Write by王锋 2016.10
⽬目录 基础 6 ATS ⽬目录 6 cache系统对⽐比 7 coss存储机制 8 关键数据结构 9 CacheKey 9 Dir 11 VolHeaderFooter 11 bucket存储OpenDirEntry 12 Continuation 12 Event 13 CacheVC 13 其他关键字 13 Proxy 15 HTTPS 15 HTTP2 16 Tunnel 16 Etag header 17 Cache概要 22 Cache 体系 22 索引查找规则 24 Doc 24 CacheHTTPInfoVector 27 多副本的读取 29 Cache内容副本 30 Trunk 30 evacute机制 31 合并回源分析 33
Range并发请求 37 Disk 40 更更新cache 40 Cache 模块读写模块 40 对象存储机制 40 磁盘布局 41 索引格式 41 存储格式 42 读写逻辑 42 ⼩小⽂文件写 43 ⼤大⽂文件写 44 ⼩小⽂文件读 45 ⼤大⽂文件读 46 读逻辑程序分析 46 逻辑图 46 OpenDir::open_read 47 dir_probe 48 Cache::open_read 49 CacheVC::openReadFromWriter 49 CacheVC::handleRead 50 CacheVC::handleReadDone 50 CacheVC::openReadStartHead 52 CacheVC::openReadStartEarliest 52 CacheVC::openReadMain 52 CacheVC::openReadReadDone 53 写逻辑程序分析 54 Raw Disk Layout in ATS 54 写Cache头部 58 CacheVC::openWriteCloseHead 58 CacheVC::updateVector 58
CacheVC::openWriteCloseHeadDone 58 CacheVC::openWriteCloseDir 59 Vol::close_write 59 写Cache数据 59 Cache::open_write 59 CacheVC::openWriteMain 60 agg_copy 60 Vol::aggWrite 60 Vol::aggWriteDone 60 CacheVC::openWriteWriteDone 60 CacheVC::openWriteCloseDataDone 61 写Cache索引 61 CacheVC::openWriteCloseHeadDone 61 CacheVC::openWriteCloseDir 61 ⽹网络 61 IOCoreNet模型 61 PollDescriptor 62 EventIO 63 PollCont 64 IOBuffer 64 VIO 67 NetHandler 68 mainNetEvent 70 read_from_net 71 write_to_net_io 71 ready队列列 72 UnixNetVConnection 74 net_read_io 74 do_io_read 75 do_io_write 75
do_io_close 75 do_io_shutdown 75 NetAccept 75 InactivityCop 76 多线程异步event处理理 78 EventProcessor 79 EThread 79 Event 80 线程执⾏行行函数 82 调度单元 85 Epoll线程 86 插件 89 基础 89 Mutexes 92 VIO 92 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 Nginx的slice模块 111 trunk 113 Slice_range插件 114 基础 ATS ⽬目录 trafficserver-4.2.2 |-- build |-- cmd | |-- traffic_cop //负责监控traffic_server和 traffic_manager⼯工作情况 | |-- traffic_line //命令⾏行行⼯工具,查询和reload配置⽂文 件,重启和清空单件或集群数据 | |-- traffic_shell //shell界⾯面⼯工具 traffic_shell | `-- traffic_top //服务器器状态⼯工具 |-- contrib |-- doc //参考⽂文档资料料,SDK |-- example //插件例例⼦子 |-- iocore | |-- aio //异步IO实现 | |-- cache //缓存⽂文件系统,磁盘和内存cache
| |-- cluster //集群通信系统,解决数据交互协议RPC | |-- dns //DNS解析功能代码 | |-- eventsystem //事件系统,实现调度机制和buffer 管理理 | |-- hostdb //DNS缓存系统 | |-- net //⽹网络层处理理框架 | `-- utils |-- lib //ATS基础库,源⾃自Inktomi++ |-- mgmt //负责traffic_server的启动、配置⽂文件更更新 管理理⼯工作 | |-- api | |-- cluster | |-- preparse | |-- stats | |-- utils | `-- web2 |-- plugins //核⼼心插件 |-- proxy //ATS的业务处理理服务器器,包括服务器器、回归 测试、初始化cache系统三⼤大功能块 | |-- api | |-- config | |-- congest | |-- hdrs | |-- http | |-- logging | |-- shared | `-- tests |-- rc //init脚本 |-- self `-- tools //性能测试⼯工具
ATS是多线程异步事件处理理模型,traffic_cop和 traffic_manager是管理理进程,traffic_server是主要业务进 程,负责代理理和缓存功能,进⾏行行事件Listen,accept和处理理 session。Traffice server不不是每个连接都建⽴立⼀一个线程,⽽而是 创建可配置的⼯工作线程,每个线程运⾏行行着独⽴立的异步事件处理理 程序。Thread通过执⾏行行Event对应的Continuation中的回调函 数,来完成状态迁移,从开始状态到结束状态代表⼀一个事件的 执⾏行行过程,Thread不不退出,等着下⼀一个事件的到来。 cache系统对⽐比
分享到:
收藏