【问题标题】:Implement Hazelcast with SmartFoxServer使用 SmartFoxServer 实现 Hazelcast
【发布时间】:2014-09-15 16:38:51
【问题描述】:

我是一名游戏服务器开发人员。我正在为我的游戏服务器(SmartfoxServer 2x)使用 hazelcast 以避免直接请求 db。 但我想知道如何使用 hazelcast 来获得最佳性能:

  1. 访问缓存时始终创建新的 hazelcast 客户端实例,然后将其关闭。或者
  2. 创建一个 hazelcast 客户端实例池,然后重用。在应用程序结束之前永远不要关闭。或者
  3. 只创建一个 hazelcast 客户端实例,直到应用程序结束才关闭。或者
  4. 让我的实时服务器成为 hazelcast 成员。

什么是正确的方法?我的系统为大约 5000 个 CCU 服务。

我的游戏是一种纸牌游戏——回合制。每场比赛大约需要 2 分钟,最多 4 名玩家。当它结束时,我必须记录每笔交易(货币变化),以及用户的新货币价值。对于 5000 ccu,在最坏的情况下,同时必须记录 (5000/4) * (4 + 4) = 10000 个条目。不能直接用 mysql 查询来完成(慢),但是用 hazelcast 是可能的,对吧? 但是我是 Hazelcast 技术的新手,所以我不知道解决我的问题的正确方法是什么。

提前致谢,

【问题讨论】:

    标签: java hazelcast in-memory-database smartfoxserver


    【解决方案1】:

    最佳答案是 3 或 4。当我在游戏行业工作时,我使用 Hazelcast 不是作为缓存,而是用于分发/集群游戏服务器本身。因此,我的游戏服务器本身就是集群的一部分。如果您想拥有一个专用的 db-cache 集群,只需使用一个客户端,将其与游戏服务器一起启动,并在游戏服务器本身处于活动状态时使其保持活动状态。它在内部进行池化,并且客户端足够聪明,可以在几乎所有情况下将请求路由到正确的集群节点。如果你想将它用于缓存之外,我会去让游戏服务器成为集群本身的节点。请记住,每个节点都保存部分数据,这可能不是您希望游戏服务器充当数据库缓存的内容。

    【讨论】:

    • 非常感谢。正如你提到的,我将使用第四个。我的声誉不足以投票给你的答案,很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    相关资源
    最近更新 更多