http://www.infoq.com/cn/presentations/application-of-ngx-lua-in-the-upyun\
概要
ngx_lua 是一個(gè) NGINX 的第三方擴(kuò)展模塊蛤育,它能夠?qū)?Lua 代碼嵌入到 NGINX 中來(lái)執(zhí)行。UPYUN 的 CDN 大量使用了 NGINX 作為反向代理服務(wù)器,并開(kāi)發(fā)了一系列例如流量統(tǒng)計(jì)敲董、緩存調(diào)度、防盜鏈等相關(guān)的 C 模塊慰安,但從 2013 年開(kāi)始由于業(yè)務(wù)場(chǎng)景的復(fù)雜化腋寨,使得用 C 模塊來(lái)寫(xiě)這些業(yè)務(wù)邏輯有點(diǎn)力不從心了,對(duì)于小團(tuán)隊(duì)來(lái)說(shuō)開(kāi)發(fā)和維護(hù)負(fù)擔(dān)都很重化焕,因此我們選擇了將這部分業(yè)務(wù)邏輯遷移到 ngx_lua 上萄窜,事實(shí)表明,這大大提升了我們整個(gè) CDN 層業(yè)務(wù)功能的迭代速度和最終線上表現(xiàn)撒桨。此次主要跟大家分享的就是我們團(tuán)隊(duì)在這整個(gè)轉(zhuǎn)換過(guò)程中的一些心得體會(huì)查刻,以及在 NGINX 上基于 ngx_lua 的一些有趣的功能,特別地凤类,會(huì)著重介紹下我們是如果利用 ngx_lua 的靈活性來(lái)動(dòng)態(tài)收集日志進(jìn)行數(shù)據(jù)聚合分析的穗泵。
張聰,又拍云系統(tǒng)開(kāi)發(fā)工程師踱蠢,C / Lua 程序員火欧,目前主要負(fù)責(zé) UPYUN CDN 相關(guān)的設(shè)計(jì)和開(kāi)發(fā)工作,兼部分 UPYUN 分布式存儲(chǔ)系統(tǒng)相關(guān)的運(yùn)維工作茎截;在 NGINX C 模塊和 OpenResty / ngx_lua 模塊的開(kāi)發(fā)和維護(hù)方面有一些經(jīng)驗(yàn)積累苇侵,同時(shí)熱衷于推動(dòng)公司內(nèi)部的測(cè)試及運(yùn)維自動(dòng)化。偶爾會(huì)關(guān)注 C, Lua, Python, Erlang 相關(guān)的編程語(yǔ)言社區(qū)企锌,同時(shí)對(duì) Redis, NGINX 源代碼研究工作非常感興趣榆浓,崇尚簡(jiǎn)單實(shí)用的工程實(shí)踐,希望自己以后成為優(yōu)秀程序員的同時(shí)也是一位很好的實(shí)踐者撕攒,用程序去創(chuàng)造東西陡鹃,用程序去解決問(wèn)題烘浦。