请选择 进入手机版 | 继续访问电脑版

NoahFrame

 找回密码
 Register Now
搜索
热搜: redis mysql tutorial
查看: 796|回复: 2

gameserver的疑问

[复制链接]

1

主题

2

帖子

19

积分

Newbie

Rank: 1

积分
19
发表于 2017-11-13 20:44:25 | 显示全部楼层 |阅读模式
你好,我对咱们这个框架的消息流程有点疑惑,我先说下我的理解,你看我理解对不对,首先是client去连接loginserver,在loginserver连接redis验证账号密码,然后返回一个
proxyserver地址和登陆key, client接着去连接指定的proxyserver;client并不用知道他连的是哪个gameserver,client要是发送一个买东西的消息;通过proxyserver连接转发给gameserver
这里我有有些疑问;
1,client连loginserver,他是怎么知道要连的loginserver IP的; 我们现在的服务器通过指定的web接口,然后通过这个接口获得负载或者人数最少的loginserver地址,不知道咱们这个是怎么做的
2,我看loginserver验证账号是通过读取redis验证的,redis里面的玩家账号数据是从哪来的,难道说redis模块已启动的时候就知道从mysql数据里面把玩家的数据都读过来吗;
3,client发送消息给服务器,他发送给proxyserver,他第一次是怎么选择应该发到那个gameserver去,根据gameserver的人数吗;另外他第二次及之后,他怎么知道
应该把消息发送到第一次发消息的那个gameserver去,我想应该有机制存储玩家的数据是在哪个gameserver里的把?
4,咱们的一般开发服务网,不都要分个大厅服务器和游戏服务器,大厅服务器处理所有的任务,商城值之类的业务逻辑,游戏服务器是专门的战斗服务器,
咱们这个是只有一个gameserver服务器来包含所有的功能吗

回复

使用道具 举报

30

主题

112

帖子

668

积分

Administrator

Rank: 9Rank: 9Rank: 9

积分
668
发表于 2017-11-14 10:45:36 | 显示全部楼层
1:client连接loginserver,他肯定知道loginserver的ip,因为这个是你们自己配置的,或者通过你们的dns解析出来的ip;你仍旧可以通过web接口,去获得loginserver的地址,但是在这里,loginserver其实没什么业务压力,平均分配client就好了,不用可以去获得所谓的最少的loginserver

2:redis的账号数据哪来的。。。自然是你们的数据中心了,或者你使用第三方账号系统服务的话,就是在loginserver使用http服务区第三方确认登录的token

3:游戏有完整的登录流程,当client连接到proxy后,会确认key的正确性以保持稳定连接,此后,会有进入游戏世界这么一个操作,在这个操作内,proxy会将此次连接的fd 和 gameserverid建立索引关系,后续的消息,可以稳定的通过这个索引关系经proxy路由到gameserver

4:gameserve可以开很多个,这些业务都可以在gameserver处理,你可以自己根据你的业务,拆分为不通的插件来降低代码耦合;其次,你也可以继续路由消息到上层的worldserver处理这些业务,战斗服务,只是游戏服务器中的一个小部分内容而已。
回复 支持 1 反对 0

使用道具 举报

1

主题

2

帖子

19

积分

Newbie

Rank: 1

积分
19
 楼主| 发表于 2017-11-14 20:27:09 | 显示全部楼层
哈,谢谢ketoo解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | Register Now

本版积分规则

 

GMT+8, 2018-12-15 09:59 , Processed in 0.126819 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表