2014-07-24 30 views
2

我是一名遊戲服務器開發人員。我爲我的遊戲服務器(SmartfoxServer 2x)使用了hazelcast,以避免直接請求數據庫。 但我不知道如何使用hazelcast以獲得最佳性能:使用SmartFoxServer實現Hazelcast

  1. 總是創建新hazelcast客戶實例時訪問緩存,然後關閉它。或者
  2. 創建一個hazelcast客戶端實例池並重用。直到應用程序結束時才關閉或者
  3. 只創建一個hazelcast客戶端實例,從不關閉直到應用程序結束。或者
  4. 使我的實時服務器成爲hazelcast會員。

什麼是正確的方法?我的系統服務約5000 CCU。

我的遊戲是一種紙牌遊戲 - 回合制。每場比賽發生在大約2分鐘內,最多4名球員。當它結束時,我必須記錄每筆交易(金錢變化)和用戶的新金錢價值。 5000 ccu,在最壞的情況下,同時有(5000/4)*(4 + 4)= 10000個條目必須被記錄。它不能直接與mysql查詢(緩慢),但與榛樹,這是可能的,對吧? 但我是Hazelcast技術的新手,所以我不知道什麼是解決我的問題的正確方法。

預先感謝,

回答

5

最好的答案是3或4。當我在遊戲行業我用Hazelcast工作不是作爲一個緩存,但分發/羣集的遊戲服務器本身。因此我的遊戲服務器本身就是集羣的一部分。如果你想擁有一個專用的數據庫緩存集羣,只需使用一個客戶端,就可以將其與遊戲服務器一起啓動,並在遊戲服務器本身處於活動狀態時保持活動狀態。它在內部集中,客戶端足夠聰明,可以在幾乎所有情況下將請求路由到正確的集羣節點。如果你不想僅僅用緩存來使用它,我會去讓遊戲服務器成爲集羣本身的一個節點。請記住,每個節點都擁有一部分數據,這可能不是您希望遊戲服務器充當數據庫緩存的一部分。

+0

非常感謝。正如你所說,我會用第四種。我的名聲還不足以投你的答案,所以很抱歉。 – bachden