转自:http://bbs.ogdev.net/TopicContent.aspx?BoardID=2&TopicID=1183
.概述
LoginServer <-----> GameServer
服务端主体分为LoginServer和GameServer, LoginServer做帐户认证, GameServer做游戏主逻辑,
中间也可以加一个CharServer啦, 做人物管理, 新建删除人物之类的, 也可以并到GameServer一
起, LoginServer和CharServer都比较简单, 略过.
通过LoginServer的验证后 将分配给Client一个SessionID, 然后与GameServer或CharServer的通信,
都以此SessionID为认证码. Client只有发送正确的SessionID才能与GameServer建立连接.
2.GameServer层次结构
GameServer分为三层, 网络层<--->逻辑处理层<--->数据库层
每层都有一个消息处理队列, 存放待处理的消息. 消息队列可以采用先进先出队列的方式, 也可以
采用堆或者优先队列的方式, 按优先级对待处理消息进行简单的 排序, 嘿嘿, 是不是有点类 似QoS
的思想.
每层采用线程池技术, 预先建立一定数量的空闲线程, 不够时建立新线程, 过多时则销毁线程,
保证线程池中有指定数量的空闲线程(Min/Max), 主线程不断检查处理队列是否有待处理消息, 若
有则从线程池中分配一空闲线程处理之.
偶在Linux下线程池是用pthread_cond_wait和pthread_cond_signal实现的.
