2

我是一名游戏服务器开发人员。我正在为我的游戏服务器(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 技术的新手,所以我不知道解决我的问题的正确方法是什么。

预先感谢,

4

1 回答 1

5

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

于 2014-07-24T08:32:27.680 回答