[發明專利]一種分布式高性能游戲服務取名不重復的方法及其系統在審
| 申請號: | 202211294603.8 | 申請日: | 2022-10-21 |
| 公開(公告)號: | CN115554705A | 公開(公告)日: | 2023-01-03 |
| 發明(設計)人: | 劉德建;葉偉;李佳 | 申請(專利權)人: | 福建天晴數碼有限公司 |
| 主分類號: | A63F13/77 | 分類號: | A63F13/77;G06F9/50;G06F16/2455;G06F16/27 |
| 代理公司: | 福州旭辰知識產權代理事務所(普通合伙) 35233 | 代理人: | 盧麗花 |
| 地址: | 350000 福建省福州市君竹路83*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分布式 性能 游戲 服務 取名 重復 方法 及其 系統 | ||
1.一種分布式高性能游戲服務取名不重復的方法,其特征在于:所述方法包括如下步驟:
步驟S1、玩家取名時客戶端把游戲名username通過hash函數得到hashcode,用hashcode對服務器數量取模得到目標服務器編號n,向目標服務器n發起取名請求;
步驟S2、在目標服務器n中設置長度值為M的位圖bitmap來存儲用戶的取名情況;
步驟S3、目標服務器n對數據庫進行設置多個用戶分表,目標服務器n收到取名請求,得到hashcode,用hashcode對長度值M取模后得到數值a,判斷長度值為M的位圖bitmap下標a對應的存儲bit位是否為1,如果為1則返回客戶端游戲名已存在,如果為0則hashcode對用戶分表數量取模得到編號x,訪問user_x用戶表判斷游戲名username是否存在,如果存在則修改位圖bitmap下標a對應的存儲bit位為1,并返回客戶端游戲名已重復,如果不存在則插入游戲名username到數據庫對應的用戶表user_x中,并且修改位圖bitmap下標a對應的存儲bit位為1;
步驟S4、服務器定時每分鐘把內存bitmap保存至redis的鍵為key_n的value下,當服務器重啟時,讀取redis的鍵key為key_n把bitmap數據保存在內存中。
2.根據權利要求1所述的一種分布式高性能游戲服務取名不重復的方法,其特征在于:所述步驟S3進一步具體為:目標服務器n收到取名請求后,得到游戲名username,通過和步驟S1相同的hash函數得到散列值hashcode,為了減少數據庫壓力,設置位圖bitmap的長度值為8億,用hashcode對8億值M取模后得到數值a,判斷服務器內存中的位圖bitmap下標a對應的存儲bit位是否為1,如果為1則返回客戶端游戲名已存在,如果為0則表示游戲名可用,設置10張用戶表來存儲已創建的游戲名,通過hashcode對10取模得到編號x,讀取用戶表user_x判斷username是否存在,如果已存在則修改bitmap中下標a對應的存儲bit位為1,并返回客戶端游戲名已重復;如果用戶表user_x中不存在username,則插入username到數據庫中,并修改內存bitmap下標a對應的存儲bit位為1,返回客戶端創建成功。
3.根據權利要求1所述的一種分布式高性能游戲服務取名不重復的方法,其特征在于:所述步驟S4進一步具體為:服務器定時每分鐘把內存bitmap中的用戶取名情況存儲至redis的鍵key為key_n的value下,這是用于服務器重啟時,可用自己的服務器編號n去redis讀取本服務的取名情況,讀取redis的鍵key為key_n把bitmap數據保存在內中中,以供用戶取名時在內存中進行快速判重。
4.一種分布式高性能游戲服務取名不重復的系統,其特征在于:所述系統包括:目標服務器定位模塊、位圖創建模塊、游戲名重復處理模塊、數據讀取模塊;
所述目標服務器定位模塊,在玩家取名時客戶端把游戲名username通過hash函數得到hashcode,用hashcode對服務器數量取模得到目標服務器編號n,向目標服務器n發起取名請求;
所述位圖創建模塊,在目標服務器n中設置長度值為M的位圖bitmap來存儲用戶的取名情況;
所述游戲名重復處理模塊,通過目標服務器n對數據庫進行設置多個用戶分表,目標服務器n收到取名請求,得到hashcode,用hashcode對長度值M取模后得到數值a,判斷長度值為M的位圖bitmap下標a對應的存儲bit位是否為1,如果為1則返回客戶端游戲名已存在,如果為0則hashcode對用戶分表數量取模得到編號x,訪問user_x用戶表判斷游戲名username是否存在,如果存在則修改位圖bitmap下標a對應的存儲bit位為1,并返回客戶端游戲名已重復,如果不存在則插入游戲名username到數據庫對應的用戶表user_x中,并且修改位圖bitmap下標a對應的存儲bit位為1;
所述數據讀取模塊,通過服務器定時每分鐘把內存bitmap保存至redis的鍵為key_n的value下,當服務器重啟時,讀取redis的鍵key為key_n把bitmap數據保存在內存中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于福建天晴數碼有限公司,未經福建天晴數碼有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202211294603.8/1.html,轉載請聲明來源鉆瓜專利網。





