基于移動終端的服務器優(yōu)化方法及服務器系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了基于移動終端的服務器優(yōu)化方法及服務器系統(tǒng),在TCP長連接的基礎上設計出一種新的技術架構,由TCP短連接取代長連接;在游戲服務器中開辟共享內存,通過設置數(shù)據(jù)庫緩存服務器,在數(shù)據(jù)訪問層面實現(xiàn)了“讀寫分離”。另外,避免了因服務器宕機所帶來的數(shù)據(jù)回檔,提升手機游戲的用戶體驗。在游戲服務器中設置基于生產(chǎn)者消費者模型的環(huán)形緩沖區(qū),在游戲服務器中設置有用于監(jiān)聽移動終端的連接狀態(tài)的監(jiān)聽模塊,這種從網(wǎng)絡連接模式、數(shù)據(jù)緩存、網(wǎng)絡緩沖區(qū)結構等多方面做出改進,進一步提升手機游戲的用戶體驗。
【專利說明】基于移動終端的服務器優(yōu)化方法及服務器系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及網(wǎng)絡游戲服務器【技術領域】,特別涉及基于移動終端的服務器優(yōu)化方法及服務器系統(tǒng),以提升服務的并發(fā)和I/o處理能力。
【背景技術】
[0002]移動終端或者叫移動通信終端是指可以在移動中使用的計算機設備,廣義的講包括手機、筆記本、POS機甚至包括車載電腦。大部分情況下是指手機或者具有多種應用功能的智能手機。移動終端設備使用無線通信技術進行數(shù)據(jù)傳輸,所處的網(wǎng)絡環(huán)境復雜多變,移動終端在與服務器交互過程中,時常出現(xiàn)斷開連接、讀寫效率較低以及網(wǎng)絡性能有限等現(xiàn)象。對于智能手機而言,根據(jù)手機游戲的特點,移動終端不需要頻繁與服務器交互,但移動終端用戶對整個通信系統(tǒng)的并發(fā)性和健壯性、服務器承載能力及網(wǎng)絡I/o效率都有較高的要求?,F(xiàn)有技術中,智能手機作為網(wǎng)絡游戲終端通常與網(wǎng)絡游戲服務器端保持長連接,本發(fā)明人認為,這種長連接模式在手機游戲用戶數(shù)量突增時有可能出現(xiàn)連接瓶頸,因此有必要從網(wǎng)絡連接模式、數(shù)據(jù)緩存、網(wǎng)絡緩沖區(qū)結構等多方面做出改進,設計出高并發(fā)、高I/o處理能力的基于移動終端的服務器優(yōu)化方法,進一步提升手機游戲的用戶體驗。
【發(fā)明內容】
[0003]本發(fā)明針對現(xiàn)有技術存在的缺陷或不足,提出一種基于移動終端的服務器優(yōu)化方法及服務器系統(tǒng),以提升服務的并發(fā)和I/o處理能力。
[0004]本發(fā)明的技術方案:
[0005]基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法包括:
[0006]移動終端向游戲服務器發(fā)起連接請求,游戲服務器接到請求后建立與移動終端的連接,當移動終端與游戲服務器之間的一次數(shù)據(jù)交互結束時,移動終端發(fā)起斷開本次連接的操作,釋放所占用的資源;當移動終端與游戲服務器之間有新的數(shù)據(jù)交互請求產(chǎn)生時,游戲服務器與移動終端再次建立新連接;
[0007]移動終端與游戲服務器之間連接過程遵循TCP協(xié)議,游戲服務器為每個與移動終端的連接預先設置一個超時時間,游戲服務器每隔一段預定時間檢查每個連接是否超時,如果超時則向超時連接所對應的移動終端發(fā)送斷開指示,移動終端接收到斷開指示即主動斷開此連接。
[0008]所述方法還包括:游戲服務器中設置有用于監(jiān)聽移動終端的連接狀態(tài)的監(jiān)聽模塊,預先在游戲服務器中設置某一事件及該事件發(fā)生時所執(zhí)行的處理函數(shù),在移動終端中的網(wǎng)絡游戲運行過程中,一旦預先注冊的某些事件發(fā)生時,監(jiān)聽模塊便會根據(jù)其所對應的事件處理函數(shù)做出對應處理。
[0009]所述方法還包括:設置與游戲服務器相連接的數(shù)據(jù)庫緩存服務器,并在游戲服務器中開辟出一塊能夠被若干個進程共享的一部分物理內存做為共享內存,該共享內存被映射到游戲服務器、數(shù)據(jù)庫緩存服務器各自的進程地址空間;[0010]所述共享內存用于存儲移動終端中的游戲玩家數(shù)據(jù);數(shù)據(jù)庫緩存服務器的進程啟動時從數(shù)據(jù)庫加載游戲玩家數(shù)據(jù)到共享內存區(qū)域,游戲服務器的進程從共享內存區(qū)域讀取數(shù)據(jù),當游戲服務器上的游戲玩家數(shù)據(jù)發(fā)生改變時,共享內存區(qū)域的數(shù)據(jù)隨之發(fā)生改變,數(shù)據(jù)庫緩存服務器定時或即時將更改后的游戲玩家數(shù)據(jù)寫入數(shù)據(jù)庫中。
[0011]所述方法還包括:在游戲服務器中設置基于生產(chǎn)者消費者模型的環(huán)形緩沖區(qū),所述環(huán)形緩沖區(qū)包括接收緩沖區(qū)和發(fā)送緩沖區(qū);環(huán)形緩沖區(qū)的讀操作和寫操作分別由讀線程和寫線程來單獨管理,讀線程負責從接收緩沖區(qū)中讀取數(shù)據(jù),將取出的數(shù)據(jù)返回給環(huán)形緩沖區(qū)環(huán)形隊列的上層;寫線程負責將數(shù)據(jù)寫到發(fā)送緩沖區(qū),然后發(fā)送到環(huán)形隊列的對端。
[0012]所述方法還包括:所述數(shù)據(jù)庫可與數(shù)據(jù)庫緩存服務器部署到同一臺計算機中,也可與數(shù)據(jù)庫緩存服務器分開部署到不同的計算機中。
[0013]所述預先設置的超時時間為5分鐘。
[0014]所述數(shù)據(jù)庫緩存服務器每隔10分鐘將更改后的游戲玩家數(shù)據(jù)寫入數(shù)據(jù)庫中。
[0015]基于移動終端的服務器系統(tǒng),其特征在于,所述系統(tǒng)采用了上述的優(yōu)化方法。
[0016]本發(fā)明的技術效果:
[0017]本發(fā)明提供的基于移動終端的服務器優(yōu)化方法和基于移動終端的服務器優(yōu)化系統(tǒng)從網(wǎng)絡連接模式、數(shù)據(jù)緩存、網(wǎng)絡緩沖區(qū)結構等多方面做出改進。
[0018]1.在TCP長連接的基礎上設計出一種新的技術架構,由TCP短連接取代長連接,這種請求與應答模式系統(tǒng)開銷小,成本低,大大提高了服務器的承載能力。
[0019]2.游戲服務器中開辟共享內存,通過設置數(shù)據(jù)庫緩存服務器,在數(shù)據(jù)訪問層面實現(xiàn)了“讀寫分離”。另外,避免了因服務器宕機所帶來的數(shù)據(jù)回檔,提升手機游戲的用戶體驗。
[0020]3.在游戲服務器中設置基于生產(chǎn)者消費者模型的環(huán)形緩沖區(qū),所述環(huán)形緩沖區(qū)包括接收緩沖區(qū)和發(fā)送緩沖區(qū),環(huán)形緩沖區(qū)的讀操作和寫操作分別由讀線程和寫線程來單獨管理,服務器I/o性能得到顯著提升。
[0021]4.游戲服務器中設置有用于監(jiān)聽移動終端的連接狀態(tài)的監(jiān)聽模塊,預先在游戲服務器中設置某一事件及該事件發(fā)生時所執(zhí)行的處理函數(shù),在移動終端中的網(wǎng)絡游戲運行過程中,一旦預先注冊的某些事件發(fā)生時,監(jiān)聽模塊便會根據(jù)其所對應的事件處理函數(shù)做出對應處理。這種事件通知模式為CPU耗時運算分擔了一部分壓力,進一步提升手機游戲的用戶體驗。
【專利附圖】
【附圖說明】
[0022]圖1是移動終端與游戲服務器之間連接過程優(yōu)化示意圖。
[0023]圖2是游戲服務器中開辟共享內存,與數(shù)據(jù)庫緩存服務器的邏輯關系示意圖。
[0024]圖3是環(huán)形緩沖區(qū)結構示意圖。
【具體實施方式】
[0025]下面結合附圖對本發(fā)明實施例做進一步的說明。
[0026]圖1是移動終端與游戲服務器之間連接過程優(yōu)化示意圖。如圖1所示,移動終端向游戲服務器發(fā)起連接請求,游戲服務器接到請求后建立與移動終端的連接,當移動終端與游戲服務器之間的一次數(shù)據(jù)交互結束時,移動終端發(fā)起斷開本次連接的操作,釋放所占用的資源;當移動終端與游戲服務器之間有新的數(shù)據(jù)交互請求產(chǎn)生時,游戲服務器與移動終端再次建立新連接。移動終端與游戲服務器之間連接過程遵循TCP協(xié)議,游戲服務器為每個與移動終端的連接預先設置一個超時時間(該超時時間可以設置為5分鐘,也可根據(jù)具體系統(tǒng)需要設置30秒或是I分鐘。),游戲服務器每隔一段預定時間檢查每個連接是否超時(該預定時間可以設置為10分鐘,也可根據(jù)具體需要設置。),如果超時則向超時連接所對應的移動終端發(fā)送指示,要求移動終端主動斷開此連接。通常來說,手機游戲后臺常見的是基于HTTP協(xié)議的實現(xiàn)模式,或是采用PHP技術來實施網(wǎng)站后臺管理。根據(jù)手機游戲的特點,移動終端不需要頻繁與服務器交互,TCP長連接持續(xù)占用服務端口,對系統(tǒng)資源消耗比較大。在這種模式下,每個用戶都占有一個連接,而且大多數(shù)連接都處于激活狀態(tài),當用戶數(shù)量達到一定數(shù)量級的時候,系統(tǒng)性能反而下降。圖1所示的是在長連接的基礎上設計出一種新的技術架構,由TCP短連接取代長連接,短連接簡言之就是需要同時保持很多連接并且連接的建立和關閉非常頻繁。短連接的優(yōu)點是管理起來比較簡單,存在的連接都是有效的連接,不需要額外的控制手段,有利于實現(xiàn)高并發(fā)。
[0027]圖2是游戲服務器中開辟共享內存,與數(shù)據(jù)庫緩存服務器的邏輯關系示意圖。共享內存是被多個進程共享的一部分物理內存。如果多個進程都把該內存區(qū)域映射到自己的虛擬地址空間,則這些進程就都可以直接訪問該共享內存區(qū)域,從而可以通過該區(qū)域進行通信。
[0028]作為本發(fā)明的進一步改進,設置與游戲服務器相連接的數(shù)據(jù)庫緩存服務器,并在游戲服務器中開辟出一塊能夠被若干個進程共享的一部分物理內存做為共享內存,該共享內存被映射到游戲服務器、數(shù)據(jù)庫緩存服務器各自的進程地址空間。所述共享內存用于存儲移動終端中的游戲玩家數(shù)據(jù);數(shù)據(jù)庫緩存服務器的進程啟動時從數(shù)據(jù)庫加載游戲玩家數(shù)據(jù)到共享內存區(qū)域,游戲服務器的進程從共享內存區(qū)域讀取數(shù)據(jù),當游戲服務器上的游戲玩家數(shù)據(jù)發(fā)生改變時,共享內存區(qū)域的數(shù)據(jù)隨之發(fā)生改變,數(shù)據(jù)庫緩存服務器定時或即時將更改后的游戲玩家數(shù)據(jù)寫入數(shù)據(jù)庫中。
[0029]如圖2所示,進程A是游戲服務器,進程B是DB緩存服務器,其中共享內存區(qū)域是玩家數(shù)據(jù)。進程B啟動時從數(shù)據(jù)庫加載數(shù)據(jù)到共享內存區(qū)域,進程A從共享內存區(qū)域讀取數(shù)據(jù),當進程A上的玩家數(shù)據(jù)發(fā)生改變時,共享內存區(qū)域的數(shù)據(jù)就發(fā)生了改變,進程B自然得知共享內存區(qū)域數(shù)據(jù)發(fā)生了改變,從而進程B就可以定時或即時將數(shù)據(jù)寫入數(shù)據(jù)庫中。通過設置DB數(shù)據(jù)緩存,進程A只負責從共享內存區(qū)域讀取數(shù)據(jù),將大量而頻繁的寫數(shù)據(jù)庫操作交給進程B來完成,在數(shù)據(jù)訪問層面實現(xiàn)了 “讀寫分離”。另外,當進程A崩潰時,由于數(shù)據(jù)還在內存中,進程B可以及時將數(shù)據(jù)寫入數(shù)據(jù)庫,避免了因服務器宕機所帶來的數(shù)據(jù)回檔。因此,緩存對于提高服務器I/O效率及穩(wěn)定性有非常重要的作用。
[0030]圖3是環(huán)形緩沖區(qū)結構示意圖。通常,網(wǎng)絡緩沖區(qū)結構為線性緩沖區(qū)并且讀寫操作與游戲邏輯處在一同個線程中,讀寫效率不高。另外,緩沖區(qū)讀寫操作與游戲邏輯都處在同一線程中,當此線程阻塞時會導致消息響應延遲,網(wǎng)絡I/o性能降低,影響玩家體驗。作為本發(fā)明的進一步改進,在游戲服務器中設置基于生產(chǎn)者消費者模型的環(huán)形緩沖區(qū),所述環(huán)形緩沖區(qū)包括接收緩沖區(qū)和發(fā)送緩沖區(qū);環(huán)形緩沖區(qū)的讀操作和寫操作分別由讀線程和寫線程來單獨管理,讀線程負責從接收緩沖區(qū)中讀取數(shù)據(jù),將取出的數(shù)據(jù)返回給環(huán)形緩沖區(qū)環(huán)形隊列的上層;寫線程負責將數(shù)據(jù)寫到發(fā)送緩沖區(qū),然后發(fā)送到環(huán)形隊列的對端。如圖3所示,本實施例在上述優(yōu)化方法的基礎上增加了一種高效的環(huán)形緩沖區(qū),環(huán)形緩沖區(qū)基于生產(chǎn)者和消費者模型,生產(chǎn)者將數(shù)據(jù)放入數(shù)組的尾端,而消費者從數(shù)組的另一端取出數(shù)據(jù),當達到數(shù)組的尾部時,生產(chǎn)者繞回到數(shù)組的頭部。如果只有一個生產(chǎn)者和一個消費者,那么就可以做到無鎖訪問環(huán)形緩沖區(qū)。寫指針只允許生產(chǎn)者訪問并修改,只要寫指針在更新索引之前將新的值保存到緩沖區(qū)中,則讀指針將始終看到一致的數(shù)據(jù)結構。同理,讀指針也只允許消費者訪問并修改。
[0031]如圖3所示,當讀指針和寫指針相等時,表明緩沖區(qū)是空的,而只要寫指針在讀指針后面時,表明緩沖區(qū)已滿。另外,應當將緩沖區(qū)的讀寫操作從處理游戲邏輯的工作線程中分離出來,由一對讀寫線程來單獨管理,讀線程負責從接收緩沖區(qū)中讀取數(shù)據(jù),將取出的數(shù)據(jù)返回給上層;寫線程負責將發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送到對端。經(jīng)過對網(wǎng)絡緩沖區(qū)的優(yōu)化及網(wǎng)絡I/o與游戲邏輯的分離,服務器I/O性能得到大大提升。
[0032]事件通知模式實質上屬于一種被動觸發(fā)模式,系統(tǒng)預先注冊好某一事件及事件發(fā)生時所執(zhí)行的處理函數(shù),在游戲運行過程中,當預先注冊的某些事件發(fā)生時,便會根據(jù)其所對應的事件處理函數(shù)來處理對應的邏輯。作為本發(fā)明的進一步改進,在上述優(yōu)化方法的基礎上,將手機游戲領域通常采用的輪詢模式優(yōu)化為事件通知模式,即游戲服務器中設置有用于監(jiān)聽移動終端的連接狀態(tài)的監(jiān)聽模塊,預先在游戲服務器中設置某一事件及該事件發(fā)生時所執(zhí)行的處理函數(shù),在移動終端中的網(wǎng)絡游戲運行過程中,一旦預先注冊的某些事件發(fā)生時,監(jiān)聽模塊便會根據(jù)其所對應的事件處理函數(shù)做出對應處理。例如,可以為一個監(jiān)聽套接字注冊一個回調函數(shù),每當需要調用accept O函數(shù)以打開新連接時調用這個回調函數(shù),當接受一個新連接時,再為這個新連接的讀、寫以及錯誤事件注冊對應的回調函數(shù),當有讀、寫或者錯誤事件發(fā)生時便會由對應的回調函數(shù)來執(zhí)行。這種由主動變被動的處理模式可以從復雜的游戲系統(tǒng)中可以單獨剝離,為CPU耗時運算分擔了一部分壓力。
[0033]綜上所述,基于移動終端的游戲服務器經(jīng)過上述優(yōu)化策略驗證后,系統(tǒng)的并發(fā)性和健壯性、服務器承載能力及網(wǎng)絡I/o效率得到顯著改善,用戶體驗得到進一步提升。
[0034]以上所述的本發(fā)明【具體實施方式】,并不構成對本發(fā)明保護范圍的限定。任何在本發(fā)明的精神和原則之內所做的修改、等同替換和改進等,均應包含在本發(fā)明的權利要求保護范圍之內。
【權利要求】
1.基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法包括:移動終端向游戲服務器發(fā)起連接請求,游戲服務器接到請求后建立與移動終端的連接,當移動終端與游戲服務器之間的一次數(shù)據(jù)交互結束時,移動終端發(fā)起斷開本次連接的操作,釋放所占用的資源;當移動終端與游戲服務器之間有新的數(shù)據(jù)交互請求產(chǎn)生時,游戲服務器與移動終端再次建立新連接; 移動終端與游戲服務器之間連接過程遵循TCP協(xié)議,游戲服務器為每個與移動終端的連接預先設置一個超時時間,游戲服務器每隔一段預定時間檢查每個連接是否超時,如果超時則向超時連接所對應的移動終端發(fā)送斷開指示,移動終端接收到斷開指示即主動斷開此連接。
2.根據(jù)權利要求1所述基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法還包括:游戲服務器中設置有用于監(jiān)聽移動終端的連接狀態(tài)的監(jiān)聽模塊,預先在游戲服務器中設置某一事件及該事件發(fā)生時所執(zhí)行的處理函數(shù),在移動終端中的網(wǎng)絡游戲運行過程中,一旦預先注冊的某些事件發(fā)生時,監(jiān)聽模塊便會根據(jù)其所對應的事件處理函數(shù)做出對應處理。
3.根據(jù)權利要求1所述基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法還包括:設置與游戲服務器相連接的數(shù)據(jù)庫緩存服務器,并在游戲服務器中開辟出一塊能夠被若干個進程共享的一部分物理內存做為共享內存,該共享內存被映射到游戲服務器、數(shù)據(jù)庫緩存服務器各自的進程地址空間; 所述共享內存用于存儲移動終端中的游戲玩家數(shù)據(jù);數(shù)據(jù)庫緩存服務器的進程啟動時從數(shù)據(jù)庫加載游戲玩家數(shù)據(jù)到共享內存區(qū)域,游戲服務器的進程從共享內存區(qū)域讀取數(shù)據(jù),當游戲服務器上的游戲玩家數(shù)據(jù)發(fā)生改變時,共享內存區(qū)域的數(shù)據(jù)隨之發(fā)生改變,數(shù)據(jù)庫緩存服務器定時或即時將更改后的游戲玩家數(shù)據(jù)寫入數(shù)據(jù)庫中。
4.根據(jù)權利要求1所述基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法還包括:在游戲服務器中設置基于生產(chǎn)者消費者模型的環(huán)形緩沖區(qū),所述環(huán)形緩沖區(qū)包括接收緩沖區(qū)和發(fā)送緩沖區(qū);環(huán)形緩沖區(qū)的讀操作和寫操作分別由讀線程和寫線程來單獨管理,讀線程負責從接收緩沖區(qū)中讀取數(shù)據(jù),將取出的數(shù)據(jù)返回給環(huán)形緩沖區(qū)環(huán)形隊列的上層;寫線程負責將數(shù)據(jù)寫到發(fā)送緩沖區(qū),然后發(fā)送到環(huán)形隊列的對端。
5.根據(jù)權利要求3所述基于移動終端的服務器優(yōu)化方法,其特征在于,所述方法還包括:所述數(shù)據(jù)庫可與數(shù)據(jù)庫緩存服務器部署到同一臺計算機中,也可與數(shù)據(jù)庫緩存服務器分開部署到不同的計算機中。
6.根據(jù)權利要求1所述基于移動終端的服務器優(yōu)化方法,其特征在于,所述預先設置的超時時間為5分鐘。
7.根據(jù)權利要求3所述基于移動終端的服務器優(yōu)化方法,其特征在于,數(shù)據(jù)庫緩存服務器每隔10分鐘將更改后的游戲玩家數(shù)據(jù)寫入數(shù)據(jù)庫中。
8.基于移動終端的服務器系統(tǒng),其特征在于,所述系統(tǒng)采用了權利要求1-7所述的基于移動終端的服務器優(yōu)化方法。
【文檔編號】H04L29/06GK103995755SQ201410240926
【公開日】2014年8月20日 申請日期:2014年6月3日 優(yōu)先權日:2014年6月3日
【發(fā)明者】王寶臣 申請人:北京樂動卓越信息技術有限公司