Traffic Server 介简
淘宝网 -- 核心系 研 :千石统 发
qianshi@taobao.com
http://www.flyinfo.net
Agenda
• 功能概览
• 架构 & 模型
• Plugin 开发
• 配置 CDN
TS 何物为
• Apache Traffic Server™ is fast, scalable and
extensible HTTP/1.1 compliant caching proxy
server.
回首 去过
功能概览
• web 代理 存缓
• 反向代理
• 多 存级缓
存命中缓
存未命中缓
反向代理
多 存级缓
并发问题
• C10k
– http://www.kegel.com/c10k.html
• C10k-C500k
– http://www.dbanotes.net/arch/c10k_c500k.html
• C1000k
– http://www.slideshare.net/mryufeng/c1000k
• 解决之道
– 步事件 理异 处
– CPU 多核支持
步事件 理异 处
CPU 多核支持
架构
• 多 程 步状 机线 异 态
– 每个 听端口 建监 创 accept 程线
– 每个 core 分配 2-3 个 程线
– 独立的 程 理 控和日志线 处 监
– 每个活 的 求 持状 机跃 请 维 态
• 支持 Plugins
– 在状 机的不同 段 行态 阶 进 Hook
– 其他 的支持(协议 NNTP, streaming, FTP )
架构
架构
程模型线
同类比较
ATS HAProxy nginx Squid Varnish
Work Threads  X X X 
Multi-process X #

#

Event-driven     X
Plugin APIs  X # # #
Forward proxy  X X  X
Reverse proxy     
Transp. proxy #
   X
Load Balancer     
Cache  X   
ESI  X X  
ICP  X X  X
Keep-Alive  X   
SSL  X   X
Pipeline  X   X
Plugin 开发
Plugin 例子
Http 状态转换 Hook
Http 状态转换 Hook
配置 CDN
CONFIG proxy.config.http.server_port INT 80
CONFIG proxy.config.reverse_proxy.enabled INT 1
CONFIG proxy.config.url_remap.remap_required INT 1
map http://cdn.example.com/img http://img.example.com
reverse_map http://img.example.com http://cdn.example.com/img
map http://cdn.example.com/js http://js.example.com
reverse_map http://js.example.com http://cdn.example.com/js
map http://cdn.example.com/css http://css.example.com
reverse_map http://css.example.com http://cdn.exampe.com/css
records.config
remap.config
更多信息
• http://www.flyinfo.net/category/traffic-
server/
参考文献
• https://cwiki.apache.org/TS/traffic-
server.html
• Traffic Server Meetup, ApacheCon 2009.
• Leif Hedstrom, Apache Traffic Server - HTTP
Proxy Server on the Edge, Velocity 2010.
• Leif Hedstrom, Driving Apache Traffic Server,
OSCON 2010.
Thank you!
Any question?

Traffic server overview

Editor's Notes

  • #9 正向代理发送包含完整URL的代理请求; 反向代理发送指定路径的服务器请求。
  • #12 缺点: 1.只支持单核; 2.一个事件处理函数处理过多事件导致延迟; 3.对CPU密集型的处理会导致挂起事件的饥饿。
  • #13 缺点: 1.资源竞争导致的死锁; 2.线程调度和切换带来的开销。
  • #15 VC: Virtual Connection Contination: state machines Action: operation
  • #16 底层都是静态库的形式提供。 libinkcache.a libinkblockcache.a libTrafficServerStandalone.a libinkdns.a libinkcluster.a libinkutils.a libinkevent.a libinkaio.a libreclocal.a librecprocess.a libinknet.a libinktomi++.a