基于Nginx/lua的高性能web于连宇2016-07-01议程演示LuaNginx-lua资料演示脚本NginxHello worldRedisMysql与其他HTTP服务连接议程演示LuaNginx-lua资料LualuaJIT语言TableFunctionCoroutineMetatable/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 ;}tablehaoel = {name=ChenHao, age=37, handsome=True}for i=1, #arr do?print(arr[i])endfor k, v in pairs(t) do?print(k, v)end函数闭包function myPower(x)?return function(y) return y^x endend多返回值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))继承metatablelocal mytable = {key2 = value2}local ss = {key1 = value1};function ss.hello() print(hello)endsetmetatable(mytable, {__index = ss})metamethod议程演示LuaNginx-lua资料Nginx-luaNginx进程模型Nginx网络模型Ngx-Lua执行阶段Openresty apiNginx进程模型nginx采用多进程,单Master多WorkerMaster处理外部信号,配置文件以及worker的初始化worker进程采用单线程,非阻塞(epoll)来处理客户端请求和响应Nginx网络模型同步异步阻塞非阻塞Ngx-lua原理Nginx work process共享一个lua vmIO原语直接注入lua vm每个请求开一个coroutine协程,协程数据隔离未就绪、阻塞时,挂起;完成后,还原上下文运行ngx_lua实现Proactor模型 – 业务逻辑以自然逻辑书写 – 自动获得高并发能力 – 不会因I/O阻塞等待而浪费CPU资源Ngx-lua执行阶段set_by_lua / set_by_lua_fileaccess_by_lua / access_by_lua_filerewrite_by_lua / rewrite_by_lua_filecontent_by_lua / content_by_lua_file其他lua_code_cache off;ngx.redirect/ngx.exec/ngx.captureAPI调用,取值Nginx的IO操作必须是非阻塞的,如果Nginx在那阻着,则会大大降低Nginx的性能。所以在Lua中必须通过ngx.location.capture发出子请求将这些IO操作委托给Nginx的事件模型CosocketsFile io性能参考资料章亦春:由Lua粘合的Nginx生态环境温铭:Openresty最佳实践叔度:淘宝网Nginx应用、定制与开发实战陈于喆:lua ngx_lua 的介绍与应用陈皓:Lua简明教程/maijian/article/detailsinclude lua.h#include lualib.h#include lauxlib.hchar *code = for i=0, 5 do print(\hello, world!\) end;int main(){ lua_state *s = luaL_newstate(); luaL_openlibs(s); luaL_dostring(s, code); lua_close(s); return 0;}2:90/lua-versiontime lua testtime.luatime luajit testtime.lua
您可能关注的文档
- 基因工程药物研究进展(Nancy 2).ppt
- 基于arm技术的无线音乐喷泉控制系统的设计与实现.doc
- 室分场景覆盖及原则简述.ppt
- 基于DSP系统的自举设计.doc
- 基于LabVIEW的存储示波器设计.doc
- 基于matlab的图像恢复.ppt
- 基于Oracle的SQL优化.pptx
- 室内家具与陈设 欧式家具.ppt
- 室内空气--第3部分:测定室内空气和试验箱空气中甲醛和其它羰基化合物--活性取样法实施细则.doc
- 室内蒸汽供暖系统.ppt
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
最近下载
- 汽车热管理系统仿真分析与实例解析 课件 06 AI 技术与汽车热管理.pptx
- 《钛合金锻坯 缺陷检测 相控阵超声水浸检测方法》.pdf VIP
- F665065【复试】2024年长春理工大学070200物理学《复试物理光学》考研复试终极预测5套卷.pdf VIP
- 7.2《秦腔》课件(共43张PPT)(含音频+视频).pptx VIP
- 《急危重症护理学》配套ppt 9.第九章 泌尿系统功能监护.ppt VIP
- ZR-ZT-无油空压机培训资料.ppt VIP
- 2025年度医院党支部组织生活会临床医生个人对照检查材料.doc VIP
- (国家标准)GB T 7424.1-2003 光缆总规范 第1部分:总则.pdf
- 《工业控制系统信息安全防护指南》解读.doc VIP
- 救护员培训应急救护PPT课件.pptx VIP
原创力文档

文档评论(0)