论百万人同时在线棋牌类网络游戏服务器设计

本文主要探讨如何设计一款百万人同时在线的棋牌类网络游戏服务器系统,如果您发现本文的设计上存在漏洞或不对的地方欢迎提出共同探讨。

1.总体架构图


 

: CMS(control and manage server) : 控制管理服务器. GateServer : 门服务器

2.相关服务器介绍

注:除CMS外每台服务器都由两个程序实例构成,服务器管理客户端和服务器程序。

2.1 控制管理服务器(CMS

CMS的作用是管理和配置所有的服务器。主备账号服务器、主备GATE服务器的切换也是由CMS决定的,服务器管理员通过CMS来管理所有的服务器。

2.2 账号服务器

账号服务器的主要用于处理用户注册和登录游戏系统。用户是否重复登录游戏也将在账号服务器上处理。账号服务器由主备构成,任何时候只有主账号服务器负责和客户端及GATE服务器交互;备用账号服务器主要处理CMS发来的控制消息及主账号服务器发来的实时数据备份消息,及其他服务器发来的心跳消息。

2.3 门服务器(GateServer

门服务器的作用是负责各服务器之间的消息转发,确定用户的资料在哪台数据库服务器上。门服务器也分为主用和备用两台,除CMS外的其他服务器只和主用的门服务器交互。当CMS发现主用门服务器故障时将通知其他服务器进行主备切换。

2.4 大厅服务器

当用户登录成功后将和大厅服务器保持长连接以实时获取游戏系统的信息。

2.5 游戏服务器

当用户在大厅中点击进入某个游戏时,用户将登录相应的游戏服务器进行游戏。

2.6 数据库服务器

数据库服务器主要保存用户的资料和用户的游戏数据。

2.7 消息服务器

主要负责用户聊天消息的处理。

3.流程介绍

3.1 系统启动流程


如图所示,系统最先启动的是CMS,当CMS启动之后将从本地数据库读取相关服务器配置信息,只有本地配置中存在的服务器才可以连接本系统正常工作;这样就可以保证只有合法的服务器才能连接到本系统以防止非法服务器的接入。当门服务器启动并连接CMSCMS将选择其中一个作为主用门服务器。接下来依次启动的是数据库服务器,大厅服务器,游戏服务器,消息服务器。最后启动的是账号服务器。

3.2 添加一台新服务器流程



3.3 用户登录流程




posted on 2008-09-11 17:15 司强 阅读(5839) 评论(12)  编辑 收藏 引用

评论

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-11 18:14

帐号服务器的用户数据如何与数据库服务器同步?定期吗?当用户登录游戏服务器后,应该同大厅服务器断开连接吧?所有用户均向一台帐号服务器登录吗?  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-11 18:28 Hideto

用户流程简化来看:
前端LoadBalance -> 用户认证服务器组 -> LoadBalance -> 大厅服务器组 -> LoadBalance -> 游戏服务器组

1,访问前端LoadBalance,负载均衡,建立到一个用户认证服务器的新连接
2,访问用户认证服务器,用户输入登录id和密码进行认证,通过后断开连接,负载均衡,建立到一个大厅服务器的新连接
3,访问大厅服务器,用户选择一款游戏,断开连接,LoadBalance,建立到一个游戏服务器的新连接
4,开始游戏  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-11 19:10 laughly

绿色的线 构成的是备用网络吗?平时用否?  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-11 19:19 ball_cao

所有客户端都是keepconnection太耗费资源了  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-12 10:03 zuhd

这个和QQ框架的设计差别在什么地方?DB没有分级,感觉这样的设计没法满足100w的需求,业内的框架好像都是这样的  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-15 13:28 司强

账号服务器只保存给用户是否登录到游戏,用户所在的大厅服务器信息.因此没有什么数据可以同步.登录到游戏后将和大厅服务器保持长连接.所有的用户均和登录同一台账号服务器.用户登录时和账号服务器采用短连接或者UDP方式登录@水
  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-15 13:30 司强

你这样做如何处理用户重复登录的问题? @Hideto
  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-15 13:31 司强

绿色的线不是备用网络, 是用来进行不同服务器之间消息转发. @laughly
  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-15 13:32 司强

keepconnection 是什么意思,能否说清楚一些 .@ball_cao
  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2008-09-15 13:36 司强

DB 是一个群, 一台DBService 可以同同时连接多个数据库. 而且数据库的存储是有规律以提高数据查询速度@zuhd
  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计 2009-08-31 11:34 Server

行不通,常连接你服务器太耗费资源了,绝对爆  回复  更多评论   

# re: 论百万人同时在线棋牌类网络游戏服务器设计[未登录] 2010-08-10 09:23

3.3用户登陆流程,太垃圾了  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(6)

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