网站大量收购闲置独家精品文档,联系QQ:2885784924

[互联网]Tengine+淘宝开源+Web+服务器.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[互联网]Tengine淘宝开源Web服务器

Tengine 打造高效、稳定、安全、易用的平台 姚伟斌(文景) 代讲 朱照远(叔度) 2012-10-20 大纲 背景介绍 应用案例分析 开发与定制 当前工作 1、背景介绍 Nginx简介 Web服务器、HTTP反向代理和邮件代理服务器 俄罗斯程序员Igor Sysoev于2002年开始 全球使用量排名第三 2011年成立商业公司 特点 性能非常高 资源占用(CPU、内存)非常节省 内存池设计,非常稳定 高度模块化,易于扩展 淘宝网使用Nginx的过程 2009年开始使用和探索 2010年开始开发大量模块 通用的 业务的 2011年开始 修改Nginx的核心代码 启动Tengine项目并开源 2012年Apache全部替换为Tengine 淘宝网应用Nginx的收益 业务更加稳定 Nginx大连接数目支持非常好 Nginx本身的内存占用很少,不会吃swap 业务性能更高 QPS比Apache要好 节省机器数目 基于Nginx的模块性能往往是之前业务的数倍 有效抵御DDOS攻击 2、应用案例分析 Web接入层 Nginx的职能 SSL卸载 七层接入管理 安全防御 负载均衡 灰度发布 静态资源 动态内容的静态化 Cache组2 Cache组3 Cache组1 App App App App Cache checker 把所有能cache的内容都cache住 主动删除cache 大用户群消息推送 Comet服务架构 部署容量 60万连接/台 运行数据 30万连接/台 日志收集与统计系统 功能(可看成私有的Google Analytics) JavaScript埋点 收集日志 分析统计信息 实现 Nginx模块 分布式传输系统 Hadoop上运行MapReduce统计 性能 小几十台机器一天几十亿PV 单机处理能力4万QPS RESTful接口层 RESTful接口支持(准备开源) TFS 分布式文件系统,类似于GFS Tair 分布式K/V存储系统 简化应用开发 可返回JSON格式直接让浏览器处理 从而不必在服务器端渲染页面 分布式防攻击系统 功能 抵挡中小型的DDoS攻击 可以封禁IP、Cookie 限流 提供验证码服务 淘宝TMD(Taobao Missile Defense)系统 Nginx作为防攻击系统的终端,实时发送日志给Server TMD Server做策略分析 TMD Console执行汇总和控制台 TMD系统架构图 3、开发与定制 动态加载模块 Nginx核心代码静态编译 功能模块动态编译成so文件 ./dso_tool --add-module=/path/to/lua-nginx-module 好处 核心模块跟功能模块去耦合,不必一起编译 对于包管理系统来说,不再需要N多包 修正某个模块,只需编译相应模块 动态加载模块使用 使用方法 dso { load ngx_http_lua_module.so; load ngx_http_memcached_module.so; } 动态库比静态代码性能差? Wangbin: ngx_lua模块思想 引进动态脚本语言Lua Lua语言强大且简单 适合嵌入 支持协程(coroutine) 价值 用同步的语义来实现异步的调用 ngx_lua原理 每个Nginx工作进程使用一个Lua VM,工作进程内所有协程共享VM 每个外部请求都由一个Lua协程处理,协程之间数据隔离 Lua代码调用I/O操作接口时,若该操作无法立刻完成,则打断相关协程的运行并保护上下文数据 I/O操作完成时还原相关协程上下文数据并继续运行 ngx_lua原理 代码示例 location /http_client {     proxy_pass $arg_url; } location /web_iconv {     content_by_lua         local from, to, url = ngx.var.arg_f, ngx.var.arg_t, ngx.var.arg_u         local iconv = require iconv         local cd = iconv.new(to or utf8, from or gbk)         local res = ngx.location.capture(/http_client?url= .. url)         if res.status == 200 then             local ostr, err = cd:iconv(res.body)             ngx.print(ostr)         else             ngx.s

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档