基于Erlang的鏈接管理服務(wù)器課件_第1頁
基于Erlang的鏈接管理服務(wù)器課件_第2頁
基于Erlang的鏈接管理服務(wù)器課件_第3頁
基于Erlang的鏈接管理服務(wù)器課件_第4頁
基于Erlang的鏈接管理服務(wù)器課件_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于Erlang的

MMO鏈接管理服務(wù)器侯明園御風(fēng)行數(shù)碼科技有限公司基于Erlang的

MMO鏈接管理服務(wù)器侯明園目錄問題MMO鏈接管理的特點與需求整合Erlang如何整合入到現(xiàn)有集群系統(tǒng)?測量建立基于erlang的壓力測試環(huán)境實現(xiàn)Erlang/OTP如何簡化編程?展望erlang在網(wǎng)絡(luò)游戲開發(fā)中的潛力點目錄問題MMO鏈接管理的特點

問題

MMO鏈接管理的特點

問題 MMO集群結(jié)構(gòu)圖MMO集群結(jié)構(gòu)圖MMO鏈接管理的特點鏈接管理的應(yīng)用場景MMORPG游戲服務(wù)端結(jié)構(gòu)中包含是那個部分:登錄認證服務(wù),鏈接管理服務(wù),游戲邏輯服務(wù)。游戲邏輯服務(wù)還可以繼續(xù)進行細分。通常只有鏈接服務(wù)與客戶端直接進行通信,可以認為集群內(nèi)是安全的可以預(yù)測的計算環(huán)境,外部是實際的不安全的計算環(huán)境,這個服務(wù)是邏輯服務(wù)器與客戶端之間的橋梁和管道。邏輯服務(wù)切換時,用戶擁有一個不變的訪問點MMO鏈接管理的特點鏈接管理的應(yīng)用場景管理集群中所有的來自client的鏈接,將從客戶端收到的消息轉(zhuǎn)發(fā)到對應(yīng)的邏輯服務(wù)器,將邏輯服務(wù)器收到的消息轉(zhuǎn)發(fā)到相應(yīng)的client,發(fā)出去的包大部分的包是廣播,鏈接服務(wù)器負責(zé)處理廣播。路由廣播安全功能明確,邏輯比較簡單MMO鏈接管理的特點(續(xù))管理集群中所有的來自client的鏈接,將從客戶端收到的消息MMO鏈接管理的需求高性能路由和廣播的要盡可能快,保障游戲的流暢感覺服務(wù)端頻率10HZ,響應(yīng)時間<100ms高并發(fā)連接多,能處理的鏈接越高越好,MMO服務(wù)器承載的人數(shù)對游戲有重要的意義大于5000+高吞吐量輸出遠遠大于輸入收到的數(shù)量少,需要廣播的數(shù)據(jù)多高可用性出故障時間要少恢復(fù)時間要短

95%MMO鏈接管理的需求高性能ERLANG如何整合入到現(xiàn)有集群系統(tǒng)?整合

ERLANG如何整合入到現(xiàn)有集群系統(tǒng)?整合 整合整合進入原有的監(jiān)控系統(tǒng)兼容原有管理工具狀態(tài)報告維護操作,重啟,關(guān)閉,查詢數(shù)據(jù)庫訪問mysql數(shù)據(jù)庫支持兼容原有網(wǎng)絡(luò)協(xié)議原有協(xié)議是簡單二進制協(xié)議引入?yún)f(xié)議定義語言,自動生成actionscript,python,C++,erlang協(xié)議編碼解碼代碼整合整合進入原有的監(jiān)控系統(tǒng)關(guān)于整合的歸納與總結(jié)定義通信標(biāo)準(zhǔn)如果公司的應(yīng)用程序想要扎根網(wǎng)絡(luò)應(yīng)用領(lǐng)域,及時你是第一款產(chǎn)品,建立的一個網(wǎng)絡(luò)協(xié)議的規(guī)范和標(biāo)準(zhǔn),定義語言,也是非常有必要的。Protobuf,asn,CERLSDL未來可以進一步建立一種行業(yè)標(biāo)準(zhǔn)關(guān)于整合的歸納與總結(jié)定義通信標(biāo)準(zhǔn)壓力測試環(huán)境的建立測量

