经典百万级网游服务器架构.docVIP

  • 2
  • 0
  • 约1.13千字
  • 约 3页
  • 2018-11-23 发布于河南
  • 举报
经典百万级网游服务器架构

系统架构系统架构:nginx + PHP(fastcgi模式) + MYSQL1、 负载均衡:用软件作负载均衡,前端用nginx作为反向代理,分发php处理请求。技术难点会话同步,可以用memcached解决。2、 web服务器:可以用nginx+php-cgi,apache+php-cli,apache+php-cgi这样的配合。本系统无静态页面,而且对并发的要求高,所以选用轻量级的nginx服务器,让php以fastCGI模式在单独进程中处理业务请求。3、 数据库:数据库采用MYSQL,在设计数据表结构的时候,放弃了大部分表的关联操作,尽可能缓存最多的数据。采用分库分表的设计方案,对不需要支持事务等高级操作的数据,数据表采用执行速度高效的MyISAM引擎,其其它表采用InnoDB引擎。4、 缓存:运用分布式的内存缓存memcached,将用户的session会话以及经常访问的数据缓存起来,而不要反复的去查询数据库或者文件系统。具体架构:服务器搭配方面,分为web服务器和db服务器,db服务器和web服务器之间通过memcache服务器进行缓冲,在游戏运营时,数量上按照1:1的比例配置。在分布式算法上设计上应该能满足动态增删的需求,管理员可以在任何时候为系统增加或减少服务器的部署,而不需要重启启动服务器。通常玩家一天只登录少数几次,但是会在游戏中玩很长时间,所以系统登录安排单独的服务器,具体策略是将服务器分成N组,为每组服务器单独配备一台登录服务器。前端用nginx作反向代理,nginx服务器不处理任何逻辑,它的作用只有两点:1.承载用户;2.中转数据。玩家具体操作流程为,玩家发出登录请求,nginx将请求分发给登录服务器,登录服务器开始帐号验证过程,验证成功则为用户指定相应的游戏服务器。游戏服务器组的分配策略是根据当前负载进行分配。系统运行过程中,登录服务器及游戏服务器都会需要连接数据库。从数据库服务器的部署上来说,可以将帐号和角色数据分为两个不同的库分别来处理,基本做到从物理上部署到两台不同的服务器上。在游戏里数据交互最频繁的还是玩家的数据,他的访问量是一台服务器所不能解决的,因此我们考虑将这部分数据分担到多台服务器里。对于游戏数据的具体存储,可以分为和用户相关的动态数据以及游戏全局的数据(即不为某个用户单独拥有的设计,如商店、任务、系统公告等),可以将这两种数据分配到不同的DB服务器上。任何为用户提供服务的地方都会有日志记录。从记录玩家登录的时间,地址,机器信息到游戏过程中的每一项操作都可以作为日志记录下来,以备查错及数据安全用。日志记录存储在单独的DB服务器上。客户端与服务器通讯基于Web Service。

文档评论(0)

1亿VIP精品文档

相关文档