MMO 游戏服务器引擎设计 - Go语言中文社区

MMO 游戏服务器引擎设计


原文地址:http://blog.csdn.net/itcombox/article/details/51445319

摘要:

MMO游戏服务器引擎设计工程总纲(一)

MMO游戏服务器引擎网络通信(二)

MMO游戏服务器引擎数据层集群(三)


MMO游戏服务器引擎设计工程总纲(一)

一、 网络游戏开发的基本流程

◆ 项目文档

◆ 开发的进行和文档准备流程

◆ 技术人员文档

二、 MMO游戏架构

 MMO游戏特点

 MMO架构的特有内容

三、 策划文档

◆ 考虑示例游戏的题材

◆ 详细设计文档

 MMO庞大的游戏设定

 5种设计文档

系统的基本结构图

进程关系图

资源评估文档

协议定义文档

数据库设计图

◆ 设计上的重要判断

四、 系统基本结构图

◆ 系统基本结构图的基础

◆ 服务器必须具有可扩展性 ---- 商业模式的确认

◆ 各瓶颈 ---- 扩展方式的选择

 MMO客户端特有的渲染性能瓶颈

◆ 解决服务器/数据库的瓶颈

空间分割法

实例法

平行世界方式

◆ 一台服务器负责整个游戏世界(什么都不做)

 

◆ 服务器的空间分割法 ---- 解决服务器的瓶颈

 

◆ 实例法 ---- 解决服务器的瓶颈

◆ 平行世界方式 ---- 解决数据库瓶颈

1、 同时采用平行世界和空间分割法

 

2、 同时采用空间分割、平行世界、实例法

◆ 同时采用多种方法 ---- 大量玩家在线时的数据

◆ 各种方式的引入难度

◆ 各个世界中数据库服务器的绝对性能提高

 K-Online的设计估算---- 首先从同时在线开始

◆ 据游戏逻辑的处理成本估算

◆ 据游戏数据库的处理负荷估算 ---- 角色数据的保存频率和数据库负荷的关系

◆ 可扩展性的最低讨论结果及进一步的用户体验追求

◆ 服务器的基本结构

五、 进程关系图

◆ 服务器连接的结构 ---- 只用空间分割法/使用平行世界方式和空间分割法

proxygmsv的关系是据gmsv处理逻辑的性能瓶颈和proxy连接数量瓶颈决定的m:n关系

(1) 只是用空间分割法;

蓝色是使用现有的服务器、黑色需要独立制作、准备
 

(2)同时使用平行世界和空间分割法



 5-1-2-1 同时使用平行世界和空间分割法

使用平行世界方式进行扩展的关键是将dbsv分为dbsv1dbsv2dbsv3这样的多个数据库服务器,从而线性的提高存储游戏数据时的写入性能。

 authsv是共通的

● 分为5个平行世界,1个平行世界允许同时连接6000名玩家,总共允许3W玩家同时访问游戏

 1个平行世界分为8个区(8核,8个进程)

 1个平行世界准备360个实例(16, 16个进程)

● 玩家继续增加的情况下,追加平行世界

 5-1-2-1中,各个服务器的分布情况:

① 尽量使得authsv进程并行化

② 各个世界中,worldsv1个进程,gmsv中地区用到8个进程, 实例用到16个进程,不能动态增减。
 proxygmsv的个数相同

 dbsvMySQL、备份用的MySql每个世界1

 msgsv是所有世界共用的,尽量并行化,实际的进程数据要根据之后的基准测试来决定

 logsv是所有世界共用的,只要1个进程,生成多少日志要在开发中决定

进程所需的服务器资源

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/itcombox/article/details/51445319
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 19:31:03
  • 阅读 ( 1511 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢

进程

CPU(内核)

备注

RAM

存储器

TCP会话数

Gmsv

W * (8 + 16)

K-Online中的世界数据都是二维的,故数据量没那么大,内存每个内核1G就够,CPU成为性能瓶颈可能性高

上述 * 1G

不需要

3+

Loginsv

W * 1

通信缓存部分的内存,实际上loginsv很少成为瓶颈

上述 * 500M

不需要

2+

Dbsv

W * 1

通信缓存部分的内存,dbsv中的Mysql大多会成为瓶颈

上述 * 500M