3讓你的更強大通過拓展nginx_第1頁
3讓你的更強大通過拓展nginx_第2頁
3讓你的更強大通過拓展nginx_第3頁
3讓你的更強大通過拓展nginx_第4頁
3讓你的更強大通過拓展nginx_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、講師介紹Hash從事Java軟件研發(fā)近十年。前新浪支付成員、咪咕視訊(中國移動)項目經理、對分布式架構、高性能編程有深入的研究。明天,你一定會感謝今天奮力拼搏的| JAVA架構師課程讓你的Nginx更強大,通過Lua拓展Nginx分布式高并發(fā)負載均衡目錄課程安排| JAVA架構師課程04功能實戰(zhàn)實現(xiàn)一個高性能的商品頁面03打造高性能后端接口強強,如何玩轉Nginx+Lua+Redis?02Nginx增加Lua執(zhí)行模塊Nginx相關概念、安裝使用01Lua簡述像Lua一樣快目錄01Lua簡述| JAVA架構師課程Lua語言Lua是一種功能強大,高效,輕量級,可嵌入的到我們應用程序中。語言,非常容

2、易嵌入Lua是動態(tài)類型的,通過使用基于寄存器的虛擬機解釋字節(jié)碼來運行,并具有增量收集的自動內存管理,使其成為配置,和快速原型設計的理想選擇。Lua旨在成為一種輕量級可嵌入到Web應用程序和圖像處理。語言。它用于各種應用程序,從應用場景1.2.3.許多工業(yè)應用 (例如, Adobe的Photoshop Lightroom)重點是Lua目前 是系統(tǒng)(例如, 巴西的數(shù)字電視的 Ginga中間件)中領先的語言,在(例如, 魔獸世界和憤怒的小鳥)中使用。官網:| JAVA架構師課程Lua特點快,Lua是解釋語言領域中最快的語言Lua是便攜式的,在具有標準C編譯器的所有平臺中構建成開箱即用,可運行各種Un

3、ix和Windows,移動設備(運行Android,iOS,BREW,Symbian,Windows Phone),Rabbit,適用于Lego MindStorms等應用程序),IBM大型機等。微處理器(如ARM和可嵌入,Lua是一種快速語言引擎,占用空間小,可以輕松嵌入到應用程序中。簡單而強大,提供實現(xiàn)功能的*元機制*,而不是直接在語言中提供大量功能。Lua不是純粹的面向對象語言,提供了實現(xiàn)類和繼承的元機制。小,源包含大約24000行C,包含源代碼和文檔的Lua 5.3.5的tar包需要297K壓縮和1.2M未壓縮。,MIT證,可以用于任何目的,包括商業(yè)目的,完全。| JAVA架構師課程開

4、始使用Lua安裝LuaHelloWorld| JAVA架構師課程$ luaLua 5.1.4 Copyright (C) 1994-2008 L, PUC-Rio> print("hello, world") hello, worldcurl -R -Otar zxf lua-5.3.5.tar.gz cd lua-5.3.5make linux test一個小例子新建hello.lua文件,內容如下運行示例hello.lua文件語法比Java要簡略,縮進對齊,無大括號分號Lua實現(xiàn)的階乘代碼示例| JAVA架構師課程$ lua hello.lua ent

5、er a number:5120# 120=5*4*3*2*1- defines a factorial function function fact (n)if n = 0 then return 1elsereturn n * fact(n-1) endendprint("enter a number:")a = io.read("*number")- read a number print(fact(a)目錄02Nginx增加Lua執(zhí)行模塊| JAVA架構師課程給插上翅膀Nginx嵌入Lua語言ngx_lua模塊不鼓勵用Nginx構建這個模塊,構建

6、需要注意,Nginx,LuaJIT和OpenSSL版具有各種限制和長期存在的錯誤,這些錯誤可能會導致某些模塊的功能被禁用,無法正常運行或運行速度變慢。如何編譯,參考Nginx嵌入Lua語言操作手冊。使用ngx_lua模塊相當于使用Openresty,建議用版本OpenResty,它做了大量優(yōu)化、集成了常用的第插件。OpenRestyOpenResty內部集成了大量精良的 Lua 庫、第模塊以及OpenResty是一款基于大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴展NGINX 和 LuaJITWeb 平臺。的性極高的動態(tài) Web 應用、Web 服務和關。OpenResty的安裝參考Ope

7、nResty安裝操作,比構建ngx_lua模塊簡單很多ngx_lua模塊資料:|JAVA架構師課程ngx_lua支持的指令認識ngx_lua中的指令內容處理可以由上游服務或者Lua語言來處理,用Lua就大有可為了。| JAVA架構師課程指令分為配置指令、 指令。指令分為兩種方式:lua塊*_by_lua_block lua文件*_by_lua_fileLua 執(zhí)行順序,如右圖從上至下:初始化、重寫/ 、內容處理、日志輸出四個階段。ngx_lua演示在OpenResty中演示ngx_lua的指令內容,參考nginx_lua_directives.conf文件| JAVA架構師課程目錄03打造高性

8、能后端接口| JAVA架構師課程OpenRestyRedis模塊OpenResty中默認嵌入了下列模塊,包含Redis,所以要使用Redis非常簡單。Lua中使用Redis代碼示例| JAVA架構師課程- 引入Redis模塊local redis = require("resty.redis")-創(chuàng)建實例local red = redis:new()-建立連接local ok, err = red:connect(“”, 6379)-調用API進行處理ok, err = red:set("msg", "hello world&

9、quot;) local resp, err = red:get("msg")Nginx非阻塞與Lua協(xié)程的絕配服務器有個設計原則:永遠不能阻塞。nginx作為非常優(yōu)秀的服務器,這點發(fā)揮的非常極致。在nginx里有很多的體現(xiàn)異步的地方。Lua嵌入會阻塞嗎?通過nginx的異步機制和lua的協(xié)程,很容易實現(xiàn)這種同步寫法,異步實現(xiàn)的模型,但對開發(fā)人員而言,不用關心內部做了什么。| JAVA架構師課程- foo本身是個協(xié)程,由nginx調用function foo()- 此處由nginx發(fā)起db的連接請求,因為異步這里先暫停協(xié)程users = db.query('user

10、s', name: name);- 當請求有響應得到處理時,繼續(xù)執(zhí)行協(xié)程,這些才運行deal_with(users);endLua協(xié)程什么是協(xié)程?Lua協(xié)程,稱為協(xié)作式多線程。Lua中的協(xié)程代表一個的執(zhí)行線程,具有的堆棧、的局部變量、PC計數(shù)器和其自己的指令指針; 與java線程不同的是,協(xié)程只通過顯式調用yield函數(shù)來暫停其執(zhí)行。同一時間,多協(xié)程只運行其中一個,多線程則可以運行多個。協(xié)程可以處于三種不同狀態(tài)之一:暫停,運行和使用Lua協(xié)程coroutine.create(f)創(chuàng)建一個新的協(xié)同程序并返回一個類型為thread的對象,并不啟動協(xié)程。coroutine.resume(co)開始或繼續(xù)執(zhí)行協(xié)同程序co coroutine.yield暫停執(zhí)行調用協(xié)程,讓出CPU coroutine.wrap(f)類似create方法,創(chuàng)建一個協(xié)程但它不是返回協(xié)程本身,而是返回一個函數(shù),當被調用時,它恢復協(xié)程| JAVA架構師課程Lua協(xié)程示例同步的寫法,異步的實現(xiàn)| JAVA架構師課程coroutine.resume(co) - 輸出 co 1 coroutine

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論