整个game server的并发模型
一 概述
game server至少要提供如下几类的功能 :
1、响应客户端请求-------WorldRunnable
2、后台命令 -------CliRunnable
3、分布式架构(RMI等) -------MaNGOSsoapRunnable
可以看到针对这几类功能,mangos都给予了支持。
二、WorldRunnable响应客户端请求的并发实现
game server会提供很多服务,如组队、加好友、交易、走路、战斗……,从宏观上讲这些服务是同时对外提供的,另外IO操作是费时的,
必须将IO与逻辑处理分开,这样的话一个基本的实现是这样的:
1、开启IO线程,所有费时的操作交由此处处理 WorldDatabase.ThreadStart();
2、利用协程来实现各个子系统,或者利用心跳来实现各个子系统的调度(不能开很多线程,线程代价太高)
三、Mangos的心跳实现
void World::Update(uint32 diff)
基本上包括几类:
1、检查定时器---------------时间
2、刷任务
3、维护session---------------------人物
4、全局环境更新(map、battleGround)--------地点
5、处理服务器事件------------------事件
6、其他(数据同步、后台调试、IO回调……)
四、game server运行的机制
1、定时器触发
2、事件触发(松耦合)
五、典型的一种service的实现方式
1、IO协程将cammand入队
2、worker协程 依次fetch、execute
核心数据结构是线程安全的队列
分享到:
相关推荐
mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多...
mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多...
芒果服务端的 下载 编译 安装和使用教程
Mangos Version 0.13 * Under discussion. * Upgrade to client version 3.0.8 (build 9506).
Mangos_技术资料2
mangos_0.13_9506_MangOS9506_源码
1. 文件无任何依赖可以编译成linux,window,arm平台都能使用 2. 单文件根据执行参数可以既可以当服务端用也可以当客户端用 3. 支持上传模式和下载...11. 基于websocket协议非常容易用nginx反向代理容易实现7层负载均衡
Linux MaNGOS-0.14.tar.gz MangOS
魔兽世界MANGOS数据库分析
mangos 0.16 魔兽世界 wow c++, The project uses WoW as a reference game。
server, Mangos一个是魔兽世界的服务器 生成状态:Linux Windows Codacy状态 燃烧远征分支是魔兽世界的一个魔兽世界服务器,它拥有燃烧革命它是开源项目,内置于 C ,它是快速运行的,可以在多个平台上存储游戏数
自己分析mangos的几篇日记,与大家交流一下
主数据库:trinitydatabase ============================================= achievement_reward 巫妖王的奖励成就 areatrigger_involvedrelation 传送(区域触发)_包含的任务关系 areatrigger_scripts 区域触发脚本 ...
mangos服务器架构.pdf
mangos-0.9.0.tar.gz............
服务器结构探讨 -- 最简单的结构 本文从最简单的游戏服务器架构开始讲起,结合主流的WOW等大型游戏服务器设计思路和mangos的一些理念,一步一步揭开网络游戏服务器的架构设计方法,对初学者尤其有帮助
开源的魔兽世界参考架构,分析了当下魔兽世界的服务器架构后,利用提供的开源服务器框架mangos来搭建属于自己的魔兽世界服务器!
mangos-0.9.0在vs2010中编译通过,下载后直接编译即可,我还不知道怎么配置这个东西;
开源的魔兽世界服务器代码0.9.1,供学习使用。