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

下載本文檔

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

文檔簡介

1、基于Erlang的MMO鏈接管理服務(wù)器,目錄,問題 MMO鏈接管理的特點(diǎn)與需求 整合 Erlang如何整合入到現(xiàn)有集群系統(tǒng)? 測量 建立基于erlang的壓力測試環(huán)境 實(shí)現(xiàn) Erlang/OTP如何簡化編程? 展望 erlang在網(wǎng)絡(luò)游戲開發(fā)中的潛力點(diǎn),MMO鏈接管理的特點(diǎn),問題,MMO集群結(jié)構(gòu)圖,MMO鏈接管理的特點(diǎn),鏈接管理的應(yīng)用場景 MMORPG游戲服務(wù)端結(jié)構(gòu)中包含是那個(gè)部分:登錄認(rèn)證服務(wù),鏈接管理服務(wù),游戲邏輯服務(wù)。游戲邏輯服務(wù)還可以繼續(xù)進(jìn)行細(xì)分。 通常只有鏈接服務(wù)與客戶端直接進(jìn)行通信,可以認(rèn)為集群內(nèi)是安全的可以預(yù)測的計(jì)算環(huán)境,外部是實(shí)際的不安全的計(jì)算環(huán)境,這個(gè)服務(wù)是邏輯服務(wù)器與客戶端