壓力測試環(huán)境的建立測量 Erlang之前C++&pythonClient 缺點遠程連接10+機器管理困難狀態(tài)監(jiān)測困難代碼發(fā)布困難Erlang之前C++&pythonClient PowerbyErlang/OTPPowerbyErlang/OTPPowerbyErlang/OTP監(jiān)控節(jié)點(唯一)測試配置狀態(tài)進程(global)測試數(shù)據(jù)收集進程(global)GUI控制進程工作節(jié)點(多個)監(jiān)督進程多個工作進程PowerbyErlang/OTP監(jiān)控節(jié)點(唯一)PowerbyErlang/OTPrunerlasservice發(fā)布代碼:熱代碼替換nl(MODULE).啟動關(guān)閉

[rpc:call(N,stress,start,[]]||N<-nodes()]

[rpc:call(N,stress,stop,[]]||N<-nodes()]采用ETS存儲監(jiān)測信息,不用編寫任何代碼即可方便查看wxPython綁定,非常快速設(shè)計跨平臺監(jiān)控GUI,wxFormBuilderPowerbyErlang/OTPrunerlasPowerbyErlang/OTP代碼規(guī)??偣瞖rlang代碼:2200注釋:600所有的進程都是用behavior,:gen_servergen_fsmgen_supervisorwx_objectPowerbyErlang/OTP代碼規(guī)模關(guān)于測量的歸納與總結(jié)測試先行Erlang非常適合搭建分布式測試系統(tǒng)開發(fā)快速平臺豐富工具完善管理簡單關(guān)于測量的歸納與總結(jié)測試先行ERLANG如何簡化編程?實現(xiàn)

ERLANG如何簡化編程?實現(xiàn) 原有C++版本非阻塞socket狀態(tài)機(20個狀態(tài),26個事件)同一個集群中可以啟動多個連接管理進程原有C++版本非阻塞socket實現(xiàn)V1監(jiān)聽進程(1個)客戶端鏈接管理所有Client進程由一個監(jiān)督進程管理一個進程對應(yīng)一個進程對應(yīng)一個客戶端TCP鏈接一個進程對應(yīng)一個到邏輯服務(wù)器的鏈接進程實現(xiàn)采用OTP狀態(tài)機服務(wù)端鏈接管理所有Service進程由一個監(jiān)督進程管理鏈接ID到PID映射管理實現(xiàn)V1監(jiān)聽進程(1個)簡單的實現(xiàn)比較

C++代碼行數(shù):7924邏輯結(jié)構(gòu)方面比較單進程狀態(tài)機(20狀態(tài),26事件)性能6000Erlang代碼行數(shù):2000線程邏輯結(jié)構(gòu)表示連接狀態(tài)機狀態(tài)減少了:采用進程來模擬客戶端之后(10狀態(tài),12事件)模式匹配使代碼更加清晰otp行為模式框架簡化程序性能6000簡單的實現(xiàn)比較C++代碼行數(shù):7924Erlang代碼行數(shù)優(yōu)化調(diào)優(yōu)過程

性能階梯一般設(shè)計未經(jīng)優(yōu)化的C程序一般設(shè)計未經(jīng)優(yōu)化的Erlang程序良好設(shè)計優(yōu)化過后的Erlang程序良好設(shè)計優(yōu)化過后的C程序優(yōu)化調(diào)優(yōu)過程 性能階梯監(jiān)測Erlang工具pman顯示進程列表包含進程:Pids,CurrentFunction,Name,Msgs,Reds,SizeEtop類似于linux平臺的top命令包含pman的所有功能實時更新進程狀態(tài),可以屬性選擇排序監(jiān)測Erlang工具pman優(yōu)化case1多鏈接情況下+K非常重要4000,CPU:80%~100%Top看到60-70%sy+Ktrue,CPU13%~20%+Ktrue&&–smpdisable,CPU9%~20%原因:使用epoll優(yōu)化case1多鏈接情況下+K非常重要優(yōu)化case2:數(shù)字ID查找PID問題每個連接有一個數(shù)字ID,邏輯服務(wù)器的廣播包里面包含一個數(shù)字ID類別和數(shù)據(jù),網(wǎng)關(guān)服務(wù)器通過ID查找到對應(yīng)PID,這個查找過程一度成為瓶頸方案性能對比查找方案InsertfindETS1.118.98DICT5.129.65gbtree128.25Register801優(yōu)化case2:數(shù)字ID查找PID問題每個連接有一個數(shù)字I優(yōu)化case3LoginProxy負責(zé)從客戶端到login服務(wù)器轉(zhuǎn)發(fā),服務(wù)端到客戶端的轉(zhuǎn)發(fā),這有可能造成性能瓶頸,收到服務(wù)端的消息之后,一般會進行循環(huán)處理,可能會延遲轉(zhuǎn)發(fā)客戶端消息,將轉(zhuǎn)發(fā)任務(wù)分兩部分,一個只負責(zé)從客戶端到logic服務(wù)器,一個負責(zé)從邏輯服務(wù)器到client優(yōu)化case3LoginProxy負責(zé)從客戶端到login服結(jié)果OS:CentOSrelease5(Final)Intel(R)Xeon(TM)CPU2.80GHzX26500鏈接30000~40000packet/s結(jié)果OS:CentOSrelease5(Final)展望erlang在網(wǎng)絡(luò)游戲開發(fā)中的潛力點熱部署網(wǎng)絡(luò)游戲服務(wù)器維護通常會導(dǎo)致玩家流失如果Erlang的熱部署能夠有效應(yīng)用那么有可能極大減少服務(wù)器維護的頻率和時間AI有AI實現(xiàn)采用Lua協(xié)程,StacklessPython。Erlang進程也有類似的特點運營接口整合工具展望erlang在網(wǎng)絡(luò)游戲開發(fā)中的潛力點基于Erlang的

