Skynet服务端框架搭建1-方案设计

本文介绍了Skynet服务端框架的构建,包括本地服务与全局服务的区分,如gateway、login、agent和agentmgr等。服务间的消息交互主要体现在登录和游戏过程中,其中gateway处理客户端连接,login处理登录验证,agent负责角色逻辑,agentmgr管理代理服务。设计旨在通过网关隔离客户端与服务端,确保协议变更时的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Skynet服务端框架搭建1-方案设计

首先明确需要做的是什么东西,在客户端和服务端之间需要实现什么东西,各个功能如何各司其职

服务端整体结构

服务端结构如下所示,每个节点被划分为两部分,其中虚线部分是本地服务,其他的为全局服务

image-20211029102056177

其中本地服务在单个节点内是唯一的,但是它不具备全局唯一性的服务,比如上图中接地那1和节点2都有gateway,每个节点都能开,且是各自独立的

全局服务则是所有节点都具有唯一性的服务,比如图中的agentmgr,可以部署在节点1也可以部署在节点2,但无论如何所有节点只能开启一个

各服务的功能

gateway

这个名词都很眼熟了,就是用于处理客户端连接的服务。客户端连接某个网关(gateway),如果玩家没登录,网关会把消息转发给节点内的登录服务器用于处理账号校验的操作,如果登录成功,则把消息转发给客户端对应的代理agent,一个节点也可以开启多个网关来分摊性能。

login

就是登录服务了,来处理登录逻辑,比如账号校验,同样可以开启多个登录服务来分摊性能

agent

代理,每个客户端会对应一个代理服务用于处理对应的角色逻辑(跟erlang一个节点对应一个玩家的逻辑基本相似),处于性能考虑agent必须与它对应的客户端连接。

agentmgr

管理代理的服务,记录所有agent节点以及账号对应的关系

nodemgr

节点管理,监控性能

scene

场景服务,处理战斗逻辑,每一局游戏由一个场景服务器负责

消息流程

可以再看看客户端和服务端之间是如何消息交互的

image-20211029103241923

比如我们的登录过程:在①阶段客户端连接到某个gateway然后发送登录协议,gateway转发给login②,校验成功后,agentmgr创建与客户端对应的agent③④完成登录,如果该玩家在其他节点登录则会由agentmgr把另一边踢下线。

游戏过程:登录成功后客户端消息由gateway转发给对应的agent⑤,agent处理玩家逻辑。

设计的初衷

很多服务端都有网关gateway的存在,用于隔离客户端和服务端,如果客户端修改了协议,则只需要更改gateway,服务端内部的逻辑不受影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上上签i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值