Juya Cai

分布式挤号问题

需求 在分布式环境下,多台服务器后端处理用户连接,对于用户连接可能会打到不同的服务器上。在这样的条件下,如何实现用户异地登录挤号的需求呢。用户异地登录,登录请求可能会打到另外一台服务器上,分布式系统如何将旧的在另一台服务器的用户连接给断开,接受新的登录连接呢? 实现方案 redis+消息队列实现 首先我们来分析需求制定方案。不允许用户同时登录在多台服务器上,也就是登录具有唯一性。自然而然...

分布式服务器房间匹配问题

之前接触的业务的玩家加入房间都是自带房间id,不走匹配这个逻辑。但是最近遇到没有房间id,需要在一段匹配时间内的匹配房间,需要实现分布式的匹配房间逻辑,故写此文章记录开发历程。 全局匹配节点 客户端加入房间请求需要携带roomid,但是没有roomid需要前往匹配节点进行匹配获取roomid。匹配节点通常与我们熟知的大厅服务器放在一起。服务端单独开个匹配房间的接口,客户端检测到玩家点击开始...

游戏后端内存和持久化的一致性问题

引发这个问题的思考是来自开发中的一个问题。场景是这样的,中台向游戏服务端发放用户的道具,服务端收到发放用户道具请求时,需要解决下面几个问题: 用户在线和不在线的处理区别 用户在线时收到道具的客户端通知和状态同步 用户在线和不在线的处理区别 用户的状态数据在内存中有一份、在硬盘中有一份。客户端的状态通常依赖于内存中的用户信息,也就是内存数据和硬盘数据的更新存在延迟性。为了提高...

Actor分布式游戏服务引擎设计(六)--游戏逻辑节点设计

游戏逻辑设计节点是开放给用户自己实现游戏的逻辑,而不用考虑上层房间操作以及通用的游戏逻辑操作。框架不希望限制游戏逻辑的实现思路,希望给予用户以最大的自由度。所以,游戏逻辑只会接受到来自房间的消息,怎么处理消息进行由用户自己实现,同时房间主动通知的消息都是必要消息。同时房间开发接口供游戏逻辑节点调用获取房间内信息以及用户信息。 房间会通知一下消息: 房间创建 房间销毁 用户加...