MMO鏈接管理服務(wù)器侯明園御風(fēng)行數(shù)碼科技有限公司基于Erlang的

MMO鏈接管理服務(wù)器侯明園目錄問題MMO鏈接管理的特點與需求整合Erlang如何整合入到現(xiàn)有集群系統(tǒng)?測量建立基于erlang的壓力測試環(huán)境實現(xiàn)Erlang/OTP如何簡化編程?展望erlang在網(wǎng)絡(luò)游戲開發(fā)中的潛力點目錄問題MMO鏈接管理的特點

問題

MMO鏈接管理的特點

問題 MMO集群結(jié)構(gòu)圖MMO集群結(jié)構(gòu)圖MMO鏈接管理的特點鏈接管理的應(yīng)用場景MMORPG游戲服務(wù)端結(jié)構(gòu)中包含是那個部分:登錄認證服務(wù),鏈接管理服務(wù),游戲邏輯服務(wù)。游戲邏輯服務(wù)還可以繼續(xù)進行細分。通常只有鏈接服務(wù)與客戶端直接進行通信,可以認為集群內(nèi)是安全的可以預(yù)測的計算環(huán)境,外部是實際的不安全的計算環(huán)境,這個服務(wù)是邏輯服務(wù)器與客戶端之間的橋梁和管道。邏輯服務(wù)切換時,用戶擁有一個不變的訪問點MMO鏈接管理的特點鏈接管理的應(yīng)用場景管理集群中所有的來自client的鏈接,將從客戶端收到的消息轉(zhuǎn)發(fā)到對應(yīng)的邏輯服務(wù)器,將邏輯服務(wù)器收到的消息轉(zhuǎn)發(fā)到相應(yīng)的client,發(fā)出去的包大部分的包是廣播,鏈接服務(wù)器負責(zé)處理廣播。路由廣播安全功能明確,邏輯比較簡單MMO鏈接管理的特點(續(xù))管理集群中所有的來自client的鏈接,將從客戶端收到的消息MMO鏈接管理的需求高性能路由和廣播的要盡可能快,保障游戲的流暢感覺服務(wù)端頻率10HZ,響應(yīng)時間<100ms高并發(fā)連接多,能處理的鏈接越高越好,MMO服務(wù)器承載的人數(shù)對游戲有重要的意義大于5000+高吞吐量輸出遠遠大于輸入收到的數(shù)量少,需要廣播的數(shù)據(jù)多高可用性出故障時間要少恢復(fù)時間要短

95%MMO鏈接管理的需求高性能ERLANG如何整合入到現(xiàn)有集群系統(tǒng)?整合

ERLANG如何整合入到現(xiàn)有集群系統(tǒng)?整合 整合整合進入原有的監(jiān)控系統(tǒng)兼容原有管理工具狀態(tài)報告維護操作,重啟,關(guān)閉,查詢數(shù)據(jù)庫訪問mysql數(shù)據(jù)庫支持兼容原有網(wǎng)絡(luò)協(xié)議原有協(xié)議是簡單二進制協(xié)議引入?yún)f(xié)議定義語言,自動生成actionscript,python,C++,erlang協(xié)議編碼解碼代碼整合整合進入原有的監(jiān)控系統(tǒng)關(guān)于整合的歸納與總結(jié)定義通信標(biāo)準(zhǔn)如果公司的應(yīng)用程序想要扎根網(wǎng)絡(luò)應(yīng)用領(lǐng)域,及時你是第一款產(chǎn)品,建立的一個網(wǎng)絡(luò)協(xié)議的規(guī)范和標(biāo)準(zhǔn),定義語言,也是非常有必要的。Protobuf,asn,CERLSDL未來可以進一步建立一種行業(yè)標(biāo)準(zhǔn)關(guān)于整合的歸納與總結(jié)定義通信標(biāo)準(zhǔn)壓力測試環(huán)境的建立測量

