使用 SmartFoxServer 实现 Hazelcast

Posted

技术标签:

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

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

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

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

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

提前致谢,

【问题讨论】:

【参考方案1】:

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

【讨论】:

非常感谢。正如你提到的,我将使用第四个。我的声誉不足以投票给你的答案,很抱歉。

以上是关于使用 SmartFoxServer 实现 Hazelcast的主要内容,如果未能解决你的问题,请参考以下文章

SmartFoxServer 与 Unity 日志记录问题

致命错误:无法在 smartFoxServer 中创建日志文件

如何使用 SmartFoxServer 2X 连接 MySQL 数据库?

我无法更新我的扩展 - SmartFoxServer

使用不同用户 Unity-Smartfoxserver 连接服务器的问题

SmartFoxServer 无法连接到服务器