2、之間的橋梁和管道。 邏輯服務(wù)切換時(shí),用戶擁有一個(gè)不變的訪問點(diǎn),管理集群中所有的來自client的鏈接,將從客戶端收到的消息轉(zhuǎn)發(fā)到對應(yīng)的邏輯服務(wù)器, 將邏輯服務(wù)器收到的消息轉(zhuǎn)發(fā)到相應(yīng)的client, 發(fā)出去的包大部分的包是廣播,鏈接服務(wù)器負(fù)責(zé)處理廣播。 路由 廣播 安全 功能明確,邏輯比較簡單,MMO鏈接管理的特點(diǎn)(續(xù),MMO鏈接管理的需求,高性能 路由和廣播的要盡可能快,保障游戲的流暢感覺 服務(wù)端頻率10HZ,響應(yīng)時(shí)間100ms 高并發(fā) 連接多,能處理的鏈接越高越好,MMO服務(wù)器承載的人數(shù)對游戲有重要的意義 大于5000+ 高吞吐量 輸出遠(yuǎn)遠(yuǎn)大于輸入 收到的數(shù)量少,需要廣播的數(shù)據(jù)多 高可用性

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

4、,測量,Erlang之前,C+&python Client 缺點(diǎn) 遠(yuǎn)程連接10+機(jī)器 管理困難 狀態(tài)監(jiān)測困難 代碼發(fā)布困難,Power by Erlang/OTP,Power by Erlang/OTP,監(jiān)控節(jié)點(diǎn)(唯一) 測試配置狀態(tài)進(jìn)程(global) 測試數(shù)據(jù)收集進(jìn)程(global) GUI控制進(jìn)程 工作節(jié)點(diǎn)(多個(gè)) 監(jiān)督進(jìn)程 多個(gè)工作進(jìn)程,Power by Erlang/OTP,run erl as service 發(fā)布代碼:熱代碼替換nl(MODULE). 啟動關(guān)閉 rpc:call(N, stress, start, | N -nodes() rpc:call(N, stress,

5、stop, | N -nodes() 采用ETS存儲監(jiān)測信息,不用編寫任何代碼即可方便查看 wxPython綁定,非??焖僭O(shè)計(jì)跨平臺監(jiān)控GUI,wxFormBuilder,Power by Erlang/OTP,代碼規(guī)模 總共erlang代碼:2200 注釋: 600 所有的進(jìn)程都是用behavior,: gen_server gen_fsm gen_supervisor wx_object,關(guān)于測量的歸納與總結(jié),測試先行 Erlang非常適合搭建分布式測試系統(tǒng) 開發(fā)快速 平臺豐富 工具完善 管理簡單,ERLANG如何簡化編程,實(shí)現(xiàn),原有C+版本,非阻塞socket 狀態(tài)機(jī)(20個(gè)狀態(tài),26個(gè)

6、事件) 同一個(gè)集群中可以啟動多個(gè)連接管理進(jìn)程,實(shí)現(xiàn)V1,監(jiān)聽進(jìn)程(1個(gè)) 客戶端鏈接管理 所有Client進(jìn)程由一個(gè)監(jiān)督進(jìn)程管理 一個(gè)進(jìn)程對應(yīng)一個(gè)進(jìn)程對應(yīng)一個(gè)客戶端TCP鏈接 一個(gè)進(jìn)程對應(yīng)一個(gè)到邏輯服務(wù)器的鏈接 進(jìn)程實(shí)現(xiàn)采用OTP狀態(tài)機(jī) 服務(wù)端鏈接管理 所有Service進(jìn)程由一個(gè)監(jiān)督進(jìn)程管理 鏈接ID到PID映射管理,簡單的實(shí)現(xiàn)比較,C,代碼行數(shù):7924 邏輯結(jié)構(gòu)方面比較 單進(jìn)程 狀態(tài)機(jī) (20狀態(tài),26事件) 性能 6000,Erlang,代碼行數(shù): 2000線程 邏輯結(jié)構(gòu) 表示連接 狀態(tài)機(jī)狀態(tài)減少了:采用進(jìn)程來模擬客戶端之后 (10狀態(tài),12事件) 模式匹配使代碼更加清晰 otp 行為

7、模式框架簡化程序 性能 6000,優(yōu)化 調(diào)優(yōu)過程,性能階梯 一般設(shè)計(jì)未經(jīng)優(yōu)化的C程序 一般設(shè)計(jì)未經(jīng)優(yōu)化的Erlang程序 良好設(shè)計(jì)優(yōu)化過后的Erlang程序 良好設(shè)計(jì)優(yōu)化過后的C程序,監(jiān)測Erlang工具,pman 顯示進(jìn)程列表 包含進(jìn)程:Pids, Current Function, Name, Msgs,Reds,Size Etop 類似于linux平臺的top命令 包含pman的所有功能 實(shí)時(shí)更新進(jìn)程狀態(tài),可以屬性選擇排序,優(yōu)化case 1,多鏈接情況下 +K非常重要 4000, CPU: 80%100% Top 看到60-70%sy +K true, CPU 13% 20% +K tr

8、ue & smp disable, CPU 9%20% 原因:使用epoll,優(yōu)化case 2:數(shù)字ID查找PID,問題,每個(gè)連接有一個(gè)數(shù)字ID,邏輯服務(wù)器的廣播包里面包含一個(gè)數(shù)字ID類別和數(shù)據(jù),網(wǎng)關(guān)服務(wù)器通過ID查找到對應(yīng)PID,這個(gè)查找過程一度成為瓶頸,方案性能對比,優(yōu)化case3,LoginProxy負(fù)責(zé)從客戶端到login服務(wù)器轉(zhuǎn)發(fā),服務(wù)端到客戶端的轉(zhuǎn)發(fā),這有可能造成性能瓶頸,收到服務(wù)端的消息之后,一般會進(jìn)行循環(huán)處理,可能會延遲轉(zhuǎn)發(fā)客戶端消息,將轉(zhuǎn)發(fā)任務(wù)分兩部分,一個(gè)只負(fù)責(zé)從客戶端到logic服務(wù)器,一個(gè)負(fù)責(zé)從邏輯服務(wù)器到client,結(jié)果,OS: CentOS release 5 (Final) Intel(R) Xeon(TM) CPU 2.80GHz X 2 6500鏈接 30000 40000 packet/s,展望,erlang在網(wǎng)絡(luò)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論