基于Nginxlua的高性能web范例.pptx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Nginx/lua的高性能web 于连宇 2016-07-01 议程 演示 Lua Nginx-lua 资料 演示 脚本 Nginx Hello world Redis Mysql 与其他HTTP服务连接 议程 演示 Lua Nginx-lua 资料 Lua luaJIT 语言 Table Function Coroutine Metatable/metamethod 嵌入式Lua执行流程 宿主建立lua解释对象 宿主提供的api 注入Lua解释器 读入lua代码 执行 编译成二进制则引导执行 Lua jit 编译成二进制代码 location = /lua-version { content_by_lua if jit then ngx.say(jit.version) else ngx.say(_VERSION) end ; } table haoel = {name=ChenHao, age=37, handsome=True} for i=1, #arr do ????print(arr[i]) end for k, v in pairs(t) do ????print(k, v) end 函数 闭包 function myPower(x) ???return function(y) return y^x end end 多返回值 name, age, bGay = haoel, 37, false, haoel@ 进程、线程、协程 coroutine协程 coroutine 有4个不同的状态: suspended, running, dead, normal co = coroutine.create(function () for i=1, 10 do print(co:, i) coroutine.yield() end end) coroutine.resume(co) print(coroutine.status(co)) 继承 metatable local mytable = {key2 = value2} local ss = {key1 = value1}; function ss.hello() print(hello) end setmetatable(mytable, {__index = ss}) metamethod 议程 演示 Lua Nginx-lua 资料 Nginx-lua Nginx进程模型 Nginx网络模型 Ngx-Lua执行阶段 Openresty api Nginx进程模型 nginx采用多进程,单Master多Worker Master处理外部信号,配置文件以及worker的初始化 worker进程采用单线程,非阻塞(epoll)来处理客户端请求和响应 Nginx网络模型 同步 异步 阻塞 非阻塞 Ngx-lua原理 Nginx work process共享一个lua vm IO原语直接注入lua vm 每个请求开一个coroutine协程,协程数据隔离 未就绪、阻塞时,挂起;完成后,还原上下文运行 ngx_lua实现Proactor模型 – 业务逻辑以自然逻辑书写 – 自动获得高并发能力 – 不会因I/O阻塞等待而浪费CPU资源 Ngx-lua执行阶段 set_by_lua / set_by_lua_file access_by_lua / access_by_lua_file rewrite_by_lua / rewrite_by_lua_file content_by_lua / content_by_lua_file 其他 lua_code_cache off; ngx.redirect/ngx.exec/ngx.capture API调用,取值 Nginx的IO操作必须是非阻塞的,如果Nginx在那阻着,则会大大降低Nginx的性能。 所以在Lua中必须通过ngx.location.capture发出子请求将这些IO操作委托给Nginx的事件模型 Cosockets File io 性能 参考资料 章亦春:由Lua粘合的Nginx生态环境 温铭:Openresty最佳实践 叔度:淘宝网Nginx应用、定制与开发实战 陈于喆:lua ngx_lua 的介绍与应用 陈皓:Lua简明教程

您可能关注的文档

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档