壓力測試環(huán)境的建立測量 Erlang之前C++&pythonClient 缺點遠程連接10+機器管理困難狀態(tài)監(jiān)測困難代碼發(fā)布困難Erlang之前C++&pythonClient PowerbyErlang/OTPPowerbyErlang/OTPPowerbyErlang/OTP監(jiān)控節(jié)點(唯一)測試配置狀態(tài)進程(global)測試數(shù)據(jù)收集進程(global)GUI控制進程工作節(jié)點(多個)監(jiān)督進程多個工作進程PowerbyErlang/OTP監(jiān)控節(jié)點(唯一)PowerbyErlang/OTPrunerlasservice發(fā)布代碼:熱代碼替換nl(MODULE).啟動關(guān)閉

[rpc:call(N,stress,start,[]]||N<-nodes()]

[rpc:call(N,stress,stop,[]]||N<-nodes()]采用ETS存儲監(jiān)測信息,不用編寫任何代碼即可方便查看wxPython綁定,非??焖僭O(shè)計跨平臺監(jiān)控GUI,wxFormBuilderPowerbyErlang/OTPrunerlasPowerbyErlang/OTP代碼規(guī)模總共erlang代碼:2200注釋:600所有的進程都是用behavior,:gen_servergen_fsmgen_supervisorwx_objectPowerbyErlang/OTP代碼規(guī)模關(guān)于測量的歸納與總結(jié)測試先行Erlang非常適合搭建分布式測試系統(tǒng)開發(fā)快速平臺豐富工具完善管理簡單關(guān)于測量的歸納與總結(jié)測試先行ERLANG如何簡化編程?實現(xiàn)

ERLANG如何簡化編程?實現(xiàn) 原有C++版本非阻塞socket狀態(tài)機(20個狀態(tài),26個事件)同一個集群中可以啟動多個連接管理進程原有C++版本非阻塞socket實現(xiàn)V1監(jiān)聽進程(1個)客戶端鏈接管理所有Client進程由一個監(jiān)督進程管理一個進程對應(yīng)一個進程對應(yīng)一個客戶端TCP鏈接一個進程對應(yīng)一個到邏輯服務(wù)器的鏈接進程實現(xiàn)采用OTP狀態(tài)機服務(wù)端鏈接管理所有Service進程由一個監(jiān)督進程管理鏈接ID到PID映射管理實現(xiàn)V1監(jiān)聽進程(1個)簡單的實現(xiàn)比較

C++代碼行數(shù):7924邏輯結(jié)構(gòu)方面比較單進程狀態(tài)機(20狀態(tài),26事件)性能6000Erlang代碼行數(shù):2000線程邏輯結(jié)構(gòu)表示連接狀態(tài)機狀態(tài)減少了:采用進程來模擬客戶端之后(10狀態(tài),12事件)模式匹配使代碼更加清晰otp行為模式框架簡化程序性能6000簡單的實現(xiàn)比較C++代碼行數(shù):7924Erlang代碼行數(shù)優(yōu)化調(diào)優(yōu)過程

性能階梯一般設(shè)計未經(jīng)優(yōu)化的C程序一般設(shè)計未經(jīng)優(yōu)化的Erlang程序良好設(shè)計優(yōu)化過后的Erlang程序良好設(shè)計優(yōu)化過后的C程序優(yōu)化調(diào)優(yōu)過程 性能階梯監(jiān)測Erlang工具pman顯示進程列表包含進程:Pids,CurrentFunction,Name,Msgs,Reds,SizeEtop類似于linux平臺的top命令包含pman的所有功能實時更新進程狀態(tài),可以屬性選擇排序監(jiān)測Erlang工具pman優(yōu)化case1多鏈接情況下+K非常重要4000,CPU:80%~100%Top看到60-70%sy+Ktrue,CPU13%~20%+Ktrue&&–smpdisable,CPU9%~20%原因:使用epoll優(yōu)化case1多鏈接情況下+K非常重要優(yōu)化

溫馨提示

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

評論

0/150

提交評論