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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、模式框架簡化程序 性能 6000,優(yōu)化 調(diào)優(yōu)過程,性能階梯 一般設計未經(jīng)優(yōu)化的C程序 一般設計未經(jīng)優(yōu)化的Erlang程序 良好設計優(yōu)化過后的Erlang程序 良好設計優(yōu)化過后的C程序,監(jiān)測Erlang工具,pman 顯示進程列表 包含進程:Pids, Current Function, Name, Msgs,Reds,Size Etop 類似于linux平臺的top命令 包含pman的所有功能 實時更新進程狀態(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,問題,每個連接有一個數(shù)字ID,邏輯服務器的廣播包里面包含一個數(shù)字ID類別和數(shù)據(jù),網(wǎng)關服務器通過ID查找到對應PID,這個查找過程一度成為瓶頸,方案性能對比,優(yōu)化case3,LoginProxy負責從客戶端到login服務器轉發(fā),服務端到客戶端的轉發(fā),這有可能造成性能瓶頸,收到服務端的消息之后,一般會進行循環(huán)處理,可能會延遲轉發(fā)客戶端消息,將轉發(fā)任務分兩部分,一個只負責從客戶端到logic服務器,一個負責從邏輯服務器到client,結果,OS: CentOS release 5 (Final) Intel(R) Xeon(TM) CPU 2.80GHz X 2 6500鏈接 30000 40000 packet/s,展望,erlang在網(wǎng)絡

溫馨提示

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

評論

0/150

提交評論