编辑: star薰衣草 | 2019-07-01 |
1、背景介绍 淘宝网的面临的技术挑战 ?? 亚洲最大的电子商务网站,Alexa排名12 ?? 巨大的商品量 C?商品总数超过10亿C?每天在线的商品数超过5亿C?每天更新的商品数超过6000万?? 巨大的访问量 C?每秒钟几百个G的网络流量 C?日PV超过几十亿的业务线很多 淘宝网使用Nginx的过程 ?? 2009年开始使用和探索 ?? 2010年开始开发大量模块 C?基础的 C?业务的 ?? 2011年开始 C?修改Nginx的内核 C?Tengine项目并开源 淘宝网应用Nginx的收益 ?? 业务更加稳定 C?Nginx大连接数目支持非常好 C?Nginx本身的内存占用很少,更不会吃swap ?? 业务性能更高 C?QPS比Apache要好 C?节省机器数目 C?基于Nginx的模块性能往往是之前业务的数倍
2、前端优化 组合JavaScript和CSS文件 ?? Yahoo!前端优化第?一条原则 C?Minimize HTTP Requests C?减少三路握手和HTTP请求的发送次数 ?? 淘宝CDN combo C?concat模块 C?将多个JavaScript、CSS请求合并成?一个 淘宝CDN Combo的使用 ?? 以两个问号(??)激活combo特性 ?? 多个文件之间用逗号(,)分开 ?? 用?一个?来表示时间戳 C?突破浏览器缓存 ?? 例子 http://a.
tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/global/1.0/global- min.js,p/et/et.js?t=2011092320110301.js 强制gzip压缩 ?? 来自Google的最佳实践 C?
2009、2010年Velocity大会 ?? 做强制gzip的原因 C?代理软件、杀毒软件对Accept-Encoding头的 修改或去除 C?访问淘宝的请求>
15%没有带Accept- Encoding头 强制gzip的基本原理 ?? 如果请求中没有Accept-Encoding头或不 支持gzip且没有GZ的cookie设置 ?? 判断浏览器(User-Agent)是否支持gzip ?? 发送的内容中插入JavaScript脚本 ?? 脚本请求?一个永远都gzip的URL ?? 如果gzip的内容被执行了,说明支持gzip ?? 设置GZ对应的cookie值,注明支持gzip
3、安全增强 单机安全方案 ?? 连接数限制 C?使用limit_conn模块 ?? 访问频率限制 C?加强版的limit_req模块 ?? 白名单支持 ?? 指定跳转页面支持 ?? 同?一个location下多limit_req支持 系统过载保护 ?? 判断依据 C?系统的loadavg C?内存使用(swap的比率) C?QPS ?? sysgurad模块 sysguard on;
sysguard_load load=4 action=/high_load.html;
sysguard_mem swapratio=10% action=/mem_high.html 过载保护的等待页面 ?? 过载处理方式 C?直接弹回(用户不友好,而且没有保护作用) C?返回等待页面(用户友好,有保护) ?? 等待页面的处理 C?将用户原来的请求内容返给用户(脚本) C?定时器倒计时 C?时间到了自动发起新的请求 分布式防攻击系统 ?? 应对的问题 C? 小型的DDoS攻击 C? 恶意的爬虫 ?? 为什么单机版还不够 C? 单机版无法知道全局 ?? 淘宝TMD(Taobao Missile Defense)系统 C? Nginx作为防攻击系统的终端 C? TMD Server做策略分析 C? TMD Console执行汇总和控制台 TMD防攻击系统架构 TMD Console TMD Server Nginx TMD模块Nginx TMD模块TMD Server Nginx TMD模块Nginx TMD模块
4、典型业务模块 Comet服务器 ?? Nginx本身的极限测试 C?单机支持200万连接以上 ?? 淘宝消息推送系统 C?部署容量60万连接/台C?实际跑到30万连接/台Comet服务器架构 集群(N gi nx) LB 2(LV S/N A S) 接ID /IP映射表(Cache) 控(ZooK eeper) 消息推送集群 消息中?心(M C) 消息推送(H SF) ?用 消息推送(TCP) 源地址H A SH 登IP ?心跳 机器列?表 ?用所机器IP LB 1(LV S/N A S) 源地址H A SH 灰度发布 ?? 逐渐放量 ?? 方便的管理接口 用户Pc Jboss-buy-A Jboss-buy-B tair 名单 管理员 后台应用 (tradeadmin) 编辑策略配置 名单写入 Nginx/apache Model 解析abCookie,IP URL,nickCookie 写用户的abcookie 策略?配置 非灰度 灰度 是否在名单中 推送到model 淘宝开源分布式文件系统方案 ?? TFS模块 C?非upstream机制 C?RESTful接口 C?简化了分布式存储方案的使用难度 淘宝开源分布式K/V存储方案 ?? Tair模块 C?非upstream机制 C?RESTful接口 ?? 特点 C?性能很高 C?灵活 C?返回JSON格式给客户端