- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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简明教程
您可能关注的文档
- 【三维设计】2016高考生物二轮:专题1.3.2光合作用与细胞呼吸素材.ppt
- ART分散机培训_2014.05.30解答.ppt
- 2017地球公转的地理意义复习解答.ppt
- 【三维设计】高中语文第一单元第1课沁园春长沙新人教版必修1素材.ppt
- 2017法硕专业基础课刑法学部分二完整版及解答.docx
- 2017高考120个文言文实词解答.ppt
- 蓝天救援队儿童安全培训素材.ppt
- 2017高考背诵历年高考英语完形填空高频词结解答.doc
- 太阳能光伏发电范例.ppt
- 太阳能级多晶硅的制备范例.pptx
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)