游戏服务器框架
来源:互联网 发布:安全套 知乎 编辑:程序博客网 时间:2024/05/17 04:13
平台: linux, windows
语言: c++
协议: tcp
1,网络
支持的网络模式: (windows: select, iocp), (linux: select, epoll)
当前主流的开源网络库:
boost asio
asio without boost
libevent
ace
网络模块设计:
1,connector, acceptor模式,把客户端和服务端对等看待。
2,socket buffer, 读缓冲解决tcp粘包问题,写缓冲保证网络线程不阻塞。
3,io_service, 单个网络线程处理网络收发。
4,多进程单线程的方式来确保无锁。
2, 脚本
lua, 利用lua_tinker来封装。
3,entity/component
4,模式: 收到网络消息后,如何分发----利用观察者模式 来松耦合。
开发一个独立的类来实现观察者模式(一个被观察者队列),被观察者通知消息,观察者注册和处理。观察者和被观察者之间不直接调用。(直接调用了还叫松耦合么。。。)
可以参考cocos2d-x的通知机制。
5,协程,不知道何种情况下会用到。可利用lua来做。自己实现:http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
6,服务器架构:
client---gateway server---scene server
---db server
--world server
6.1, 数据库服务器(storage server):
先用mysql。利用官方提供的c/c++接口来访问。先开发一个稳定的服务端。后期可以利用缓存来提高性能。如memcache+mysql. 或者直接用
持久化key-value数据库redis.
忠告:做任何工具之前,先看看是否已有现成的工具。如我自己要去开发memcache+mysql, 而MySQL5.6.2版本增加了通过Memcached协议直接访问原生Innodb API的功能
,不要做无用功。磨刀不误砍柴工。
程序架构:
逻辑无关的底层库, 静态库方式(也可以用head only lib方式)
预处理宏,只有头文件,没有cpp文件的情况下,在main中#define才有效果。不然要在项目属性的预处理命令中添加宏。-->head only lib
libs---libbase
--------libnet
逻辑相关的框架, 源码方式,在具体的服务器中包含
framework---entity, task, 寻路
具体的服务器,包含框架代码,只处理本服务器相关逻辑。
servers---gateway server
-------------scene server
-------------db server
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架pomelo
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架设计
- 游戏服务器框架 golang
- 游戏服务器框架简述
- 游戏服务器的总体框架
- 卡牌游戏服务器框架
- 游戏服务器的登陆框架
- enginx用于游戏服务器和游戏服务器框架
- 一个简单的游戏服务器框架
- 一个简单的游戏服务器框架
- 一个简单的游戏服务器框架
- 一个简单的游戏服务器框架
- [Android] ImageView.ScaleType设置图解
- Oracle的DECODE()使用
- oracle 游标三种循环
- MyEclipse使用中的问题
- Visual Basic 2008 “ 字符串常量” 的表示方法
- 游戏服务器框架
- VS2010(Asp.net)中空格加点和代码自动换行的两个有用的快捷键!
- 如何提高C语言代码效率
- initWithCapacity
- 共享库注射--injectso实例
- SQLite入门与分析(一)---简介
- Android 4.1 Netd详细分析(六)DnsProxyListener
- 图的邻接矩阵
- UVa 10360 - Rat Attack